143 lines
3.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 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
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
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
audit_trace: list[AuditTraceItem]