init
This commit is contained in:
65
backend/app/schemas/calculate.py
Normal file
65
backend/app/schemas/calculate.py
Normal file
@@ -0,0 +1,65 @@
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class BoundingBox(BaseModel):
|
||||
x: float
|
||||
y: float
|
||||
z: float
|
||||
|
||||
|
||||
class FileInfoResponse(BaseModel):
|
||||
filename: str
|
||||
format: str
|
||||
volume_cm3: float
|
||||
surface_area_cm2: float
|
||||
bounding_box_mm: BoundingBox
|
||||
is_watertight: bool
|
||||
triangle_count: int
|
||||
|
||||
|
||||
class MaterialInfo(BaseModel):
|
||||
id: int
|
||||
name: str
|
||||
density_g_cm3: float
|
||||
price_per_gram: float
|
||||
|
||||
|
||||
class CalculationResult(BaseModel):
|
||||
material: MaterialInfo
|
||||
weight_grams: float
|
||||
material_cost_rub: float
|
||||
print_time_hours: float
|
||||
time_cost_rub: float
|
||||
post_processing_cost_rub: float
|
||||
subtotal_rub: float
|
||||
quantity: int
|
||||
quantity_discount_percent: int
|
||||
total_rub: float
|
||||
estimated_days: int
|
||||
|
||||
|
||||
class CalculateResponse(BaseModel):
|
||||
success: bool = True
|
||||
calculation_id: str
|
||||
file_info: FileInfoResponse
|
||||
calculation: CalculationResult
|
||||
|
||||
|
||||
class AdvisorRequest(BaseModel):
|
||||
task_description: str
|
||||
budget_preference: str = "optimal"
|
||||
file_info: dict | None = None
|
||||
|
||||
|
||||
class AdvisorAlternative(BaseModel):
|
||||
material_id: int
|
||||
name: str
|
||||
why: str
|
||||
|
||||
|
||||
class AdvisorResponse(BaseModel):
|
||||
recommended_material_id: int
|
||||
recommended_material_name: str
|
||||
reasoning: str
|
||||
alternatives: list[AdvisorAlternative] = []
|
||||
questions: list[str] = []
|
||||
Reference in New Issue
Block a user