196 lines
3.9 KiB
Python
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]
|