feat(ui): UI-005 begründete Einsatzbereitschaft + Dokumente in der Akte
Backend: objekt_readiness() in dashboard.py liefert Status+Gründe für
ein einzelnes Objekt, Fallunterscheidung aus einsatzbereitschaft()
extrahiert (_kategorie_und_gruende, keine Duplizierung). Neue Felder
an /akte/objekt/{id}. Frontend: ReadinessBadge + Gründeliste ersetzt
den rohen objekt.status-Badge (Objekt-Lebenszyklus-Status bleibt
separat sichtbar). Dokumente waren in der Akte bisher nur Text ohne
Interaktion - jetzt DokumentePanel eingebunden plus neuer "Ansehen"-
Klick (PDF/Bild im neuen Tab statt Zwangs-Download).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
@@ -18,6 +18,7 @@ from app.schemas.historie import HistorieRead
|
||||
from app.schemas.mangel import MangelRead
|
||||
from app.schemas.objekt import FahrzeugdetailsRead, ObjektRead
|
||||
from app.schemas.zustaendigkeit import KontrollverantwortungRead
|
||||
from app.services.dashboard import objekt_readiness
|
||||
from app.services.objekte import letzte_kontrollen_map
|
||||
|
||||
|
||||
@@ -89,12 +90,16 @@ async def akte_fuer_objekt(db: AsyncSession, objekt_id: int) -> AkteRead | None:
|
||||
|
||||
maengel_result = await db.execute(select(Mangel).where(Mangel.objekt_id == objekt_id))
|
||||
|
||||
readiness = await objekt_readiness(db, objekt_id)
|
||||
|
||||
objekt_read = ObjektRead.model_validate(objekt).model_copy(
|
||||
update={"letzte_kontrolle_am": letzte_map.get(objekt_id)}
|
||||
)
|
||||
|
||||
return AkteRead(
|
||||
objekt=objekt_read,
|
||||
einsatzbereitschaft_status=readiness["status"],
|
||||
einsatzbereitschaft_gruende=readiness["gruende"],
|
||||
objekttyp_name=objekttyp.name if objekttyp else "",
|
||||
standort_name=standort.name if standort else "",
|
||||
fahrzeugdetails=FahrzeugdetailsRead.model_validate(fahrzeugdetails) if fahrzeugdetails else None,
|
||||
|
||||
Reference in New Issue
Block a user