S10: S10 abgeschlossen. Aufgabe 1 (DOCX-Heading-Farbe und H1+H2-Bold) komplett geloest: Farb-Audit 0B5394 zu 3C68AE in vier Dateien, Linked-Char-Style-Diagnose und Fix in build-reference-docx.py (HEADING_COLOR_STYLES um Heading1Char/2Char/3Char erweitert, neue set_heading_bold-Funktion). Aufgabe 2 (cv.md Sinn-Korrekturen) komplett geloest: 18 Sprach- und Stilkorrekturen plus Methodik-Umsortierung nach Projekt-Lifecycle, atomar via Python-aus-Disk umgesetzt. Aufgabe 3 (Buzzword-Erweiterung KI-Block) komplett geloest: KI-Sektion umstrukturiert nach Thomas-Layout mit Edge-AI-Stack-Buendel-Sektion am Ende inklusive Quantisierung, Modell-Formaten und Software-Stack. Aufgabe 4 (PDF-Layout) teilweise geloest mit Trade-off: H1 ohne Trennlinie, H2 schwarze 8.6 cm 1.25 pt Trennlinie analog DOCX, H3 in DesTEngS-Blau und nicht fett, erste Seite ohne graue Header-Trennlinie und Foto plus H1 nahe Top-Margin via vspace-1.16cm. Body-Spacings bleiben etwas groesser als Header (parskip-Glue-Eliminierung kostet 2-3 zusaetzliche Seiten, deshalb ruecknahme). Pagebreaks bei Trainings/Kenntnisse/Berufliche-Stationen koennen unschoen sein. Sandbox-Build-Setup mit pdflatex und lmodern in /tmp/sbxbuild eingerichtet, Page-Layout-Tendenzen 1zu1 vergleichbar zu Thomas Setup. Lessons-learned Block in agent-prompt.md und teilgebiete/01-lebenslauf.md festgehalten: Sandbox-Build vor Iterationen, Layout-Eingriffe einzeln testen, parskip-Glue ist essentiell, Pandoc 3.x emittiert minipage[t] mit parboxrestore in Tabellen-Cells, titlesec vertraegt kein par im after-code, nopagebreak in longtable ist als noalign ueberschrieben. Strategische Entscheidung mit Thomas: PDF-Pipeline wird in S12 mit professioneller CV-LaTeX-Klasse moderncv oder awesome-cv oder typst neu aufgesetzt. cv.md bleibt single source of truth, Daten-Extraktion via Custom-Pandoc-Filter oder Build-Skript-Erweiterung. S11 davor nur fuer Lebenslauf-Inhalt: Methodik-Sektion ergaenzen und inhaltliche Kleinigkeiten. DOCX-Stand ist gut und einsatzbereit. agent-prompt.md und teilgebiete/01-lebenslauf.md mit S10-Doku und S11-S12-Plan fortgeschrieben.
This commit is contained in:
@@ -287,14 +287,89 @@ Die in S04 mit docx-js erstellte Version hatte strukturelle typographische Mäng
|
||||
|
||||
**Build und visuelle Bestätigung durch Thomas (S09):** DOCX und PDF zeigen Foto rechts oben, korrekt ausgerichtet, korrekt bemessen. Layout aus Thomas' Sicht akzeptiert.
|
||||
|
||||
## S10 — Heading-Farbe-Fix, Sinn-Korrekturen, Buzzword-Erweiterung, PDF-Layout (teilweise)
|
||||
|
||||
**S10-A — DOCX-Heading-Farbe und H1+H2-Bold:**
|
||||
|
||||
- Farb-Audit: DesTEngS-Primärfarbe ist `#3C68AE`, nicht `#0B5394`. In `agent-prompt.md`, `teilgebiete/01-lebenslauf.md`, `build/build-reference-docx.py` (Konstante `HEADING_COLOR` und Doc-Kommentar) und `templates/template.tex` (`destengsblue`-Definition) korrigiert.
|
||||
- Diagnose der nicht-greifenden Heading-Farbe im DOCX: Pandoc-3.x-Default-Reference enthält Linked Character Styles `Heading1Char`/`2Char`/`3Char` mit eigener `<w:color val="0F4761" themeColor="accent1" themeShade="BF"/>` (Aptos-Petrol). Char-Styles haben in Word Vorrang vor Para-Styles bei Run-Eigenschaften (Schrift, Farbe). Pandoc 2.9 (Sandbox) hat diese Char-Styles nicht — daher war das Problem in der Sandbox nicht reproduzierbar.
|
||||
- Fix: `HEADING_COLOR_STYLES` in `build-reference-docx.py` um `Heading1Char`/`2Char`/`3Char` erweitert.
|
||||
- Zusatzanforderung Thomas: H1+H2 fett. Neue Funktion `set_heading_bold` mit Konstante `HEADING_BOLD_STYLES` (Heading1+2 Para- und Char-Stil). H3 bleibt unverändert.
|
||||
- Visuell verifiziert: alle Headings im DOCX in `#3C68AE`, H1+H2 fett, H3 normal.
|
||||
|
||||
**S10-B — cv.md Sinn-Korrekturen (Aufgabe 2):**
|
||||
|
||||
- Diff-Vorbereitung: `output/cv-old-plain.txt` (alte DOCX 2025-03-21 normalisiert), `output/cv-new-plain.txt` (cv.md normalisiert), `output/cv-diff-unified.txt` (kompletter Unified-Diff), `output/cv-diff-report.md` (sektionsweise mit Mapping „Berufstätigkeit" ≡ „Projekte als freiberuflicher Consultant").
|
||||
- 18 Korrekturen umgesetzt (atomar via Python-aus-Disk-Pattern):
|
||||
- Thomas: „Digitales"→„digitales Dämpfungsglied"; „Leiterplattenherstellern"→„Leiterplattenhersteller"; Toshiba-Spezifikation Komma; „Detaillierte Analysen elektrischer IC-Gehäuse"→„Detaillierte elektrische Analysen von IC-Gehäusen"; „Dotierungsprofile und dessen Implementierung"→„… und Implementierung".
|
||||
- Agent: „inclusive"→„inklusive"; „Faseroptische"→„faseroptische"; „10 KHz"→„10 kHz"; PyAutoGui→PyAutoGUI; Halbgeviertstrich + Komposita-Fix Transimpedanzverstärker-GaAs-MMICs; „2.5 GHz"→„2,5 GHz"; „Evaluierungsboard Redesigns"→„-Redesigns"; Komma vor „abgeschlossen 2001"; Mixed-Mode-S-Parameter Bindestrich; Realtime-Oszilloskopen; Objektorientierte/ereignisorientierte ohne Bindestrich.
|
||||
- Methodik-Liste umsortiert nach Projekt-Lifecycle: Konzepterstellung → Machbarkeitsstudien → Technologie-Evaluierung und -Auswahl → Spezifikationserstellung → Technische Dokumentation → Systematische Fehleranalyse → Projektmanagement.
|
||||
|
||||
**S10-C — Buzzword-Erweiterung KI-Block (Aufgabe 3):**
|
||||
|
||||
- KI-Sektion in `cv.md` umstrukturiert nach Thomas-Layout:
|
||||
- Service-Begriffe (Potenzialanalyse, Schulung, Implementierung, Prompt Engineering, Multimodale KI, DSGVO).
|
||||
- „KI Software" als kompakte Office/Marketing-Tool-Liste (Miro, Notion, Fireflies.ai, Gamma, Canva).
|
||||
- „GenAI / LLMs" mit neuem Sub-Bullet „Mixture of Experts (MoE), Reasoning Models, Function Calling / Tool Use".
|
||||
- „Agentic AI" mit neuem Sub-Bullet „Model Context Protocol (MCP)".
|
||||
- NLP als eigener Top-Level-Punkt.
|
||||
- „RAG" mit neuem Sub-Bullet „Chunk-Strategien".
|
||||
- „Edge AI / On-Premise KI-Infrastruktur" am Ende als gebündeltes Stack-Kapitel: Hardware (Consumer-GPU NVIDIA Blackwell + RTX 50-Serie + CUDA Toolkit) → Quantisierung (8-bit Inference FP8, MXFP4) → Modell-Formate (GGUF, Safetensors) → Software-Stack (Ollama, Hugging Face Transformers, PyTorch, llama.cpp, Open WebUI).
|
||||
- Modellname „Qwen3.5-9B" (S5-Vorschlag des Agents zur Korrektur) wurde von Thomas als korrekt bestätigt — bleibt unverändert.
|
||||
|
||||
**S10-D — PDF-Layout (Aufgabe 4) — TEILWEISE GELÖST mit Trade-off:**
|
||||
|
||||
- H1: keine Trennlinie mehr (analog DOCX, wo nur H2 Trennlinien hat).
|
||||
- H2: schwarze Trennlinie 8,6 cm × 1,25 pt (1:1 wie DOCX-H2-Trennlinie aus B4.4 in S08). `\nobreak` vor der Linie hält Heading + Linie auf gleicher Seite.
|
||||
- H3: in DesTEngS-Blau, nicht fett (analog DOCX).
|
||||
- Erste Seite: graue Header-Trennlinie weg (`\renewcommand{\headrule}{}` in `firstpage`-Stil); `\vspace*{-1.16cm}` direkt nach `\thispagestyle{firstpage}` rückt H1+Foto an die Top-Margin.
|
||||
- **Body-Spacings (H2↔Linie und Linie↔Bullets) bleiben etwas größer als im Header.** Versuch der Angleichung an Header-Spacings via parskip-Glue-Eliminierung + parskip-Kompensation im H2-after-code wurde nach Sandbox-Diagnose **rückgebaut**, weil das 2–3 zusätzliche PDF-Seiten produzierte. Der parskip-Glue ist essentiell für LaTeX-Pagebreak-Flexibilität. Final-Lösung der Body-Header-Konsistenz kommt mit S12 (CV-LaTeX-Klasse).
|
||||
- **Pagebreaks bei Trainings/Kenntnisse/„Berufliche Stationen vor der Selbständigkeit"**: longtable-Pagebreak-Logik macht im aktuellen Setup gelegentlich unschöne Trennungen. Wird mit der CV-LaTeX-Klasse in S12 strukturell gelöst.
|
||||
|
||||
**Lessons-learned aus S10:**
|
||||
|
||||
- **Sandbox-Build als Pflicht für Layout-Iterationen.** Setup mit `pdflatex` + `lmodern` (statt `lualatex` + IBM Plex Sans) etabliert. Page-Counts und Pagebreak-Verhalten lassen sich dort gut beurteilen, exakte Schriftbild-Abweichungen zu IBM Plex bleiben aber. Iterations-Loop über Thomas ist nur sinnvoll, wenn jede Variante vorher selbst getestet wurde.
|
||||
- **Layout-Eingriffe einzeln testen.** Mehrere Mechanismen gleichzeitig (parskip-Manipulation + needspace + penalty + bodyonlyvspace) haben Diagnose blockiert. Saubere Sandbox-Isolierung jedes Mechanismus hat den Schuldigen schnell gefunden (parskip-Glue-Eliminierung).
|
||||
- **parskip-Glue ist essentiell.** `\setlength{\parskip}{0.5em plus 0.2em minus 0.1em}` (Glue) gibt LaTeX Layout-Flexibilität für Pagebreaks. Eliminierung des Glues kostet 2+ Seiten.
|
||||
- **Pandoc 3.x emittiert `minipage[t]` für Tabellen-Cells**, in denen `\@parboxrestore` `parskip` auf 0pt setzt. Das erklärt unterschiedliche Spacings Body vs. Header.
|
||||
- **`titlesec` verträgt kein `\par` im after-code** (`! Paragraph ended before \ttl@format@iii was complete.`). Direktes `\penalty` ist sicherer.
|
||||
- **`\nopagebreak` in longtable-Kontext** ist auf `\noalign{...}`-Form überschrieben — bricht im after-code mit `! Misplaced \noalign.`. `\penalty 7500` ist longtable-sicher.
|
||||
|
||||
**Strategische Entscheidung am Ende von S10 (mit Thomas):** PDF-Pipeline wird in S12 mit professioneller CV-LaTeX-Klasse neu aufgesetzt (`moderncv` / `awesome-cv` / typst — Tool-Recherche dort). `cv.md` bleibt single source of truth; Daten-Extraktion via Custom-Pandoc-Filter oder Build-Skript-Erweiterung.
|
||||
|
||||
## Nächste Schritte
|
||||
|
||||
1. **DOCX-Mängel beheben:** Blau-Ton der Headings ist nicht DesTEngS-Blau (Soll-Wert `#3C68AE`). Heading-Stile in `build/build-reference-docx.py` prüfen, ob die `set_heading_colors`-Funktion auf dem Stil greift oder ob Word den Theme-Color trotzdem als Aptos-Default rendert.
|
||||
2. **Doublecheck der neu generierten Texte:** Mindestens „elektrischer Gehäuse" ist sinnverkehrt (vermutlich aus den V9/V10-Iterationen entstanden). cv.md komplett auf Sinn- und Sprachfehler durchgehen.
|
||||
3. **Buzzword-Kompetenzen-Brainstorm:** Kenntnisse-Abschnitt erweitern. Mindestens „Umgang mit quantisierten LLMs" fehlt noch. Weitere KI-relevante Begriffe für das Agentur-Keyword-Matching identifizieren.
|
||||
4. **PDF-Mängel beheben:** Abstände zwischen H1, H2 „Kontaktdaten" und der Kontaktdaten-Bullet-Liste stimmen nicht (Folge der `\titlespacing*{\section}{0pt}{0pt}{0.5em}`-Änderung). Hellgraue Trennlinien (rulegray, `#BFBFBF`) sind inakzeptabel — Farbe oder Linienführung überdenken.
|
||||
5. **Iteration D — Hyphenation-Feintuning für PDF:** Kurze Wortteile am Zeilenanfang mit höherer Penalty oder gezielten `\hyphenation`-Ausnahmen reduzieren. Iterativ.
|
||||
6. Teilgebiet nach erfolgreichem Output und Freigabe durch Thomas abschließen (R2-OK von Thomas: Status auf „abgeschlossen" im zentral-index.md).
|
||||
**S11 — nur Lebenslauf-Inhalt:**
|
||||
|
||||
1. **Methodik-Sektion ergänzen.** Aktuelle 7 Einträge auf weitere relevante Methodik-Begriffe ausbauen.
|
||||
2. **Inhaltliche Kleinigkeiten verbessern.** Thomas hat konkrete Detail-Verbesserungen in `cv.md` im Sinn.
|
||||
|
||||
**S12 — PDF-Pipeline-Refactoring mit professioneller CV-LaTeX-Klasse:**
|
||||
|
||||
1. Tool-Recherche: `moderncv` vs. `awesome-cv` vs. typst (oder andere). Vergleich nach Optik, Aufwand, MikTeX-Integration, DesTEngS-CI-Anpassbarkeit (`#3C68AE`, IBM Plex Sans).
|
||||
2. `cv.md` bleibt single source of truth.
|
||||
3. Daten-Extraktion aus `cv.md` für CV-Klasse-Features (`\cventry` / `\cvevent` etc.):
|
||||
- Custom Pandoc-Filter (Lua oder Python) ODER
|
||||
- Erweiterung von `build.ps1` mit Python-Pre-Processor, der `cv.md` → `cv.tex` transformiert.
|
||||
4. Implementierung, Sandbox-Test, visuelle Verifikation durch Thomas.
|
||||
5. Teilgebiet nach erfolgreichem Output und Freigabe durch Thomas abschließen (R2-OK von Thomas: Status auf „abgeschlossen" im `zentral-index.md`).
|
||||
|
||||
## Nächste Schritte
|
||||
|
||||
**S11 — nur Lebenslauf-Inhalt:**
|
||||
|
||||
1. **Methodik-Sektion ergänzen.** Aktuelle 7 Einträge auf weitere relevante Methodik-Begriffe ausbauen.
|
||||
2. **Inhaltliche Kleinigkeiten verbessern.** Thomas hat konkrete Detail-Verbesserungen in `cv.md` im Sinn.
|
||||
|
||||
**S12 — PDF-Pipeline-Refactoring mit professioneller CV-LaTeX-Klasse:**
|
||||
|
||||
1. Tool-Recherche: `moderncv` vs. `awesome-cv` vs. typst (oder andere). Vergleich nach Optik, Aufwand, MikTeX-Integration, DesTEngS-CI-Anpassbarkeit (`#3C68AE`, IBM Plex Sans).
|
||||
2. `cv.md` bleibt single source of truth.
|
||||
3. Daten-Extraktion aus `cv.md` für CV-Klasse-Features (`\cventry` / `\cvevent` etc.):
|
||||
- Custom Pandoc-Filter (Lua oder Python) ODER
|
||||
- Erweiterung von `build.ps1` mit Python-Pre-Processor, der `cv.md` → `cv.tex` transformiert.
|
||||
4. Implementierung, Sandbox-Test, visuelle Verifikation durch Thomas.
|
||||
5. Teilgebiet nach erfolgreichem Output und Freigabe durch Thomas abschließen (R2-OK von Thomas: Status auf „abgeschlossen" im `zentral-index.md`).
|
||||
|
||||
## Artefakte
|
||||
|
||||
|
||||
Reference in New Issue
Block a user