Improve the frontend 3
This commit is contained in:
@@ -14,8 +14,7 @@ from pydantic import BaseModel, Field, validator
|
||||
from app.models.enums import (
|
||||
CustomerType, DeliveryMethod, PaymentTerms, PaymentMethod, PaymentStatus,
|
||||
CustomerSegment, PriorityLevel, OrderType, OrderStatus, OrderSource,
|
||||
SalesChannel, BusinessModel, ProcurementPlanType, ProcurementStrategy,
|
||||
RiskLevel, RequirementStatus, PlanStatus, DeliveryStatus
|
||||
SalesChannel, BusinessModel, DeliveryStatus
|
||||
)
|
||||
|
||||
|
||||
@@ -220,95 +219,6 @@ class OrderResponse(OrderBase):
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# ===== Procurement Schemas =====
|
||||
|
||||
class ProcurementRequirementBase(BaseModel):
|
||||
product_id: UUID
|
||||
product_name: str = Field(..., min_length=1, max_length=200)
|
||||
product_sku: Optional[str] = Field(None, max_length=100)
|
||||
product_category: Optional[str] = Field(None, max_length=100)
|
||||
product_type: str = Field(default="ingredient")
|
||||
required_quantity: Decimal = Field(..., gt=0)
|
||||
unit_of_measure: str = Field(..., min_length=1, max_length=50)
|
||||
safety_stock_quantity: Decimal = Field(default=Decimal("0.000"), ge=0)
|
||||
required_by_date: date
|
||||
priority: PriorityLevel = Field(default=PriorityLevel.NORMAL)
|
||||
preferred_supplier_id: Optional[UUID] = None
|
||||
quality_specifications: Optional[Dict[str, Any]] = None
|
||||
special_requirements: Optional[str] = None
|
||||
storage_requirements: Optional[str] = Field(None, max_length=200)
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
use_enum_values = True
|
||||
|
||||
|
||||
class ProcurementRequirementCreate(ProcurementRequirementBase):
|
||||
pass
|
||||
|
||||
|
||||
class ProcurementRequirementResponse(ProcurementRequirementBase):
|
||||
id: UUID
|
||||
plan_id: UUID
|
||||
requirement_number: str
|
||||
total_quantity_needed: Decimal
|
||||
current_stock_level: Decimal
|
||||
available_stock: Decimal
|
||||
net_requirement: Decimal
|
||||
order_demand: Decimal
|
||||
production_demand: Decimal
|
||||
forecast_demand: Decimal
|
||||
status: str
|
||||
estimated_unit_cost: Optional[Decimal]
|
||||
estimated_total_cost: Optional[Decimal]
|
||||
supplier_name: Optional[str]
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class ProcurementPlanBase(BaseModel):
|
||||
plan_date: date
|
||||
plan_period_start: date
|
||||
plan_period_end: date
|
||||
planning_horizon_days: int = Field(default=14, ge=1, le=365)
|
||||
plan_type: ProcurementPlanType = Field(default=ProcurementPlanType.REGULAR)
|
||||
priority: PriorityLevel = Field(default=PriorityLevel.NORMAL)
|
||||
business_model: Optional[BusinessModel] = None
|
||||
procurement_strategy: ProcurementStrategy = Field(default=ProcurementStrategy.JUST_IN_TIME)
|
||||
safety_stock_buffer: Decimal = Field(default=Decimal("20.00"), ge=0, le=100)
|
||||
special_requirements: Optional[str] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
use_enum_values = True
|
||||
|
||||
|
||||
class ProcurementPlanCreate(ProcurementPlanBase):
|
||||
requirements: List[ProcurementRequirementCreate] = Field(..., min_items=1)
|
||||
|
||||
|
||||
class ProcurementPlanResponse(ProcurementPlanBase):
|
||||
id: UUID
|
||||
tenant_id: UUID
|
||||
plan_number: str
|
||||
status: str
|
||||
total_requirements: int
|
||||
total_estimated_cost: Decimal
|
||||
total_approved_cost: Decimal
|
||||
total_demand_orders: int
|
||||
supply_risk_level: str
|
||||
approved_at: Optional[datetime]
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
requirements: List[ProcurementRequirementResponse] = []
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# ===== Dashboard and Analytics Schemas =====
|
||||
|
||||
class OrdersDashboardSummary(BaseModel):
|
||||
@@ -371,26 +281,3 @@ class DemandRequirements(BaseModel):
|
||||
earliest_delivery: datetime
|
||||
latest_delivery: datetime
|
||||
average_lead_time_hours: int
|
||||
|
||||
|
||||
class ProcurementPlanningData(BaseModel):
|
||||
"""Data for procurement planning decisions"""
|
||||
planning_date: date
|
||||
planning_horizon_days: int
|
||||
|
||||
# Demand forecast
|
||||
demand_forecast: List[Dict[str, Any]]
|
||||
|
||||
# Current inventory status
|
||||
inventory_levels: Dict[str, Any]
|
||||
|
||||
# Supplier information
|
||||
supplier_performance: Dict[str, Any]
|
||||
|
||||
# Risk factors
|
||||
supply_risks: List[str]
|
||||
demand_volatility: Decimal
|
||||
|
||||
# Recommendations
|
||||
recommended_purchases: List[Dict[str, Any]]
|
||||
critical_shortages: List[Dict[str, Any]]
|
||||
|
||||
Reference in New Issue
Block a user