115 lines
4.6 KiB
Markdown
115 lines
4.6 KiB
Markdown
# SAB Taetigkeitsnachweise Generator - Aufgabenliste
|
|
|
|
## Ziel
|
|
Projekt vollstaendig umsetzen: aus PS_PW.xlsx und Stellenbeschreibungen.xlsx monatliche Taetigkeitsnachweise per Template erzeugen.
|
|
|
|
## Arbeitsmodus
|
|
- [ ] Immer nur genau eine Aufgabe aktiv bearbeiten.
|
|
- [ ] Nach Abschluss jeder Aufgabe: Ergebnis pruefen und abhaken.
|
|
- [ ] Bei Blockern: Fehler dokumentieren und naechsten konkreten Schritt notieren.
|
|
- [ ] Nach jedem erledigten task einen git commit erzeugen
|
|
|
|
## Phase 1 - Planung und Konfiguration
|
|
- [x] T1: Plan final im Plan-Dokument pflegen (Scope, Annahmen, Reihenfolge, DoD pro Aufgabe).
|
|
- [x] T2: `config.json` Struktur festlegen
|
|
- [ ] Pfade fuer `input/`, `template/`, `output/`
|
|
- [ ] Dateinamen der drei Excel-Dateien
|
|
- [ ] Sheetnamen und Spaltenzuordnung je Quelle
|
|
- [ ] Zielzellen-Mapping fuer Template
|
|
- [ ] Dateinamenmuster fuer Ausgaben
|
|
- [ ] Regeln fuer Monatsmarker und Datumsformat
|
|
|
|
## Phase 2 - Projektgeruest und Basiskomponenten
|
|
- [x] T3: Python-Projektstruktur anlegen
|
|
- [x] Modulaufteilung (cli, parser, matcher, validator, writer, model, util)
|
|
- [x] Gemeinsame Datenmodelle (z. B. dataclasses) definieren
|
|
- [x] Zentrales Logging/Fehlermodell vorbereiten
|
|
- [x] T4: Abhaengigkeiten und Laufzeit vorbereiten
|
|
- [x] benoetigte Pakete festlegen (z. B. openpyxl, click)
|
|
- [x] requirements-Datei pflegen
|
|
- [x] Startkommando fuer lokale Ausfuehrung dokumentieren
|
|
|
|
## Phase 3 - Einlesen der Quelldaten
|
|
- [x] T5: Parser fuer PS_PW.xlsx implementieren
|
|
- [x] Monatsmarker in Zeile 2 erkennen und parsen (`ab 01.MM.YYYY`)
|
|
- [x] Zielspalte fuer requested month/year eindeutig bestimmen
|
|
- [x] Mitarbeiterkontext ueber Mehrzeilen-Eintraege vererben
|
|
- [x] Werte normalisieren (`-`, `0`, leer, numerisch)
|
|
- [x] Normalisierte Records erzeugen
|
|
- [x] T6: Parser fuer Stellenbeschreibungen.xlsx implementieren
|
|
- [x] Felder ID, Antragsnummer, Name, Qualifikation, Stellenanteil, Funktion, Taetigkeit einlesen
|
|
- [x] Prozentwerte (deutsches Dezimalformat) robust in Zahlen umwandeln
|
|
- [x] Mehrfache Eintraege je Name korrekt behalten
|
|
|
|
## Phase 4 - Matching und Fachlogik
|
|
- [x] T7: Foerderquote berechnen
|
|
- [x] Formel: funded_weekly_hours / contract_weekly_hours * 100
|
|
- [x] Rundungs-/Vergleichsregeln definieren
|
|
- [x] T8: Matching-Engine bauen
|
|
- [x] Primaerschluessel Name anwenden
|
|
- [x] Kandidaten via Stellenanteil/Foerderquote aufloesen
|
|
- [x] Ambigue und fehlende Treffer sauber markieren
|
|
- [x] Hinweise aus Bemerkungsspalte als Validierungshinweis weitergeben
|
|
|
|
## Phase 5 - Validierung
|
|
- [x] T9: Source-Validierung implementieren
|
|
- [x] Dateien vorhanden und lesbar
|
|
- [x] Benoetigte Sheets vorhanden
|
|
- [x] Spalten vorhanden
|
|
- [x] Monatsmarker parsebar
|
|
- [x] Gewuenschter Monat exakt einmal vorhanden
|
|
- [x] Stunden-/Vertragswerte gueltig
|
|
- [x] T10: Business-Validierung implementieren
|
|
- [x] Mindestens ein aktiver Fall vorhanden
|
|
- [x] Jeder aktive Fall hat eindeutigen Match oder klaren Fehler
|
|
- [x] Template enthaelt genau ein Quellblatt
|
|
- [x] Dateinamenkollisionen vermeiden
|
|
- [x] Pflicht-Zielzellen vollstaendig konfiguriert
|
|
|
|
## Phase 6 - Ausgabeerzeugung
|
|
- [x] T11: Template-Verarbeitung bauen
|
|
- [x] Template-Workbook laden
|
|
- [x] Sheet pro aktiver Zuordnung klonen
|
|
- [x] Inhalte assignment-spezifisch in Zielzellen schreiben
|
|
- [x] T12: Dateinamen und Speichern
|
|
- [x] Muster: `Taetigkeitsnachweis_YYYY_MM_Vorname_Nachname.xlsx`
|
|
- [x] Pro Mitarbeiter genau eine Datei pro Monat erzeugen
|
|
- [x] Bei mehreren Zuordnungen: mehrere Sheets in derselben Datei
|
|
|
|
## Phase 7 - CLI und Benutzerfluss
|
|
- [x] T13: CLI in `generate.py` implementieren
|
|
- [x] Parameter `--month` und `--year`
|
|
- [x] Pipeline orchestrieren: parse -> match -> validate -> preview -> write
|
|
- [x] Kontrollierter Exit-Code bei Fehlern
|
|
- [x] T14: Vorschau + Bestaetigung vor Schreiben
|
|
- [x] Uebersicht zu Berichtsmonat, aktiven Faellen, Fehlern
|
|
- [x] Liste der geplanten Ausgabedateien
|
|
- [x] Interaktive Bestaetigung (Abbruch ohne Schreibzugriff moeglich)
|
|
|
|
## Phase 8 - Tests und Abnahme
|
|
- [ ] T15: Smoke-Test fuer End-to-End-Lauf
|
|
- [ ] Beispielmonat ausfuehren
|
|
- [ ] Dateien in `output/` entstehen erwartungsgemaess
|
|
- [ ] T16: Fachtests definieren und ausfuehren
|
|
- [ ] Mehrfachzuordnung eines Mitarbeiters
|
|
- [ ] Fehlender Match
|
|
- [ ] Ungueltige Monatsmarker
|
|
- [ ] Fehlende Pflichtspalte/Sheet
|
|
- [ ] T17: Ergebnispruefung gegen Template-Regeln
|
|
- [ ] Pflichtfelder korrekt befuellt
|
|
- [ ] Taetigkeitstext inkl. Zeilenumbrueche korrekt
|
|
- [ ] Datums- und Monatsanzeige korrekt
|
|
|
|
## Umsetzungsreihenfolge
|
|
1. T1 -> T2
|
|
2. T3 -> T4
|
|
3. T5 und T6 (danach zusammenfuehren)
|
|
4. T7 -> T8
|
|
5. T9 -> T10
|
|
6. T11 -> T12
|
|
7. T13 -> T14
|
|
8. T15 -> T16 -> T17
|
|
|
|
## Aktueller Startpunkt
|
|
- [ ] Naechste aktive Aufgabe: T15 (Smoke-Test fuer End-to-End-Lauf)
|