Spaces:
Sleeping
Sleeping
| from sqlalchemy import Column, Integer, String, DateTime, Text, JSON, Float, Boolean, ForeignKey | |
| from sqlalchemy.orm import declarative_base | |
| from sqlalchemy.orm import relationship | |
| from datetime import datetime | |
| Base = declarative_base() | |
| class Metric(Base): | |
| __tablename__ = "metrics" | |
| id = Column(Integer, primary_key=True) | |
| metric_id = Column(String(64), unique=True, nullable=False) | |
| name = Column(String(128), nullable=False) # e.g., "api_request_count", "build_duration" | |
| value = Column(Float, nullable=False) | |
| labels = Column(JSON, default={}) # e.g., {"service": "api", "endpoint": "/v1/builds"} | |
| timestamp = Column(DateTime, default=datetime.utcnow) | |
| source = Column(String(64), nullable=True) # e.g., "build_farm", "api_gateway" | |
| class Trace(Base): | |
| __tablename__ = "traces" | |
| id = Column(Integer, primary_key=True) | |
| trace_id = Column(String(64), unique=True, nullable=False) | |
| span_id = Column(String(64), nullable=False) | |
| parent_span_id = Column(String(64), nullable=True) | |
| operation = Column(String(128), nullable=False) # e.g., "generate", "build", "deploy" | |
| start_time = Column(DateTime, nullable=False) | |
| end_time = Column(DateTime, nullable=True) | |
| duration_ms = Column(Float, nullable=True) | |
| tags = Column(JSON, default={}) # e.g., {"provider": "openai", "model": "gpt-4"} | |
| error = Column(Text, nullable=True) | |
| class AuditLog(Base): | |
| __tablename__ = "audit_logs" | |
| id = Column(Integer, primary_key=True) | |
| audit_id = Column(String(64), unique=True, nullable=False) | |
| user_id = Column(String(64), nullable=True) # who performed the action | |
| action = Column(String(64), nullable=False) # e.g., "create_workflow", "deploy_app" | |
| resource = Column(String(128), nullable=True) # e.g., "workflow_id", "deployment_id" | |
| details = Column(JSON, default={}) | |
| ip = Column(String(45), nullable=True) | |
| timestamp = Column(DateTime, default=datetime.utcnow) | |
| class AILog(Base): | |
| __tablename__ = "ai_logs" | |
| id = Column(Integer, primary_key=True) | |
| log_id = Column(String(64), unique=True, nullable=False) | |
| session_id = Column(String(64), nullable=True) # for grouping AI interactions | |
| provider = Column(String(64), nullable=False) # e.g., "openai", "anthropic" | |
| model = Column(String(64), nullable=False) | |
| prompt = Column(Text, nullable=False) | |
| response = Column(Text, nullable=True) | |
| tokens_used = Column(Integer, default=0) | |
| cost = Column(Float, default=0.0) | |
| duration_ms = Column(Float, default=0.0) | |
| success = Column(Boolean, default=True) | |
| error = Column(Text, nullable=True) | |
| timestamp = Column(DateTime, default=datetime.utcnow) | |
| class Alert(Base): | |
| __tablename__ = "alerts" | |
| id = Column(Integer, primary_key=True) | |
| alert_id = Column(String(64), unique=True, nullable=False) | |
| name = Column(String(128), nullable=False) | |
| condition = Column(String(256), nullable=False) # e.g., "value > 100" | |
| severity = Column(String(16), default="warning") # info, warning, critical | |
| triggered = Column(Boolean, default=False) | |
| last_triggered_at = Column(DateTime, nullable=True) | |
| resolved_at = Column(DateTime, nullable=True) | |
| created_at = Column(DateTime, default=datetime.utcnow) | |