43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
"""求职助手 Agent 对话 Schema
|
|
|
|
请求参数 Param、响应 Dto。
|
|
字段命名使用 camelCase alias,与前端 JSON 对齐。
|
|
"""
|
|
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
ChatRole = Literal["user", "assistant"]
|
|
|
|
|
|
class ChatMessage(BaseModel):
|
|
role: ChatRole
|
|
content: str
|
|
|
|
|
|
class JobAgentChatParam(BaseModel):
|
|
message: str = Field(..., description="用户输入的消息")
|
|
resume_id: int = Field(..., alias="resumeId", description="简历ID")
|
|
history: list[ChatMessage] = Field(default_factory=list, description="对话历史")
|
|
job_categories: list[str] = Field(default_factory=list, alias="jobCategories", description="意向岗位类型名称")
|
|
regions: list[str] = Field(default_factory=list, alias="regions", description="意向城市名称")
|
|
industries: list[str] = Field(default_factory=list, alias="industries", description="意向行业名称")
|
|
|
|
|
|
class ToolParams(BaseModel):
|
|
preference: str = Field(default="", description="用户岗位偏好描述")
|
|
|
|
|
|
class JobAgentChatDto(BaseModel):
|
|
message: str = Field(..., description="AI回复文本,不超过200字")
|
|
tool: str | None = Field(default=None, description="前端需执行的工具:recommend / editPreference / null")
|
|
tool_params: ToolParams | None = Field(default=None, alias="toolParams", description="工具参数")
|
|
|
|
model_config = {"populate_by_name": True}
|
|
|
|
|
|
class OptimizeResumeParam(BaseModel):
|
|
resume_id: int = Field(..., alias="resumeId", description="简历ID")
|
|
job_id: int = Field(..., alias="jobId", description="岗位ID")
|