Finalize plan and add configuration schema
This commit is contained in:
1 parent
6cf31eb391
commit
a84fd04035
3 files changed
+195
-3
No files matched your search
@@ -0,0 +1,108 @@
|
||||
# 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)
|
||||
@@ -7,10 +7,11 @@ Projekt vollstaendig umsetzen: aus PS_PW.xlsx und Stellenbeschreibungen.xlsx mon
|
||||
- [ ] 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
|
||||
- [ ] T1: Plan final im Plan-Dokument pflegen (Scope, Annahmen, Reihenfolge, DoD pro Aufgabe).
|
||||
- [ ] T2: `config.json` Struktur festlegen
|
||||
- [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
|
||||
@@ -110,4 +111,4 @@ Projekt vollstaendig umsetzen: aus PS_PW.xlsx und Stellenbeschreibungen.xlsx mon
|
||||
8. T15 -> T16 -> T17
|
||||
|
||||
## Aktueller Startpunkt
|
||||
- [ ] Naechste aktive Aufgabe: T1 (Plan final pflegen)
|
||||
- [ ] Naechste aktive Aufgabe: T3 (Python-Projektstruktur anlegen)
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"paths": {
|
||||
"input_dir": "input",
|
||||
"template_dir": "template",
|
||||
"output_dir": "output"
|
||||
},
|
||||
"files": {
|
||||
"allocation_workbook": "PS_PW.xlsx",
|
||||
"masterdata_workbook": "Stellenbeschreibungen.xlsx",
|
||||
"template_workbook": "Tätigkeitsnachweis Stellenförderung.xlsx"
|
||||
},
|
||||
"sheets": {
|
||||
"allocation": "Tabelle1",
|
||||
"masterdata": "Tabelle1",
|
||||
"template_source": "Tabelle1"
|
||||
},
|
||||
"allocation": {
|
||||
"header_month_marker_row": 2,
|
||||
"columns": {
|
||||
"employee_name": "A",
|
||||
"contract_hours_weekly": "B",
|
||||
"project_key": "C",
|
||||
"first_month_column": "D",
|
||||
"remarks": "I"
|
||||
},
|
||||
"month_marker": {
|
||||
"prefix": "ab ",
|
||||
"date_format": "%d.%m.%Y",
|
||||
"exact_first_day_required": true
|
||||
},
|
||||
"inactive_values": [
|
||||
"",
|
||||
"-",
|
||||
"0",
|
||||
0
|
||||
]
|
||||
},
|
||||
"masterdata": {
|
||||
"columns": {
|
||||
"id": "A",
|
||||
"antragsnummer": "B",
|
||||
"name": "C",
|
||||
"qualifikation": "D",
|
||||
"stellenanteil": "E",
|
||||
"funktion": "F",
|
||||
"taetigkeit": "G"
|
||||
},
|
||||
"decimal": {
|
||||
"decimal_separator": ",",
|
||||
"thousands_separator": "."
|
||||
}
|
||||
},
|
||||
"matching": {
|
||||
"name_normalization": {
|
||||
"trim": true,
|
||||
"collapse_spaces": true,
|
||||
"case_insensitive": true
|
||||
},
|
||||
"share_tolerance_percent": 0.5,
|
||||
"prefer_function_hint": true
|
||||
},
|
||||
"output": {
|
||||
"filename_pattern": "Taetigkeitsnachweis_{year}_{month}_{first_name}_{last_name}.xlsx",
|
||||
"one_workbook_per_employee": true,
|
||||
"one_sheet_per_assignment": true,
|
||||
"sheet_name_pattern": "{index}_{funktion}"
|
||||
},
|
||||
"template_targets": {
|
||||
"antragsnummer": "",
|
||||
"name_vorname": "",
|
||||
"qualifikation": "",
|
||||
"funktion": "",
|
||||
"taetigkeiten": "",
|
||||
"reporting_month_label": "",
|
||||
"foerderquote": "",
|
||||
"generated_on": ""
|
||||
},
|
||||
"runtime": {
|
||||
"abort_on_validation_errors": true,
|
||||
"preview_before_write": true,
|
||||
"confirm_before_write": true
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user