feat: 报销审批流重构与管家计划全链路贯通
- 重构报销状态注册表、审批流路由与平台风险标记 - 完善管家意图规划器与模型计划构建器全链路 - 新增 OCR Worker 脚本、数据库会话管理与通知状态 - 优化文档中心、日志视图、预算中心与员工管理交互 - 增强工作台摘要、图标资源与全局主题样式 - 补充审批路由、状态注册、OCR 服务与管家规划器测试覆盖
This commit is contained in:
@@ -8,6 +8,18 @@ from pydantic import BaseModel, Field
|
||||
StewardTaskType = Literal["expense_application", "reimbursement"]
|
||||
StewardAssignedAgent = Literal["application_assistant", "reimbursement_assistant"]
|
||||
StewardPlanningSource = Literal["llm_function_call", "rule_fallback"]
|
||||
StewardSlotDecisionSource = Literal["llm_function_call", "rule_fallback"]
|
||||
StewardSlotNextAction = Literal["ask_user", "render_preview"]
|
||||
StewardRuntimeDecisionSource = Literal["llm_function_call", "rule_fallback"]
|
||||
StewardRuntimeNextAction = Literal[
|
||||
"plan_new_tasks",
|
||||
"submit_current_application",
|
||||
"continue_next_task",
|
||||
"fill_current_slot",
|
||||
"ask_user",
|
||||
"cancel_current_action",
|
||||
"no_op",
|
||||
]
|
||||
StewardTaskStatus = Literal[
|
||||
"planned",
|
||||
"needs_confirmation",
|
||||
@@ -88,3 +100,50 @@ class StewardPlanResponse(BaseModel):
|
||||
attachment_groups: list[StewardAttachmentGroup] = Field(default_factory=list, description="附件归集建议。")
|
||||
confirmation_groups: list[StewardConfirmationAction] = Field(default_factory=list, description="等待用户确认的动作。")
|
||||
model_call_traces: list[dict[str, Any]] = Field(default_factory=list, description="模型工具调用轨迹。")
|
||||
|
||||
|
||||
class StewardSlotOption(BaseModel):
|
||||
label: str = Field(description="用户可见选项文案。")
|
||||
value: str = Field(description="写回本体字段的选项值。")
|
||||
field_key: str = Field(description="对应 canonical ontology field。")
|
||||
description: str = Field(default="", description="选项说明。")
|
||||
|
||||
|
||||
class StewardSlotDecisionRequest(BaseModel):
|
||||
task_type: StewardTaskType = Field(description="当前小财管家正在推进的任务类型。")
|
||||
user_message: str = Field(description="用户原始话术或小财管家携带的任务上下文。")
|
||||
ontology_fields: dict[str, str] = Field(default_factory=dict, description="当前已抽取的 canonical ontology 字段。")
|
||||
missing_fields: list[str] = Field(default_factory=list, description="上游意图识别给出的 canonical 缺失字段。")
|
||||
task_context: dict[str, Any] = Field(default_factory=dict, description="当前任务、附件、申请预览等上下文。")
|
||||
|
||||
|
||||
class StewardSlotDecisionResponse(BaseModel):
|
||||
decision_source: StewardSlotDecisionSource = Field(default="rule_fallback", description="字段决策来源。")
|
||||
next_action: StewardSlotNextAction = Field(description="下一步应追问用户还是展示核对结果。")
|
||||
required_fields: list[str] = Field(default_factory=list, description="模型认为当前业务需要的 canonical 字段。")
|
||||
missing_fields: list[str] = Field(default_factory=list, description="当前仍缺失的 canonical 字段。")
|
||||
question: str = Field(default="", description="需要追问时展示给用户的问题。")
|
||||
options: list[StewardSlotOption] = Field(default_factory=list, description="可直接选择的补充选项。")
|
||||
rationale: str = Field(default="", description="面向用户的简短判断依据,不暴露推理链。")
|
||||
model_call_traces: list[dict[str, Any]] = Field(default_factory=list, description="模型工具调用轨迹。")
|
||||
|
||||
|
||||
class StewardRuntimeDecisionRequest(BaseModel):
|
||||
user_message: str = Field(description="用户当前输入。")
|
||||
session_type: str = Field(default="steward", description="当前前端会话类型。")
|
||||
runtime_state: dict[str, Any] = Field(default_factory=dict, description="小财管家运行时上下文。")
|
||||
context_json: dict[str, Any] = Field(default_factory=dict, description="调用方补充上下文。")
|
||||
|
||||
|
||||
class StewardRuntimeDecisionResponse(BaseModel):
|
||||
decision_source: StewardRuntimeDecisionSource = Field(default="rule_fallback", description="运行时决策来源。")
|
||||
next_action: StewardRuntimeNextAction = Field(description="小财管家下一步动作。")
|
||||
target_task_id: str = Field(default="", description="关联的小财管家任务 ID。")
|
||||
target_message_id: str = Field(default="", description="关联的前端消息 ID。")
|
||||
field_key: str = Field(default="", description="补字段时对应 canonical ontology field。")
|
||||
field_value: str = Field(default="", description="补字段时用户提供的字段值。")
|
||||
confirmation_required: bool = Field(default=False, description="执行该动作前是否仍需要用户二次确认。")
|
||||
question: str = Field(default="", description="需要追问用户时展示的问题。")
|
||||
response_text: str = Field(default="", description="无需调用工具时给用户的简短回复。")
|
||||
rationale: str = Field(default="", description="面向用户的简短判断依据,不暴露推理链。")
|
||||
model_call_traces: list[dict[str, Any]] = Field(default_factory=list, description="模型工具调用轨迹。")
|
||||
|
||||
Reference in New Issue
Block a user