Files
ai-ticket-platform/backend/apps/tickets/schemas.py
2026-07-02 10:36:52 +08:00

103 lines
1.9 KiB
Python

from datetime import datetime
from ninja import Schema
class TicketIn(Schema):
title: str
description: str
priority: str = "medium"
impact_scope: str = ""
environment: str = ""
related_system: str = ""
assignee_id: int | None = None
class TicketUpdateIn(Schema):
title: str | None = None
description: str | None = None
priority: str | 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 = ""
class TicketUserOut(Schema):
id: int
username: str
display_name: str
class TicketOut(Schema):
id: int
ticket_no: str
title: str
description: str
status: str
priority: str
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