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
153 lines
3.9 KiB
Python
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)],
|
|
]
|