- 补齐 tool_call 和 edge 验证链路的 duration_ms 计算与返回 - 任务详情和任务报告新增 result_summary_detail 结构化摘要 - 摘要中补充最终状态、失败原因、software-a 摘要、审批摘要、验证摘要 - 软件A层术语统一为“最小能力实现” - 同步更新 README、当前进度总结和相关设计文档 - 补充并通过对应自动化测试
177 lines
4.2 KiB
Python
177 lines
4.2 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class ParsedIntent(BaseModel):
|
|
action_type: str | None = None
|
|
app_code: str | None = None
|
|
env: str | None = None
|
|
version: str | None = None
|
|
|
|
|
|
class CreateTaskRequest(BaseModel):
|
|
input_text: str
|
|
channel: str
|
|
session_id: str
|
|
tenant_id: str
|
|
context: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class CreateTaskData(BaseModel):
|
|
task_id: str
|
|
parsed_intent: ParsedIntent
|
|
missing_slots: list[str]
|
|
risk_level: str
|
|
task_status: str
|
|
next_action: str
|
|
|
|
|
|
class ConfirmTaskRequest(BaseModel):
|
|
confirmed: bool
|
|
comment: str | None = None
|
|
|
|
|
|
class CancelTaskRequest(BaseModel):
|
|
reason: str | None = None
|
|
|
|
|
|
class ConfirmTaskData(BaseModel):
|
|
task_id: str
|
|
task_status: str
|
|
approval_status: str
|
|
approval_id: str | None = None
|
|
software_a_task_id: str | None = None
|
|
software_a_task_status: str | None = None
|
|
|
|
|
|
class ToolCallItem(BaseModel):
|
|
tool_name: str
|
|
success: bool
|
|
|
|
|
|
class VerificationResult(BaseModel):
|
|
process_ok: bool | None = None
|
|
port_ok: bool | None = None
|
|
http_ok: bool | None = None
|
|
log_error_count: int | None = None
|
|
|
|
|
|
class ApprovalSummary(BaseModel):
|
|
approval_id: str | None = None
|
|
approval_status: str | None = None
|
|
reason: str | None = None
|
|
|
|
|
|
class SoftwareAResultSummary(BaseModel):
|
|
software_a_task_id: str | None = None
|
|
task_status: str | None = None
|
|
progress_percent: int | None = None
|
|
error_detail: str | None = None
|
|
started_at: str | None = None
|
|
finished_at: str | None = None
|
|
|
|
|
|
class VerificationResultSummary(BaseModel):
|
|
step_id: str | None = None
|
|
step_status: str | None = None
|
|
success: bool | None = None
|
|
duration_ms: int | None = None
|
|
message: str | None = None
|
|
|
|
|
|
class ResultSummaryDetail(BaseModel):
|
|
final_status: str
|
|
final_reason: str | None = None
|
|
approval: ApprovalSummary | None = None
|
|
software_a: SoftwareAResultSummary | None = None
|
|
verification: VerificationResultSummary | None = None
|
|
|
|
|
|
class TaskDetailData(BaseModel):
|
|
task_id: str
|
|
task_status: str
|
|
approval_status: str
|
|
risk_level: str
|
|
intent: ParsedIntent
|
|
software_a_task_id: str | None = None
|
|
software_a_task_status: str | None = None
|
|
tool_calls: list[ToolCallItem]
|
|
verification_result: VerificationResult | None = None
|
|
summary: str | None = None
|
|
result_summary_detail: ResultSummaryDetail | None = None
|
|
|
|
|
|
class TaskBasic(BaseModel):
|
|
task_id: str
|
|
task_status: str
|
|
approval_status: str
|
|
risk_level: str
|
|
created_at: str
|
|
updated_at: str
|
|
confirmed_at: str | None = None
|
|
|
|
|
|
class ApprovalTraceItem(BaseModel):
|
|
approval_id: str
|
|
approval_status: str
|
|
risk_level: str
|
|
approvers: list[str]
|
|
reason: str | None = None
|
|
created_at: str
|
|
updated_at: str
|
|
|
|
|
|
class ToolTraceItem(BaseModel):
|
|
tool_call_id: str
|
|
request_id: str | None = None
|
|
operator_user_id: str | None = None
|
|
operator_user_name: str | None = None
|
|
tool_name: str
|
|
success: bool
|
|
duration_ms: int | None = None
|
|
started_at: str | None = None
|
|
finished_at: str | None = None
|
|
request_payload: dict[str, Any]
|
|
response_payload: dict[str, Any]
|
|
|
|
|
|
class VerificationTraceItem(BaseModel):
|
|
step_id: str
|
|
edge_id: str
|
|
tool_name: str
|
|
step_status: str
|
|
success: bool | None = None
|
|
duration_ms: int | None = None
|
|
message: str | None = None
|
|
params: dict[str, Any]
|
|
result_data: dict[str, Any]
|
|
evidence: dict[str, Any]
|
|
started_at: str | None = None
|
|
finished_at: str | None = None
|
|
|
|
|
|
class AuditTraceItem(BaseModel):
|
|
audit_id: str
|
|
request_id: str | None = None
|
|
action: str
|
|
result: str
|
|
operator_user_id: str | None = None
|
|
operator_user_name: str | None = None
|
|
target: str | None = None
|
|
detail: dict[str, Any]
|
|
timestamp: str
|
|
|
|
|
|
class TaskReportData(BaseModel):
|
|
task_basic: TaskBasic
|
|
intent_snapshot: ParsedIntent
|
|
approval_trace: list[ApprovalTraceItem]
|
|
tool_trace: list[ToolTraceItem]
|
|
verification_trace: list[VerificationTraceItem]
|
|
result_summary: str | None = None
|
|
result_summary_detail: ResultSummaryDetail | None = None
|
|
audit_trace: list[AuditTraceItem]
|