"""Nova Chat Schema 请求参数 Param、响应 Dto。 字段命名使用 camelCase alias,与前端 JSON 对齐。 """ from typing import Literal, Optional from pydantic import BaseModel, Field ChatRole = Literal["user", "assistant"] class ChatMessage(BaseModel): role: ChatRole content: str class NovaChatParam(BaseModel): message: str = Field(..., description="用户输入的消息") resume_id: int = Field(..., alias="resumeId", description="简历ID") job_id: Optional[int] = Field(default=None, alias="jobId", description="当前浏览岗位ID,不传则无岗位上下文") history: list[ChatMessage] = Field(default_factory=list, description="历史对话,前端维护") class NovaChatDto(BaseModel): message: str = Field(..., description="AI回复,Markdown格式")