models.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from __future__ import annotations
  2. from datetime import date
  3. from typing import Optional
  4. from pydantic import BaseModel, Field
  5. class InquiryRequest(BaseModel):
  6. customer: str
  7. origin: str = "青岛港"
  8. destination: str = "洛杉矶港"
  9. cargo_name: str = "家电"
  10. cargo_volume: float = Field(default=2, gt=0)
  11. evaluation_date: date = date(2026, 7, 20)
  12. requested_departure_date: date = date(2026, 7, 27)
  13. max_transit_days: float = Field(default=21, gt=0)
  14. target_amount: float = Field(default=54000, gt=0)
  15. preferred_route_type: str = "直航"
  16. dangerous_goods: bool = False
  17. salesperson_adjustment: float = 0
  18. class CandidateRecord(BaseModel):
  19. quote_uri: str
  20. quote_no: str
  21. product_uri: str
  22. product_code: str
  23. product_name: str
  24. brand_name: str = ""
  25. transport_mode: str = ""
  26. offering_uri: str
  27. offering_code: str = ""
  28. supplier_uri: str
  29. supplier_name: str
  30. schedule_uri: str = ""
  31. schedule_code: str = ""
  32. route_type: str = ""
  33. service_form: str = ""
  34. origin: str = ""
  35. destination: str = ""
  36. currency: str
  37. supplier_cost: float
  38. valid_from: Optional[date] = None
  39. valid_to: Optional[date] = None
  40. departure_date: Optional[date] = None
  41. arrival_date: Optional[date] = None
  42. transit_days: float = 0
  43. booking_success_rate: float = 0.8
  44. space_release_success_rate: float = 0.8
  45. etd_on_time_rate: float = 0.85
  46. eta_on_time_rate: float = 0.85
  47. supplier_active: bool = True
  48. capacity_available: bool = True
  49. supports_dangerous_goods: bool = False
  50. dangerous_goods_only: bool = False
  51. agency_level: str = ""
  52. offering_channel: str = ""
  53. capacity_commitment: str = ""
  54. spot_space_status: str = "需确认"
  55. spot_space_teu: float = 0
  56. solution_assurance: float = 0.72
  57. service_support_score: float = 0.72
  58. relationship_tier: str = "基础合作"
  59. relationship_strength: float = 0.60
  60. low_price_access_probability: float = 0.50
  61. priority_space_probability: float = 0.60
  62. relationship_evidence: str = "按标准合作机制执行"