Files
ai-ticket-platform/backend/apps/tickets/schemas.py
2026-07-03 16:17:32 +08:00

136 lines
2.8 KiB
Python

from datetime import datetime
from ninja import Schema
class TicketIn(Schema):
title: str
description: str
category_code: str | None = None
priority: str = "medium"
problem_performance: str = ""
problem_object: str = ""
submitter_name: str = ""
submitter_org: str = ""
impact_scope: str = ""
environment: str = ""
related_system: str = ""
assignee_id: int | None = None
class TicketUpdateIn(Schema):
title: str | None = None
description: str | None = None
category_code: str | None = None
priority: str | None = None
problem_performance: str | None = None
problem_object: str | None = None
submitter_name: str | None = None
submitter_org: str | None = None
resolution: str | None = None
is_resolved: bool | None = None
replied_to_customer: bool | None = None
impact_scope: str | None = None
environment: str | None = None
related_system: str | None = None
assignee_id: int | None = None
class TicketStatusIn(Schema):
status: str
remark: str = ""
resolution: str = ""
is_resolved: bool | None = None
replied_to_customer: bool | None = None
class TicketUserOut(Schema):
id: int
username: str
display_name: str
class TicketCategoryOut(Schema):
id: int
code: str
name: str
description: str
class TicketOut(Schema):
id: int
ticket_no: str
title: str
description: str
category: TicketCategoryOut | None = None
category_code: str | None = None
status: str
priority: str
problem_performance: str
problem_object: str
submitter_name: str
submitter_org: str
ai_solution: str
resolution: str
is_resolved: bool
replied_to_customer: bool
impact_scope: str
environment: str
related_system: str
requester_id: int | None
assignee_id: int | None
requester: TicketUserOut | None = None
assignee: TicketUserOut | None = None
created_at: datetime
updated_at: datetime
class TicketListOut(Schema):
items: list[TicketOut]
page: int
page_size: int
total: int
total_pages: int
class TicketEventOut(Schema):
id: int
event_type: str
from_value: dict
to_value: dict
remark: str
operator: TicketUserOut | None = None
created_at: datetime
class TicketCommentIn(Schema):
content: str
comment_type: str = "user"
visibility: str = "internal"
class TicketCommentOut(Schema):
id: int
content: str
comment_type: str
visibility: str
created_at: datetime
class TicketAttachmentIn(Schema):
file_name: str
file_type: str = ""
mime_type: str = ""
file_size: int = 0
storage_path: str
class TicketAttachmentOut(Schema):
id: int
file_name: str
file_type: str
mime_type: str
file_size: int
storage_path: str
created_at: datetime