Neue Tabellen hersteller/modell (Migration 0030), CRUD-Endpunkte (/hersteller, /modelle) nach bestehendem Kategorie-Muster, inkl. 409 bei Duplikaten (IntegrityError abgefangen wie in personal.py). geraet_instanz bekommt optionales modell_id-Feld - verknüpft eine konkrete Geräteinstanz (mit Seriennummer, IDENT-004) mit ihrem Hersteller/Modell. Ergänzt Material.hersteller (bleibt unverändert als Freitext) um eine normalisierte Variante gezielt für Geräte mit Seriennummer - keine Datenmigration bestehender Freitext-Werte (Scope dieser Kachel). Bewusst kein neues Admin-UI-Screen für die Pflege (Scope-Grenze der Kachel) - Hersteller/Modell aktuell nur über die API verwaltbar. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
34 lines
927 B
Python
34 lines
927 B
Python
import uuid
|
|
from datetime import date
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
from app.models.geraet_instanz import GeraetStatus
|
|
|
|
|
|
class GeraetInstanzCreate(BaseModel):
|
|
seriennummer: str
|
|
modell_id: int | None = None
|
|
|
|
|
|
class GeraetInstanzRead(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
id: uuid.UUID
|
|
objektposition_id: uuid.UUID
|
|
seriennummer: str
|
|
modell_id: int | None
|
|
pruefdatum: date | None
|
|
naechste_pruefung: date | None
|
|
status: GeraetStatus
|
|
bemerkung: str | None
|
|
|
|
|
|
class GeraetInstanzStatusUpdate(BaseModel):
|
|
status: GeraetStatus
|
|
pruefdatum: date | None = None
|
|
bemerkung: str | None = None
|
|
# Karte 14: "pro Gerät entscheidbar" - defekt/in_reparatur kann optional
|
|
# einen Fehlbestand erzeugen (nutzt bestehende Fehlbestand-Infrastruktur),
|
|
# muss aber nicht (z.B. Ersatzgerät bereits vorhanden).
|
|
erzeuge_fehlbestand: bool = False
|