deepseek den plan umsetzen lassen

This commit is contained in:
trnq1ll0 committed 2026-06-09 08:33:47 +02:00
1 parent 6c60a72e0f
commit 044e4df783
16 files changed
+971 -55

No files matched your search

+74
View File
@@ -0,0 +1,74 @@
"""Tätigkeitsnachweis-Generator – Datenmodelle."""
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class EmployeeRecord:
"""Eine Zeile aus einem Monats-Sheet der Input-Datei."""
name: str
antragsnummer: str
qualifikation: str
funktion: str
stellenanteil: float
monat: str # z. B. "01.2025"
taetigkeit: str
id: Optional[int] = None
kommentar: Optional[str] = None
@property
def month_index(self) -> int:
"""Extrahiere den Monatsindex (1–12) aus dem Monatsfeld."""
try:
return int(self.monat.split(".")[0])
except (ValueError, IndexError):
return 0
@property
def year(self) -> int:
"""Extrahiere das Jahr aus dem Monatsfeld."""
try:
return int(self.monat.split(".")[1])
except (ValueError, IndexError):
return 0
@dataclass
class FieldSchema:
"""Definition eines Feldes aus input-fields.json."""
column: str
field_name: str
type: str
required: bool
@dataclass
class OutputMapping:
"""Definition eines Mappings aus output-fields.json."""
source_field: str
target_cell: str
format: Optional[str] = None
@dataclass
class AppConfig:
"""Gesamte App-Konfiguration."""
input_dir: str
template_dir: str
output_dir: str
filename_pattern: str
input_schema: list = field(default_factory=list)
output_mapping: list = field(default_factory=list)
month_sheet_pattern: str = "* 20??"
skip_empty_name: bool = True
skip_empty_antragsnummer: bool = True
@dataclass
class ValidationResult:
"""Ergebnis einer Validierung."""
is_valid: bool
errors: list = field(default_factory=list)
warnings: list = field(default_factory=list)
info: dict = field(default_factory=dict)