Files
plast-track/backend/app/schemas.py
2026-06-17 02:45:05 +01:00

90 lines
2.5 KiB
Python

from datetime import date, datetime
from pydantic import BaseModel, ConfigDict, Field
class MachineEventIn(BaseModel):
model_config = ConfigDict(extra="allow")
machine_id: str
event_type: str
timestamp: datetime
cycle_time_sec: float | None = None
source: str | None = "digital_input"
input_name: str | None = None
input_value: bool | int | str | None = None
class ProductionOrderCreate(BaseModel):
order_number: str
machine_id: int
article_ref: str
article_name: str
mold_ref: str | None = None
material_ref: str | None = None
planned_qty: int = Field(gt=0)
cavities: int = Field(default=1, gt=0)
theoretical_cycle_time_sec: float = Field(gt=0)
class ProductionOrderUpdate(BaseModel):
order_number: str | None = None
machine_id: int | None = None
article_ref: str | None = None
article_name: str | None = None
mold_ref: str | None = None
material_ref: str | None = None
planned_qty: int | None = Field(default=None, gt=0)
cavities: int | None = Field(default=None, gt=0)
theoretical_cycle_time_sec: float | None = Field(default=None, gt=0)
class DowntimeQualify(BaseModel):
reason_code: str
comment: str | None = None
qualified_by: str
class ScrapCreate(BaseModel):
machine_id: str
production_order_id: int | None = None
quantity: int = Field(gt=0)
reason_code: str
comment: str | None = None
operator_name: str
timestamp: datetime | None = None
class DailyOeeQuery(BaseModel):
date: date
class MachineConfigUpdate(BaseModel):
name: str | None = None
brand: str | None = None
model: str | None = None
is_active: bool | None = None
cycle_signal_edge: str | None = None
debounce_ms: int | None = Field(default=None, ge=0)
min_cycle_time_sec: int | None = Field(default=None, ge=1)
max_cycle_time_sec: int | None = Field(default=None, ge=1)
stop_detection_delay_sec: int | None = Field(default=None, ge=1)
class SimulatorEventCreate(BaseModel):
machine_id: str
event_type: str
timestamp: datetime | None = None
input_name: str | None = None
input_value: bool | int | str | None = None
cycle_time_sec: float | None = Field(default=None, gt=0)
class SimulatorScenarioCreate(BaseModel):
machine_id: str
scenario: str
cycle_time_sec: float | None = Field(default=None, gt=0)
count: int = Field(default=1, ge=1, le=100)
input_name: str | None = None
input_value: bool | int | str | None = None