48 lines
2.8 KiB
Markdown
48 lines
2.8 KiB
Markdown
# Aufgaben: Tätigkeitsnachweis-Generator (Streamlit App) – PDF-Migration
|
||
|
||
> **Migration**: Das XLSX-Template war schreibgeschützt und wurde durch ein PDF-Template ersetzt.
|
||
> Alle `_Field`-Platzhalter im PDF werden durch echte Daten ersetzt.
|
||
|
||
## 🔄 Migration: XLSX → PDF Template ✅
|
||
|
||
- [x] **M1**: `requirements.txt` → `PyMuPDF` hinzufügen
|
||
- [x] **M2**: `config/settings.ini` → `filename_pattern` auf `.pdf`-Endung ändern
|
||
- [x] **M3**: `config/output-fields.json` → `target_cell` entfernen, `pdf_field` hinzufügen (Mapping source_field → PDF-Platzhalter-Name)
|
||
- [x] **M4**: `src/config.py` → `get_available_templates()` auf `.pdf`-Dateien umstellen
|
||
- [x] **M5**: `src/validator.py` → `validate_template()` für PDF angepasst (prüft `_Field`-Platzhalter via PyMuPDF)
|
||
- [x] **M6**: `src/writer.py` → Komplett neu: PDF-basierte Generierung mit PyMuPDF
|
||
- Pre-Scan: Alle `_Field`-Platzhalter im Template-PDF finden (Position, Schriftgröße)
|
||
- Für jeden Mitarbeiter: neues PDF, pro Monat eine Seite (Template-Kopie), `_Field`-Texte redacten + ersetzen
|
||
- Dateiname: `{nachname}_{vorname}_Tätigkeitsnachweis.pdf`
|
||
- [x] **M7**: `app.py` → Template-Validierung für PDF angepasst (Dropdown zeigt `.pdf`, Validierung prüft `_Field`-Marker)
|
||
- [x] **M8**: `coldrun.py` → An PDF-Template angepasst
|
||
- [x] **M9**: `tests/test_e2e.py` → Tests für PDF-Output umgeschrieben (PyMuPDF statt openpyxl zur Output-Validierung)
|
||
- [x] **M10**: `.copilot/PLAN.md` und `.copilot/TASKS.md` aktualisiert
|
||
|
||
## 🔍 Analyse (abgeschlossen)
|
||
- [x] **A1**: Input-Datei `input/2025 JM.xlsx` analysiert
|
||
- [x] **A2**: PDF-Template `template/Tätigkeitsnachweise Stellenförderung.pdf` liegt vor (mit `_Field`-Platzhaltern)
|
||
|
||
## ⚙️ Konfiguration (migriert)
|
||
- [x] **K1**: `config/input-fields.json` — unverändert gültig
|
||
- [x] **K2**: `config/output-fields.json` — `target_cell` entfernt, `pdf_field` hinzugefügt
|
||
- [x] **K3**: `config/settings.ini` — filename_pattern auf `.pdf`
|
||
|
||
## 🧱 Core-Module
|
||
- [x] **C1**: `requirements.txt` — streamlit, openpyxl, PyMuPDF
|
||
- [x] **C2**: `src/__init__.py` + `src/models.py` — `OutputMapping` um `pdf_field` erweitert
|
||
- [x] **C3**: `src/config.py` — Template-Suche auf `.pdf` umgestellt
|
||
- [x] **C4**: `src/parser.py` — unverändert
|
||
- [x] **C5**: `src/validator.py` — `validate_template()` für PDF via PyMuPDF
|
||
- [x] **C6**: `src/writer.py` — Komplett neu mit PyMuPDF (redact + insert_text)
|
||
|
||
## 🖥️ UI & Start
|
||
- [x] **U1**: `app.py` — PDF-Template-Validierung angepasst
|
||
- [x] **U2**: `start.bat` — unverändert
|
||
- [x] **U3**: `coldrun.py` — An PDF angepasst, funktioniert
|
||
- [x] **U4**: `README.md` — vorhanden
|
||
|
||
## ✅ Test
|
||
- [x] **T1**: E2E-Test mit realer Input-Datei und PDF-Template → 5/5 Tests bestanden
|
||
- [x] **T2**: Edge Cases — Umlaute korrekt im PDF, fehlende Marker (Ort/Datum) werden übersprungen
|