Files
ai-ticket-platform/backend/apps/knowledge/schemas.py
2026-07-27 19:01:19 +08:00

196 lines
3.9 KiB
Python

from datetime import datetime
from typing import Any
from uuid import UUID
from ninja import Schema
class KnowledgeBaseIn(Schema):
name: str
description: str = ""
scope: str = ""
enabled: bool = True
class KnowledgeBaseOut(Schema):
id: int
name: str
description: str
scope: str
enabled: bool
created_at: datetime
updated_at: datetime
class KnowledgeDocumentIn(Schema):
knowledge_base_id: int
file_name: str
file_type: str = ""
content: str
class KnowledgeDocumentOut(Schema):
id: int
public_id: UUID
knowledge_base_id: int
file_name: str
file_type: str
extension: str
mime_type: str
file_size: int
sha256: str
scan_status: str
scan_result: dict[str, Any]
parse_status: str
parse_error: str
processing_attempts: int
task_id: str
has_original: bool
indexed_at: datetime | None
created_at: datetime
updated_at: datetime
class KnowledgeItemIn(Schema):
knowledge_base_id: int
title: str
problem: str
applicable_scope: str = ""
category_code: str = ""
related_system: str = ""
environment_scope: str = ""
error_code: str = ""
root_cause: str = ""
troubleshooting_steps: str = ""
solution: str
risk_note: str = ""
status: str = "draft"
class KnowledgeItemOut(Schema):
id: int
knowledge_base_id: int
title: str
problem: str
applicable_scope: str
category_code: str
related_system: str
environment_scope: str
error_code: str
root_cause: str
troubleshooting_steps: str
solution: str
risk_note: str
status: str
source_type: str
created_at: datetime
updated_at: datetime
class KnowledgeSearchIn(Schema):
query: str
knowledge_base_id: int | None = None
limit: int = 5
class KnowledgeSearchResultOut(Schema):
id: int
knowledge_base_id: int
title: str
source_type: str
content: str
score: float
metadata: dict
class TroubleshootingPlanIn(Schema):
knowledge_base_id: int
title: str
problem_pattern: str
applicable_scope: str = ""
category_code: str = ""
related_system: str = ""
environment_scope: str = ""
decision_rules: str = ""
troubleshooting_steps: str
risk_note: str = ""
source_ticket_id: int | None = None
class TroubleshootingPlanOut(Schema):
id: int
knowledge_base_id: int
title: str
problem_pattern: str
applicable_scope: str
category_code: str
related_system: str
environment_scope: str
decision_rules: str
troubleshooting_steps: str
risk_note: str
status: str
source_ticket_id: int | None
created_at: datetime
updated_at: datetime
class AssetVersionUpdateIn(Schema):
content: dict[str, Any]
change_summary: str | None = None
class AssetRevisionIn(Schema):
change_summary: str = ""
class AssetReviewIn(Schema):
comment: str = ""
class AssetRollbackIn(Schema):
source_version: int
change_summary: str = ""
class GovernedAssetVersionOut(Schema):
id: int
version: int
status: str
content: dict[str, Any]
change_summary: str
source_version: int | None
created_by_id: int | None
submitted_by_id: int | None
reviewed_by_id: int | None
review_comment: str
created_at: datetime
updated_at: datetime
submitted_at: datetime | None
reviewed_at: datetime | None
published_at: datetime | None
offline_at: datetime | None
class GovernedAssetOut(Schema):
public_id: UUID
asset_type: str
object_id: int
current_published_version: int | None
versions: list[GovernedAssetVersionOut]
created_at: datetime
updated_at: datetime
class AssetVersionComparisonOut(Schema):
left_version: int
right_version: int
changes: list[dict[str, Any]]
class AssetImpactOut(Schema):
ticket_reference_count: int
ticket_adoption_count: int
support_analysis_count: int
agent_run_ids: list[str]