Files
llm-automation-docs-and-rem…/src/datacenter_docs/api/models.py
LLM Automation System 1ba5ce851d Initial commit: LLM Automation Docs & Remediation Engine v2.0
Features:
- Automated datacenter documentation generation
- MCP integration for device connectivity
- Auto-remediation engine with safety checks
- Multi-factor reliability scoring (0-100%)
- Human feedback learning loop
- Pattern recognition and continuous improvement
- Agentic chat support with AI
- API for ticket resolution
- Frontend React with Material-UI
- CI/CD pipelines (GitLab + Gitea)
- Docker & Kubernetes deployment
- Complete documentation and guides

v2.0 Highlights:
- Auto-remediation with write operations (disabled by default)
- Reliability calculator with 4-factor scoring
- Human feedback system for continuous learning
- Pattern-based progressive automation
- Approval workflow for critical actions
- Full audit trail and rollback capability
2025-10-17 23:47:28 +00:00

153 lines
3.9 KiB
Python

"""
MongoDB Models using Beanie ODM
"""
from datetime import datetime
from typing import Optional, List, Dict, Any
from beanie import Document, Indexed
from pydantic import Field
class Ticket(Document):
"""Ticket document for MongoDB"""
ticket_id: Indexed(str, unique=True) # External ticket ID
title: str
description: str
priority: str = "medium" # low, medium, high, critical
category: Optional[str] = None # network, server, storage, etc.
requester: Optional[str] = None
# Status and resolution
status: str = "processing" # processing, resolved, failed
resolution: Optional[str] = None
suggested_actions: Optional[List[str]] = None
related_docs: Optional[List[Dict[str, str]]] = None
# Metrics
confidence_score: Optional[float] = None
processing_time: Optional[float] = None
# Metadata
metadata: Dict[str, Any] = Field(default_factory=dict)
# Timestamps
created_at: datetime = Field(default_factory=datetime.now)
updated_at: datetime = Field(default_factory=datetime.now)
class Settings:
name = "tickets"
indexes = [
"ticket_id",
"status",
"category",
"created_at",
[("status", 1), ("created_at", -1)], # Compound index
]
class DocumentationSection(Document):
"""Documentation section metadata"""
section_id: Indexed(str, unique=True)
name: str
description: Optional[str] = None
# Generation info
last_generated: Optional[datetime] = None
generation_status: str = "pending" # pending, processing, completed, failed
generation_time: Optional[float] = None
# Content metadata
file_path: Optional[str] = None
file_size: Optional[int] = None
checksum: Optional[str] = None
# Statistics
total_chunks: Optional[int] = None
total_tokens: Optional[int] = None
# Timestamps
created_at: datetime = Field(default_factory=datetime.now)
updated_at: datetime = Field(default_factory=datetime.now)
class Settings:
name = "documentation_sections"
class ChatSession(Document):
"""Chat session for tracking conversations"""
session_id: Indexed(str, unique=True)
user_id: Optional[str] = None
# Messages
messages: List[Dict[str, Any]] = Field(default_factory=list)
# Session metadata
started_at: datetime = Field(default_factory=datetime.now)
last_activity: datetime = Field(default_factory=datetime.now)
total_messages: int = 0
# Context
context: Dict[str, Any] = Field(default_factory=dict)
class Settings:
name = "chat_sessions"
indexes = [
"session_id",
"user_id",
"last_activity",
]
class SystemMetric(Document):
"""System metrics and statistics"""
metric_type: str # tickets, api_calls, generation, chat
metric_name: str
value: float
# Dimensions
dimensions: Dict[str, str] = Field(default_factory=dict)
# Timestamp
timestamp: datetime = Field(default_factory=datetime.now)
class Settings:
name = "system_metrics"
indexes = [
"metric_type",
"metric_name",
"timestamp",
[("metric_type", 1), ("timestamp", -1)],
]
class AuditLog(Document):
"""Audit log for tracking system actions"""
action: str
actor: Optional[str] = None
resource_type: str
resource_id: str
# Details
details: Dict[str, Any] = Field(default_factory=dict)
# Result
success: bool = True
error_message: Optional[str] = None
# Timestamp
timestamp: datetime = Field(default_factory=datetime.now)
class Settings:
name = "audit_logs"
indexes = [
"action",
"resource_type",
"timestamp",
[("resource_type", 1), ("timestamp", -1)],
]