# SAB Taetigkeitsnachweise Generator - Implementierungsplan ## Ziel Monatliche SAB-Taetigkeitsnachweise automatisiert erzeugen auf Basis von: - PS_PW.xlsx (monatliche gefoerderte Stunden je Projektanteil) - Stellenbeschreibungen.xlsx (Stammdaten je Mitarbeiter/Funktion) - Taetigkeitsnachweis Stellenfoerderung.xlsx (Ausgabevorlage) ## Scope - Nur Verzeichnisse unter Tool verwenden. - Eingaben nur aus input. - Vorlage nur aus template. - Ausgaben nur nach output. ## Annahmen - PS_PW.xlsx und Stellenbeschreibungen.xlsx enthalten jeweils Tabelle1. - Monatsmarker in PS_PW.xlsx stehen in Zeile 2 im Format ab 01.MM.YYYY. - Name ist primaerer Match-Schluessel zwischen beiden Quellen. - Template hat genau ein Quellblatt, das geklont wird. ## Architektur - cli: Kommandozeilen-Einstieg und Orchestrierung - parser: Einlesen und Normalisierung der beiden Quelldateien - matcher: Zuordnung und Disambiguierung - validator: Source- und Business-Validierung - writer: Template-Klonen, Zellen befuellen, Speichern - model: gemeinsame Datentypen - util: Konvertierung, Datums-/Text-Helfer, Logging ## Reihenfolge (Task-Flow) 1. T1 Plan finalisieren 2. T2 Konfiguration definieren 3. T3 Projektgeruest anlegen 4. T4 Abhaengigkeiten einrichten 5. T5 Parser PS_PW 6. T6 Parser Stellenbeschreibungen 7. T7 Foerderquote berechnen 8. T8 Matching-Engine 9. T9 Source-Validierung 10. T10 Business-Validierung 11. T11 Template-Verarbeitung 12. T12 Dateinamen + Persistenz 13. T13 CLI Pipeline 14. T14 Vorschau + Bestaetigung 15. T15 Smoke-Test 16. T16 Fachtests 17. T17 Ergebnisabnahme ## Definition of Done je Task ### T1 Plan final - DoD: Dieser Plan ist vollstaendig, nachvollziehbar und in Reihenfolge mit klarer DoD-Liste dokumentiert. ### T2 config.json - DoD: Alle Pfade, Dateinamen, Sheetnamen, Spalten, Zielzellen und Dateinamenregeln sind extern konfigurierbar. ### T3 Projektgeruest - DoD: Ordner-/Modulstruktur steht, zentrale Datentypen und Fehler-/Log-Basis sind vorhanden. ### T4 Abhaengigkeiten - DoD: requirements gepflegt, lokale Installation dokumentiert, Ausfuehrung startet ohne Importfehler. ### T5 Parser PS_PW - DoD: Monatsspalte wird eindeutig gefunden, Records sind normalisiert und Mitarbeiterkontext korrekt vererbt. ### T6 Parser Stellenbeschreibungen - DoD: Stammdaten sauber eingelesen, Prozentwerte robust konvertiert, Mehrfacheintraege bleiben erhalten. ### T7 Foerderquote - DoD: Formel korrekt implementiert, Grenz-/Rundungsfaelle dokumentiert und testsicher. ### T8 Matching - DoD: Eindeutige Zuordnung pro aktivem Record oder klarer Fehlerstatus (missing/ambiguous). ### T9 Source-Validierung - DoD: Alle Struktur- und Formatpruefungen laufen vor Verarbeitung und liefern konkrete Fehlermeldungen. ### T10 Business-Validierung - DoD: Aktivitaet, Eindeutigkeit, Template-Regeln und Dateinamenkollisionen werden vor dem Schreiben geprueft. ### T11 Template-Verarbeitung - DoD: Ein Quellblatt wird pro Zuordnung geklont und korrekt mit assignment-spezifischen Werten befuellt. ### T12 Dateinamen/Speichern - DoD: Ausgabedateien folgen Muster Taetigkeitsnachweis_YYYY_MM_Vorname_Nachname.xlsx und werden konfliktfrei gespeichert. ### T13 CLI - DoD: generate.py akzeptiert month/year, orchestriert End-to-End und liefert sinnvolle Exit-Codes. ### T14 Vorschau/Bestaetigung - DoD: Vor Schreibzugriff wird Vorschau angezeigt; Abbruch ist ohne Dateiaenderung moeglich. ### T15 Smoke-Test - DoD: Mindestens ein realer Monatslauf erzeugt valide Dateien in output. ### T16 Fachtests - DoD: Abdeckung fuer Mehrfachzuordnung, fehlende Matches, ungueltige Monatsmarker und fehlende Struktur. ### T17 Ergebnisabnahme - DoD: Pflichtfelder, Monats-/Datumswerte und Taetigkeitstexte stimmen mit Template- und Fachregeln ueberein. ## Risiko- und Entscheidungslog - Name-Matching kann uneinheitliche Schreibweisen enthalten; ggf. Normalisierung (Whitespace/Kommas) zentral in util. - Prozentvergleich kann Rundungsabweichungen haben; toleranzbasierten Vergleich definieren. - Mehrdeutige Matches nicht still aufloesen; immer sichtbar validieren. ## Start der Umsetzung - Aktiver Schritt: T2 (Konfiguration als naechste technische Umsetzung)