Files
sufw-anweisenheiten/schema.json
T

126 lines
4.7 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Attendance PDF Generator – Konfiguration",
"description": "Konfigurationsschema für config.json",
"type": "object",
"required": [
"version",
"antragsnummer",
"ort",
"template_pdf",
"output_dir",
"excel_year_pattern",
"excel_name_header",
"excel_name_column",
"excel_seq_column",
"excel_day_start_col",
"excel_day_end_col",
"month_mapping",
"valid_status_codes",
"plan_hours_value",
"pauschale_value"
],
"properties": {
"version": {
"type": "string",
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$",
"description": "Semantic version (z. B. 1.0.0)"
},
"antragsnummer": {
"type": "string",
"description": "SAB-Antragsnummer (statisch, aus config)"
},
"ort": {
"type": "string",
"description": "Ort für die Unterschrift (statisch, aus config)"
},
"template_pdf": {
"type": "string",
"description": "Relativer Pfad zum PDF-Template"
},
"output_dir": {
"type": "string",
"description": "Ausgabeverzeichnis für generierte PDFs"
},
"excel_year_pattern": {
"type": "string",
"description": "Regex-Muster zur Jahresextraktion aus dem Dateinamen"
},
"excel_name_header": {
"type": "string",
"description": "Text in der Headerzeile der Namensspalte"
},
"excel_name_column": {
"type": "integer",
"description": "0-basierter Spaltenindex der Namensspalte (Spalte B = 1)"
},
"excel_seq_column": {
"type": "integer",
"description": "0-basierter Spaltenindex der lfd. Nummer (Spalte A = 0)"
},
"excel_day_start_col": {
"type": "integer",
"description": "0-basierter Spaltenindex des ersten Tages (Spalte J = 9)"
},
"excel_day_end_col": {
"type": "integer",
"description": "0-basierter Spaltenindex des letzten Tages (Spalte AN = 39)"
},
"month_mapping": {
"type": "object",
"description": "Mapping der deutschen Monatsabkürzungen auf zweistellige Monatsnummern",
"additionalProperties": {
"type": "string",
"pattern": "^(0[1-9]|1[0-2])$"
}
},
"valid_status_codes": {
"type": "array",
"items": { "type": "string" },
"description": "Gültige String-Statuscodes in Excel-Zellen (außer numerisch)"
},
"plan_hours_value": {
"type": "string",
"description": "Wert für das plan.N Dropdown (immer '6')"
},
"pauschale_value": {
"type": "string",
"description": "Wert für das pauschale.N Feld wenn anwesend"
},
"pdf_use_display_values": {
"type": "boolean",
"description": "true = Dropdown-Anzeigewerte ins PDF schreiben (z.B. 'X = anwesend'); false = rohe Export-Werte (z.B. 'X')",
"default": true
},
"pdf_need_appearances": {
"type": "boolean",
"description": "Steuert AcroForm /NeedAppearances beim Schreiben der PDF. false wird fuer stabile PyMuPDF-Render bevorzugt (Footer/Buttons sichtbar).",
"default": false
},
"regression": {
"type": "object",
"description": "Einstellungen fuer den Regressions-Bildvergleich (pytest).",
"properties": {
"enabled": {
"type": "boolean",
"description": "Aktiviert oder deaktiviert den Regressions-Bildvergleich. false = Tests werden uebersprungen (default).",
"default": false
},
"mask_footer": {
"type": "boolean",
"description": "Ignoriert den unteren Bereich (Footer) beim Pixel-Vergleich. true = untere 20% maskieren; false = vollstaendiger Vergleich.",
"default": true
}
}
},
"excel_network_source": {
"type": "string",
"description": "Optionaler SMB- oder Dateipfad zur Excel-Datei, die beim GUI-Start nach input/ kopiert und bei Bedarf aktualisiert wird"
},
"update_check_path": {
"type": "string",
"description": "SMB-Pfad zum Verzeichnis mit Installer-Dateien (AnwesenheitPDF-Setup-x.y.z.exe) fuer automatische Update-Pruefung"
}
}
}