Validation_Suite/validation-suite/backend/mercury/app/schemas/domain.py

146 lines
3.6 KiB
Python

from __future__ import annotations
from datetime import date
from pydantic import EmailStr, Field
from app.models.customer import CustomerType
from app.models.equipment import EquipmentKind, EquipmentStatus
from app.models.validation import ValidationStatus
from app.schemas.common import EntityRead, ORMModel
class CustomerCreate(ORMModel):
customer_type: CustomerType
name: str
street: str | None = None
postal_code: str | None = None
city: str | None = None
phone: str | None = None
email: EmailStr | None = None
hygiene_officer: str | None = None
quality_manager: str | None = None
notes: str | None = None
class CustomerRead(CustomerCreate, EntityRead):
pass
class CustomerUpdate(CustomerCreate):
pass
class LocationCreate(ORMModel):
customer_id: str
name: str
street: str | None = None
postal_code: str | None = None
city: str | None = None
room: str | None = None
class LocationRead(LocationCreate, EntityRead):
pass
class LocationUpdate(LocationCreate):
pass
class ContactCreate(ORMModel):
customer_id: str
full_name: str
function: str | None = None
email: EmailStr | None = None
phone: str | None = None
class ContactRead(ContactCreate, EntityRead):
pass
class ContactUpdate(ContactCreate):
pass
class DeviceCreate(ORMModel):
customer_id: str
location_id: str | None = None
manufacturer: str
model: str
device_type: str | None = None
serial_number: str
year_built: int | None = None
commissioned_on: date | None = None
chamber_volume_liters: int | None = None
steam_generation: str | None = None
water_treatment: str | None = None
documentation: str | None = None
supplier: str | None = None
class DeviceRead(DeviceCreate, EntityRead):
pass
class DeviceUpdate(DeviceCreate):
pass
class EquipmentCreate(ORMModel):
kind: EquipmentKind
manufacturer: str | None = None
model: str | None = None
serial_number: str
calibrated_on: date | None = None
calibration_due_on: date | None = None
certificate_document_id: str | None = None
status: EquipmentStatus = EquipmentStatus.green
class EquipmentRead(EquipmentCreate, EntityRead):
pass
class EquipmentUpdate(EquipmentCreate):
pass
class ValidationCreate(ORMModel):
report_number: str
customer_id: str
location_id: str | None = None
contact_id: str | None = None
device_id: str | None = None
validation_type: str
project: str | None = None
test_location: str | None = None
examiner_name: str | None = None
participants: str | None = None
operator_name: str | None = None
scheduled_on: date | None = None
performed_on: date | None = None
next_validation_on: date | None = None
examiner_id: str | None = None
status: ValidationStatus = ValidationStatus.draft
result: str | None = None
notes: str | None = None
equipment_ids: list[str] = Field(default_factory=list)
environment_conditions: dict = Field(default_factory=dict)
documentation_checklist: list[dict] = Field(default_factory=list)
performance_checklist: list[dict] = Field(default_factory=list)
programs: list[dict] = Field(default_factory=list)
loading_patterns: list[dict] = Field(default_factory=list)
measurement_data: list[dict] = Field(default_factory=list)
drying: dict = Field(default_factory=dict)
recommendations: list[dict] = Field(default_factory=list)
attachments: list[dict] = Field(default_factory=list)
class ValidationRead(ValidationCreate, EntityRead):
pass
class ValidationUpdate(ValidationCreate):
pass