models.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # -*- coding: utf-8 -*-
  2. """
  3. Pydantic 请求/响应模型 —— 通风数据解读 API
  4. """
  5. from pydantic import BaseModel, Field
  6. # ── 点选解读请求 ──
  7. class TunClickInterpretRequest(BaseModel):
  8. """点选解读请求"""
  9. tun_id: str = Field(..., description="巷道ID")
  10. tun_name: str = Field(..., description="巷道名称")
  11. mode: str = Field("plan", description="解读模式:plan(智能体+技能,默认)或 fast(直接生成报告)")
  12. class DeviceClickInterpretRequest(BaseModel):
  13. """点选解读请求"""
  14. device_id: str = Field(..., description="设备ID")
  15. device_name: str = Field(..., description="设备名称")
  16. device_type: str = Field(..., description="设备类型")
  17. mode: str = Field("plan", description="解读模式:plan(智能体+技能,默认)或 fast(直接生成报告)")
  18. # ── 对话请求/响应 ──
  19. class ChatRequest(BaseModel):
  20. """对话请求"""
  21. message: str = Field(..., description="用户消息")
  22. session_id: str | None = Field(None, description="会话ID,新会话可不传")
  23. thread_id: str | None = Field(None, description="LangGraph 线程ID,用于多轮对话状态恢复")
  24. class ChatHistoryResponse(BaseModel):
  25. """聊天历史响应"""
  26. session_id: str
  27. messages: list[dict]
  28. total: int