Files
MABEA/backend/app/schemas/dashboard.py
T
patrickandClaude Sonnet 5 fab3a06073
CI / backend-tests (push) Failing after 1m54s
CI / frontend-build (push) Successful in 16s
fix(dashboard): nie kontrollierte Objekte gelten nicht mehr als einsatzbereit
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
2026-09-05 15:47:39 +02:00

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