Refine travel reimbursement steward flow
Align planner, runtime rules, and policy assets so travel guidance matches the updated reimbursement workflow.
This commit is contained in:
@@ -8,11 +8,13 @@ from pydantic import BaseModel, Field
|
||||
StewardTaskType = Literal["expense_application", "reimbursement"]
|
||||
StewardAssignedAgent = Literal["application_assistant", "reimbursement_assistant"]
|
||||
StewardPlanningSource = Literal["llm_function_call", "rule_fallback"]
|
||||
StewardPlanNextAction = Literal["confirm_flow", "confirm_task", "delegate_task", "none"]
|
||||
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",
|
||||
"continue_selected_flow",
|
||||
"submit_current_application",
|
||||
"continue_next_task",
|
||||
"fill_current_slot",
|
||||
@@ -29,6 +31,8 @@ StewardTaskStatus = Literal[
|
||||
"blocked",
|
||||
]
|
||||
StewardConfirmationStatus = Literal["pending", "confirmed", "rejected"]
|
||||
StewardFlowId = Literal["travel_application", "travel_reimbursement"]
|
||||
StewardPendingFlowStatus = Literal["none", "pending", "confirmed", "rejected"]
|
||||
|
||||
|
||||
class StewardAttachmentInput(BaseModel):
|
||||
@@ -90,15 +94,39 @@ class StewardConfirmationAction(BaseModel):
|
||||
payload: dict[str, Any] = Field(default_factory=dict, description="确认后继续执行所需载荷。")
|
||||
|
||||
|
||||
class StewardCandidateFlow(BaseModel):
|
||||
flow_id: StewardFlowId = Field(description="候选业务流程。")
|
||||
label: str = Field(description="用户可见候选流程名称。")
|
||||
confidence: float = Field(default=0.0, ge=0.0, le=1.0, description="候选流程置信度。")
|
||||
reason: str = Field(default="", description="候选流程依据。")
|
||||
ontology_fields: dict[str, str] = Field(default_factory=dict, description="候选流程可继承的 canonical ontology 字段。")
|
||||
missing_fields: list[str] = Field(default_factory=list, description="候选流程仍缺失的 canonical ontology 字段。")
|
||||
|
||||
|
||||
class StewardPendingFlowConfirmation(BaseModel):
|
||||
status: StewardPendingFlowStatus = Field(default="none", description="候选流程确认状态。")
|
||||
source_message: str = Field(default="", description="触发候选流程确认的用户原始输入。")
|
||||
reason: str = Field(default="", description="需要确认流程方向的原因。")
|
||||
candidate_flows: list[StewardCandidateFlow] = Field(default_factory=list, description="候选业务流程。")
|
||||
|
||||
|
||||
class StewardPlanResponse(BaseModel):
|
||||
plan_id: str = Field(description="小财管家计划 ID。")
|
||||
plan_status: str = Field(default="needs_confirmation", description="计划状态。")
|
||||
planning_source: StewardPlanningSource = Field(default="rule_fallback", description="计划生成来源。")
|
||||
next_action: StewardPlanNextAction = Field(default="confirm_task", description="计划完成后的下一步动作。")
|
||||
conversation_id: str = Field(default="", description="持久化会话 ID。")
|
||||
steward_state: dict[str, Any] = Field(default_factory=dict, description="小财管家跨轮业务状态。")
|
||||
summary: str = Field(description="计划摘要。")
|
||||
thinking_events: list[StewardThinkingEvent] = Field(default_factory=list, description="过程摘要事件。")
|
||||
tasks: list[StewardTask] = Field(default_factory=list, description="拆解后的任务。")
|
||||
attachment_groups: list[StewardAttachmentGroup] = Field(default_factory=list, description="附件归集建议。")
|
||||
confirmation_groups: list[StewardConfirmationAction] = Field(default_factory=list, description="等待用户确认的动作。")
|
||||
pending_flow_confirmation: StewardPendingFlowConfirmation = Field(
|
||||
default_factory=StewardPendingFlowConfirmation,
|
||||
description="申请/报销流程不明确时等待用户确认的候选流程。",
|
||||
)
|
||||
candidate_flows: list[StewardCandidateFlow] = Field(default_factory=list, description="等待用户确认的候选流程快捷列表。")
|
||||
model_call_traces: list[dict[str, Any]] = Field(default_factory=list, description="模型工具调用轨迹。")
|
||||
|
||||
|
||||
@@ -146,4 +174,18 @@ class StewardRuntimeDecisionResponse(BaseModel):
|
||||
question: str = Field(default="", description="需要追问用户时展示的问题。")
|
||||
response_text: str = Field(default="", description="无需调用工具时给用户的简短回复。")
|
||||
rationale: str = Field(default="", description="面向用户的简短判断依据,不暴露推理链。")
|
||||
steward_state: dict[str, Any] = Field(default_factory=dict, description="小财管家更新后的跨轮业务状态。")
|
||||
model_call_traces: list[dict[str, Any]] = Field(default_factory=list, description="模型工具调用轨迹。")
|
||||
|
||||
|
||||
class StewardFlowStatePatch(BaseModel):
|
||||
active_flow: StewardFlowId = Field(description="本轮对话正在推进的业务流程。")
|
||||
flow_id: StewardFlowId = Field(description="需要合并字段的目标业务流程。")
|
||||
intent: str = Field(default="", description="本轮识别出的业务意图。")
|
||||
status: str = Field(default="collecting", description="流程状态。")
|
||||
fields: dict[str, Any] = Field(default_factory=dict, description="待写入流程的本体字段 patch。")
|
||||
missing_fields: list[str] = Field(default_factory=list, description="仍缺失的 canonical ontology 字段。")
|
||||
application_claim_id: str = Field(default="", description="出差申请流程已生成的申请单 ID。")
|
||||
linked_application_claim_id: str = Field(default="", description="报销流程关联的申请单 ID。")
|
||||
attachments: list[dict[str, Any]] = Field(default_factory=list, description="流程关联附件摘要。")
|
||||
evidence: list[dict[str, Any]] = Field(default_factory=list, description="字段来源证据。")
|
||||
|
||||
Reference in New Issue
Block a user