Nutzer-Fund (Readiness-Backlog-Review): einsatzbereitschaft() zählte ein Objekt ohne jede Kontrolle bisher als "einsatzbereit", weil keine Kriterien verletzt waren - fachlich falsch, "nie geprüft" ist nicht dasselbe wie "geprüft und in Ordnung". Neuer vierter Zustand "unbekannt": Objekte ohne abgeschlossene Kontrolle UND ohne sonstige Blocker fallen jetzt hierunter statt unter "einsatzbereit". Objekte mit anderen Gründen (Fehlbestand/Mangel/Prüfung/...) bleiben davon unberührt, die zählten schon vorher korrekt. Tests angepasst: zwei bestehende Tests nutzten ungeprüfte Objekte und erwarteten fälschlich "einsatzbereit" - jetzt entweder explizit kontrolliert (Ist=Soll) oder auf "unbekannt" korrigiert, plus neuer Test für den Kernfall. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KC8HYvv6UkCVYheYiTw9DD
70 lines
1.7 KiB
Python
70 lines
1.7 KiB
Python
import uuid
|
|
from datetime import date
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class KennzahlenRead(BaseModel):
|
|
anzahl_offener_fehlbestaende: int
|
|
anzahl_genehmigter_mindermengen: int
|
|
anzahl_kuerzlich_erledigter_fehlbestaende: int
|
|
anzahl_bevorstehender_ablaufdaten: int
|
|
anzahl_problematischer_objekte: int
|
|
anzahl_objekte_gesamt: int
|
|
|
|
|
|
class AblaufdatumRead(BaseModel):
|
|
objekt_id: int
|
|
material_id: int
|
|
ablaufdatum: date
|
|
verbleibende_tage: int
|
|
status: str
|
|
|
|
|
|
class ObjektMangelRead(BaseModel):
|
|
objekt_id: int
|
|
code: str
|
|
name: str
|
|
gruende: list[str]
|
|
|
|
|
|
class EinsatzbereitschaftRead(BaseModel):
|
|
einsatzbereit: int
|
|
eingeschraenkt_einsatzbereit: int
|
|
unbekannt: int
|
|
nicht_einsatzbereit: int
|
|
gesamt: int
|
|
details: list[ObjektMangelRead]
|
|
|
|
|
|
class PrueftermineintragRead(BaseModel):
|
|
"""typ='geraet' (Karte 14) oder 'fahrzeug_hu'/'fahrzeug_uvv' (Roadmap Phase
|
|
3, Modul Fahrzeuge) - eine Kachel für beide (Nutzer-Vorgabe: "welche
|
|
Prüfungen bald fällig sind" ist ein Konzept). Die geraet-spezifischen
|
|
Felder sind bei Fahrzeug-Einträgen None."""
|
|
|
|
typ: str
|
|
objekt_id: int
|
|
bezeichnung: str
|
|
faelligkeitsdatum: date
|
|
verbleibende_tage: int
|
|
status: str
|
|
geraet_instanz_id: uuid.UUID | None = None
|
|
objektposition_id: uuid.UUID | None = None
|
|
material_id: int | None = None
|
|
seriennummer: str | None = None
|
|
|
|
|
|
class QualifikationsablaufRead(BaseModel):
|
|
"""Personal-Modul-Kachel (Nutzer-Vorgabe: "wer verliert bald Führerschein/
|
|
Lehrgang-Gültigkeit")."""
|
|
|
|
benutzer_qualifikation_id: uuid.UUID
|
|
benutzer_id: int
|
|
benutzer_name: str
|
|
qualifikationstyp_id: int
|
|
qualifikationstyp_name: str
|
|
gueltig_bis: date
|
|
verbleibende_tage: int
|
|
status: str
|