CV-Import: Bewerbungsfoto uebernehmen
This commit is contained in:
@@ -81,6 +81,41 @@ Kontakt (`icon_contacts.cv_file`) und lässt sich aus dessen Karte herunterladen
|
|||||||
der Download läuft über `fetch` mit Bearer-Kopf, ein normaler Link schickt ihn
|
der Download läuft über `fetch` mit Bearer-Kopf, ein normaler Link schickt ihn
|
||||||
nicht mit.
|
nicht mit.
|
||||||
|
|
||||||
|
### Das Bewerbungsfoto
|
||||||
|
|
||||||
|
Trägt der Lebenslauf ein Portrait, wird es beim Auslesen mit herausgeholt und im
|
||||||
|
Screening-Formular oben angezeigt – mit Haken, standardmäßig gesetzt. Beim
|
||||||
|
Übernehmen landet es als Foto am Kontakt.
|
||||||
|
|
||||||
|
Gefunden wird es **ohne zusätzliches Paket** (`server/src/cvPhoto.js`):
|
||||||
|
|
||||||
|
| Format | Weg |
|
||||||
|
| --- | --- |
|
||||||
|
| DOCX | ist ein ZIP – die Dateien unter `word/media/` werden mit dem eingebauten `zlib` herausgelöst |
|
||||||
|
| PDF | mit `/DCTDecode` abgelegte JPEGs stehen unverändert in der Datei und lassen sich an ihren eigenen Markierungen (FFD8 … FFD9) ausschneiden |
|
||||||
|
|
||||||
|
Bilder in anderen PDF-Kodierungen (FlateDecode, also rohe Bitmaps) bleiben außen
|
||||||
|
vor: sie müssten neu kodiert werden, und dafür bräuchte es eine Bildbibliothek
|
||||||
|
auf dem Server.
|
||||||
|
|
||||||
|
**Welches Bild das Portrait ist**, entscheidet die Form – die Reihenfolge in der
|
||||||
|
Datei hilft nicht, in DOCX steht das Firmenlogo oft vor dem Foto:
|
||||||
|
|
||||||
|
* kleiner als 100 × 100 px → Symbol, Trennlinie, Aufzählungszeichen
|
||||||
|
* Seitenverhältnis außerhalb 0,4–1,6 → Kopfzeile, Banner, Diagramm
|
||||||
|
* vom Rest gewinnt **Hochformat** vor Querformat, dann das größere
|
||||||
|
|
||||||
|
Verkleinert wird im Browser, über denselben Weg wie jedes andere Foto
|
||||||
|
(`src/lib/imageCompress.ts`): mittiger Ausschnitt, 400 px im Quadrat, WebP – und
|
||||||
|
eine harte Obergrenze von **512 kB**, unter die notfalls die Kantenlänge
|
||||||
|
schrittweise fällt. In der Praxis liegt ein Ergebnis bei 20–60 kB; die Grenze
|
||||||
|
ist die Zusicherung, nicht die Regel.
|
||||||
|
|
||||||
|
Das gefundene Bild liegt bis zur Übernahme in `icon_cv_imports.photo` und wird
|
||||||
|
danach dort geleert – sonst stünde dasselbe Foto zweimal in der Datenbank. In
|
||||||
|
der Liste der Importe steht es **nicht**: sie trägt nur `has_photo`, das Bild
|
||||||
|
holt das Formular einzeln (`GET /api/cvs/:id/photo`).
|
||||||
|
|
||||||
## Schreibhilfe für Ausschreibungen
|
## Schreibhilfe für Ausschreibungen
|
||||||
|
|
||||||
Das Feld *Ausschreibungstext* (`icon_tenders.notes`) ist ein WYSIWYG-Editor mit
|
Das Feld *Ausschreibungstext* (`icon_tenders.notes`) ist ein WYSIWYG-Editor mit
|
||||||
|
|||||||
Reference in New Issue
Block a user