Files
SDI 12e4f17b62
CI / typecheck (push) Successful in 1m8s
CI / format (push) Failing after 1m6s
CI / lint (push) Failing after 49s
CI / test (push) Failing after 1m8s
first commit
2026-07-15 18:05:12 +09:00

120 lines
3.0 KiB
Python

from pydantic import BaseModel, Field
class TicketCreateRequest(BaseModel):
workspace_code: str = Field(default="", max_length=50)
requester_id: str = Field(..., min_length=1, max_length=100)
requester_tenant_id: str = Field(..., min_length=1, max_length=100)
requester_contact: str | None = Field(default=None, max_length=100)
title: str = Field(..., min_length=1, max_length=255)
description: str = Field(..., min_length=1)
category_code: str | None = Field(default=None, max_length=20)
ticket_type: str = Field(default="GENERAL")
requires_approval: bool = False
extra_fields: dict[str, str] = Field(default_factory=dict)
class TicketCreateResponse(BaseModel):
ticket_id: int
workspace_code: str
status_code: str
sync_status: str
message: str
class WorkspaceSummary(BaseModel):
workspace_code: str
workspace_name: str
workspace_type: str
class WorkspaceFormField(BaseModel):
field_code: str
label: str
field_type: str
required: bool = False
class WorkspaceFormTemplateResponse(BaseModel):
workspace_code: str
workspace_name: str
requires_approval: bool
fields: list[WorkspaceFormField]
class SupportActivityItem(BaseModel):
id: str
label: str
detail: str
timestamp: str
class SupportAttachmentRecord(BaseModel):
attachment_id: int
original_file_name: str
mime_type: str | None = None
file_size: int | None = None
created_at: str
class TicketCommentCreateRequest(BaseModel):
requester_id: str = Field(..., min_length=1, max_length=100)
requester_tenant_id: str = Field(..., min_length=1, max_length=100)
author_name: str | None = Field(default=None, max_length=100)
content: str = Field(..., min_length=1)
is_internal: bool = False
class TicketCommentUpdateRequest(BaseModel):
requester_id: str = Field(..., min_length=1, max_length=100)
requester_tenant_id: str = Field(..., min_length=1, max_length=100)
content: str = Field(..., min_length=1)
class TicketIssueLinkStatusSyncRequest(BaseModel):
linked: bool
class SupportTicketCommentRecord(BaseModel):
comment_id: int
ticket_id: int
author_id: str
author_tenant_id: str
author_name: str
content: str
is_internal: bool
created_at: str
updated_at: str
edited_at: str | None
class SupportTicketRecord(BaseModel):
ticket_id: int
workspace_code: str
workspace_name: str
title: str
description: str
requester_id: str
requester_tenant_id: str
requester_contact: str
category_code: str
ticket_type: str
requires_approval: bool
status_code: str
approval_status: str
sync_status: str
issue_link_status: str
created_at: str
updated_at: str
extra_fields: dict[str, str]
attachments: list[SupportAttachmentRecord] = Field(default_factory=list)
activity: list[SupportActivityItem]
class TicketMutationResponse(BaseModel):
ticket_id: int
status_code: str
approval_status: str
issue_link_status: str
updated_at: str