feat: complete multimodal ticket intake

This commit is contained in:
hailin
2026-07-27 18:59:28 +08:00
parent 96452934a3
commit 93065c0a00
39 changed files with 6443 additions and 267 deletions

View File

@@ -22,12 +22,24 @@ class TicketDraftAnswerIn(Schema):
question: str = ""
class TicketDraftImageOut(Schema):
class TicketDraftMaterialOut(Schema):
id: str
file_name: str
material_type: str
extension: str
claimed_mime_type: str
mime_type: str
file_size: int
status: str
scan_status: str
scan_result: dict
parse_status: str
parse_error: str
parsed_text_length: int
# Compatibility schema name retained for the legacy images field.
TicketDraftImageOut = TicketDraftMaterialOut
class TicketDraftMessageOut(Schema):
@@ -37,22 +49,39 @@ class TicketDraftMessageOut(Schema):
created_at: datetime
class TicketDraftAgentProgressOut(Schema):
stage: str
message: str
current_step: str
total_steps: int
retry_count: int
elapsed_ms: int
slow: bool
class TicketDraftOut(Schema):
public_id: str
status: str
revision: int
source_text: str
problem_valid: bool | None = None
invalid_reason: str
fields: dict
last_ai_fields: dict
field_evidence: dict
message_timeline: list[dict]
missing_fields: list[str]
questions: list[str]
guided_rounds: int
agent_run_public_id: str | None = None
images: list[TicketDraftImageOut]
agent_progress: TicketDraftAgentProgressOut
materials: list[TicketDraftMaterialOut]
images: list[TicketDraftMaterialOut]
messages: list[TicketDraftMessageOut]
decision: str
error_code: str
error_message: str
created_ticket: dict | None = None
confirmed_ticket: dict | None = None
created_at: datetime
updated_at: datetime
@@ -64,3 +93,7 @@ class TicketDraftAvailabilityOut(Schema):
reason: str
vision_available: bool
vision_reason: str
max_file_size: int
max_files: int
max_total_size: int
supported_extensions: list[str]