Files
MABEA/backend/app/schemas/wartung.py
T
patrickandClaude Sonnet 5 847c303a97
CI / backend-tests (push) Successful in 2m22s
CI / frontend-build (push) Successful in 25s
feat(wartung): MAINT-005 Ersatzteile/Kosten je Wartungsauftrag
Neue Tabelle wartungsauftrag_teil (Migration 0033), CRUD-Endpunkte
/wartungsauftraege/{id}/teile, UI-Panel in WartungSection.tsx mit
Summenanzeige. Backlog Epic 22 (UI-Redesign Runde 2, Kacheln UI2-001..005)
als geplant ergänzt, Umsetzung folgt separat.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-08 22:06:02 +02:00

117 lines
2.9 KiB
Python

import uuid
from datetime import date, datetime
from decimal import Decimal
from pydantic import BaseModel, ConfigDict
from app.models.wartung import IntervallTyp, WartungsauftragStatus
class WartungsintervallCreate(BaseModel):
typ: IntervallTyp
wert: int
class WartungsintervallRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: int
wartungsplan_position_id: int
typ: IntervallTyp
wert: int
class WartungsplanPositionCreate(BaseModel):
wartungsart: str
beschreibung: str | None = None
intervalle: list[WartungsintervallCreate] = []
class WartungsplanPositionRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: int
wartungsplan_id: int
wartungsart: str
beschreibung: str | None
intervalle: list[WartungsintervallRead] = []
class WartungsplanCreate(BaseModel):
objekttyp_id: int
name: str
positionen: list[WartungsplanPositionCreate] = []
class WartungsplanRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: int
objekttyp_id: int
name: str
positionen: list[WartungsplanPositionRead] = []
class WartungsauftragCreate(BaseModel):
objekt_id: int
geraet_instanz_id: uuid.UUID | None = None
wartungsplan_position_id: int | None = None
wartungsart: str
beschreibung: str | None = None
werkstatt_intern: bool = True
werkstatt_name: str | None = None
faelligkeit_am: date | None = None
class WartungsauftragErledigen(BaseModel):
erledigt_am: date | None = None
kosten: Decimal | None = None
kilometerstand_bei_erledigung: int | None = None
betriebsstunden_bei_erledigung: Decimal | None = None
class WartungsauftragStatusUpdate(BaseModel):
status: WartungsauftragStatus
class WartungsauftragRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: uuid.UUID
objekt_id: int
geraet_instanz_id: uuid.UUID | None
wartungsplan_position_id: int | None
wartungsart: str
beschreibung: str | None
status: WartungsauftragStatus
werkstatt_intern: bool
werkstatt_name: str | None
faelligkeit_am: date | None
erstellt_am: datetime
erledigt_am: datetime | None
durchgefuehrt_von: int | None
kosten: Decimal | None
kilometerstand_bei_erledigung: int | None
betriebsstunden_bei_erledigung: Decimal | None
class WartungsauftragTeilCreate(BaseModel):
bezeichnung: str
menge: Decimal = Decimal(1)
kosten: Decimal
class WartungsauftragTeilRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: uuid.UUID
auftrag_id: uuid.UUID
bezeichnung: str
menge: Decimal
kosten: Decimal
class FaelligeWartungRead(BaseModel):
wartungsplan_position_id: int
wartungsart: str
objekt_id: int
faellig: bool
faellig_am: date | None
faellig_bei_km: int | None
faellig_bei_betriebsstunden: Decimal | None