# #region LlmModels [C:3] [TYPE Module] [SEMANTICS sqlalchemy, llm, model, schema, validate, provider] # @BRIEF SQLAlchemy models for LLM provider configuration and validation results. # @LAYER: Domain # @RELATION INHERITS_FROM -> MappingModels:Base import uuid from datetime import datetime from sqlalchemy import JSON, Boolean, Column, DateTime, String, Text, Time from .mapping import Base def generate_uuid(): return str(uuid.uuid4()) # #region ValidationPolicy [TYPE Class] # @BRIEF Defines a scheduled rule for validating a group of dashboards within an execution window. class ValidationPolicy(Base): __tablename__ = "validation_policies" id = Column(String, primary_key=True, default=generate_uuid) name = Column(String, nullable=False) environment_id = Column(String, nullable=False) is_active = Column(Boolean, default=True) dashboard_ids = Column(JSON, nullable=False) # Array of dashboard IDs schedule_days = Column(JSON, nullable=False) # Array of integers (0-6) window_start = Column(Time, nullable=False) window_end = Column(Time, nullable=False) notify_owners = Column(Boolean, default=True) custom_channels = Column(JSON, nullable=True) # List of external channels alert_condition = Column(String, default="FAIL_ONLY") # FAIL_ONLY, WARN_AND_FAIL, ALWAYS created_at = Column(DateTime, default=datetime.utcnow) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # #endregion ValidationPolicy # #region LLMProvider [TYPE Class] # @BRIEF SQLAlchemy model for LLM provider configuration. class LLMProvider(Base): __tablename__ = "llm_providers" id = Column(String, primary_key=True, default=generate_uuid) provider_type = Column(String, nullable=False) # openai, openrouter, kilo name = Column(String, nullable=False) base_url = Column(String, nullable=False) api_key = Column(String, nullable=False) # Should be encrypted default_model = Column(String, nullable=False) is_active = Column(Boolean, default=True) created_at = Column(DateTime, default=datetime.utcnow) # #endregion LLMProvider # #region ValidationRecord [TYPE Class] # @BRIEF SQLAlchemy model for dashboard validation history. class ValidationRecord(Base): __tablename__ = "llm_validation_results" id = Column(String, primary_key=True, default=generate_uuid) task_id = Column(String, nullable=True, index=True) # Reference to TaskRecord dashboard_id = Column(String, nullable=False, index=True) environment_id = Column(String, nullable=True, index=True) timestamp = Column(DateTime, default=datetime.utcnow) status = Column(String, nullable=False) # PASS, WARN, FAIL, UNKNOWN screenshot_path = Column(String, nullable=True) issues = Column(JSON, nullable=False) summary = Column(Text, nullable=False) raw_response = Column(Text, nullable=True) # #endregion ValidationRecord # #endregion LlmModels