146 lines
3.6 KiB
Python
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
|