Improve teh securty of teh DB
This commit is contained in:
171
services/production/app/schemas/equipment.py
Normal file
171
services/production/app/schemas/equipment.py
Normal file
@@ -0,0 +1,171 @@
|
||||
# services/production/app/schemas/equipment.py
|
||||
"""
|
||||
Equipment schemas for Production Service
|
||||
"""
|
||||
|
||||
from pydantic import BaseModel, Field, ConfigDict
|
||||
from typing import Optional, List
|
||||
from datetime import datetime
|
||||
from uuid import UUID
|
||||
|
||||
from app.models.production import EquipmentType, EquipmentStatus
|
||||
|
||||
|
||||
class EquipmentCreate(BaseModel):
|
||||
"""Schema for creating new equipment"""
|
||||
name: str = Field(..., min_length=1, max_length=255, description="Equipment name")
|
||||
type: EquipmentType = Field(..., description="Equipment type")
|
||||
model: Optional[str] = Field(None, max_length=100, description="Equipment model")
|
||||
serial_number: Optional[str] = Field(None, max_length=100, description="Serial number")
|
||||
location: Optional[str] = Field(None, max_length=255, description="Physical location")
|
||||
status: EquipmentStatus = Field(default=EquipmentStatus.OPERATIONAL, description="Equipment status")
|
||||
|
||||
# Installation and maintenance
|
||||
install_date: Optional[datetime] = Field(None, description="Installation date")
|
||||
last_maintenance_date: Optional[datetime] = Field(None, description="Last maintenance date")
|
||||
next_maintenance_date: Optional[datetime] = Field(None, description="Next scheduled maintenance date")
|
||||
maintenance_interval_days: Optional[int] = Field(None, ge=1, description="Maintenance interval in days")
|
||||
|
||||
# Performance metrics
|
||||
efficiency_percentage: Optional[float] = Field(None, ge=0, le=100, description="Current efficiency percentage")
|
||||
uptime_percentage: Optional[float] = Field(None, ge=0, le=100, description="Overall uptime percentage")
|
||||
energy_usage_kwh: Optional[float] = Field(None, ge=0, description="Current energy usage in kWh")
|
||||
|
||||
# Specifications
|
||||
power_kw: Optional[float] = Field(None, ge=0, description="Power consumption in kilowatts")
|
||||
capacity: Optional[float] = Field(None, ge=0, description="Equipment capacity")
|
||||
weight_kg: Optional[float] = Field(None, ge=0, description="Weight in kilograms")
|
||||
|
||||
# Temperature monitoring
|
||||
current_temperature: Optional[float] = Field(None, description="Current temperature")
|
||||
target_temperature: Optional[float] = Field(None, description="Target temperature")
|
||||
|
||||
# Notes
|
||||
notes: Optional[str] = Field(None, description="Additional notes")
|
||||
|
||||
model_config = ConfigDict(
|
||||
json_schema_extra={
|
||||
"example": {
|
||||
"name": "Horno Principal #1",
|
||||
"type": "oven",
|
||||
"model": "Miwe Condo CO 4.1212",
|
||||
"serial_number": "MCO-2021-001",
|
||||
"location": "Área de Horneado - Zona A",
|
||||
"status": "operational",
|
||||
"install_date": "2021-03-15T00:00:00Z",
|
||||
"maintenance_interval_days": 90,
|
||||
"efficiency_percentage": 92.0,
|
||||
"uptime_percentage": 98.5,
|
||||
"power_kw": 45.0,
|
||||
"capacity": 24.0
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class EquipmentUpdate(BaseModel):
|
||||
"""Schema for updating equipment"""
|
||||
name: Optional[str] = Field(None, min_length=1, max_length=255)
|
||||
type: Optional[EquipmentType] = None
|
||||
model: Optional[str] = Field(None, max_length=100)
|
||||
serial_number: Optional[str] = Field(None, max_length=100)
|
||||
location: Optional[str] = Field(None, max_length=255)
|
||||
status: Optional[EquipmentStatus] = None
|
||||
|
||||
# Installation and maintenance
|
||||
install_date: Optional[datetime] = None
|
||||
last_maintenance_date: Optional[datetime] = None
|
||||
next_maintenance_date: Optional[datetime] = None
|
||||
maintenance_interval_days: Optional[int] = Field(None, ge=1)
|
||||
|
||||
# Performance metrics
|
||||
efficiency_percentage: Optional[float] = Field(None, ge=0, le=100)
|
||||
uptime_percentage: Optional[float] = Field(None, ge=0, le=100)
|
||||
energy_usage_kwh: Optional[float] = Field(None, ge=0)
|
||||
|
||||
# Specifications
|
||||
power_kw: Optional[float] = Field(None, ge=0)
|
||||
capacity: Optional[float] = Field(None, ge=0)
|
||||
weight_kg: Optional[float] = Field(None, ge=0)
|
||||
|
||||
# Temperature monitoring
|
||||
current_temperature: Optional[float] = None
|
||||
target_temperature: Optional[float] = None
|
||||
|
||||
# Notes
|
||||
notes: Optional[str] = None
|
||||
|
||||
# Status flag
|
||||
is_active: Optional[bool] = None
|
||||
|
||||
model_config = ConfigDict(
|
||||
json_schema_extra={
|
||||
"example": {
|
||||
"status": "maintenance",
|
||||
"last_maintenance_date": "2024-01-15T00:00:00Z",
|
||||
"next_maintenance_date": "2024-04-15T00:00:00Z",
|
||||
"efficiency_percentage": 88.0
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class EquipmentResponse(BaseModel):
|
||||
"""Schema for equipment response"""
|
||||
id: UUID
|
||||
tenant_id: UUID
|
||||
name: str
|
||||
type: EquipmentType
|
||||
model: Optional[str] = None
|
||||
serial_number: Optional[str] = None
|
||||
location: Optional[str] = None
|
||||
status: EquipmentStatus
|
||||
|
||||
# Installation and maintenance
|
||||
install_date: Optional[datetime] = None
|
||||
last_maintenance_date: Optional[datetime] = None
|
||||
next_maintenance_date: Optional[datetime] = None
|
||||
maintenance_interval_days: Optional[int] = None
|
||||
|
||||
# Performance metrics
|
||||
efficiency_percentage: Optional[float] = None
|
||||
uptime_percentage: Optional[float] = None
|
||||
energy_usage_kwh: Optional[float] = None
|
||||
|
||||
# Specifications
|
||||
power_kw: Optional[float] = None
|
||||
capacity: Optional[float] = None
|
||||
weight_kg: Optional[float] = None
|
||||
|
||||
# Temperature monitoring
|
||||
current_temperature: Optional[float] = None
|
||||
target_temperature: Optional[float] = None
|
||||
|
||||
# Status
|
||||
is_active: bool
|
||||
notes: Optional[str] = None
|
||||
|
||||
# Timestamps
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
class EquipmentListResponse(BaseModel):
|
||||
"""Schema for paginated equipment list response"""
|
||||
equipment: List[EquipmentResponse]
|
||||
total_count: int
|
||||
page: int
|
||||
page_size: int
|
||||
|
||||
model_config = ConfigDict(
|
||||
json_schema_extra={
|
||||
"example": {
|
||||
"equipment": [],
|
||||
"total_count": 10,
|
||||
"page": 1,
|
||||
"page_size": 50
|
||||
}
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user