Neues Feld ist_original (Boolean, Migration 0029) - explizit beim Upload und beim Ersetzen (DOC-003) setzbar, kein Default in eine Richtung erraten. Wird beim Ersetzen bewusst NICHT vom Vorgänger übernommen (neue Version könnte ein nachgereichtes Original sein, das eine bisherige Kopie ersetzt, oder umgekehrt). Frontend: Checkbox "Original (nicht nur Kopie/Scan)" im Upload-Formular, "Original"-Badge in der Dokumentenliste. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
31 lines
878 B
Python
31 lines
878 B
Python
import uuid
|
|
from datetime import datetime
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
from app.models.dokument import DokumentTyp
|
|
|
|
# Bewusst geschlossene Liste statt Freitext (Konsistenz mit Mangel.entitaet_typ-
|
|
# Validierung) - jeder Ressourcentyp, an den Dokumente angehängt werden dürfen,
|
|
# muss hier explizit freigeschaltet werden.
|
|
EntitaetTyp = Literal[
|
|
"objekt", "objektposition", "geraet_instanz", "mangel", "fahrzeugdetails", "benutzer", "wartungsauftrag"
|
|
]
|
|
|
|
|
|
class DokumentRead(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
id: uuid.UUID
|
|
entitaet_typ: str
|
|
entitaet_id: str
|
|
dateiname: str
|
|
mime_type: str
|
|
groesse_bytes: int
|
|
dokumenttyp: DokumentTyp
|
|
beschreibung: str | None
|
|
hochgeladen_von: int
|
|
hochgeladen_am: datetime
|
|
vorgaenger_id: uuid.UUID | None
|
|
ist_original: bool
|