Spaces:
Sleeping
Sleeping
| import uuid | |
| import datetime | |
| import json | |
| from sqlalchemy import Column, String, DateTime, Text, Integer, Float, ForeignKey | |
| from sqlalchemy.orm import relationship | |
| from app.database import Base | |
| class MLModel(Base): | |
| __tablename__ = "ml_models" | |
| id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4())) | |
| user_id = Column(String, ForeignKey("users.id"), nullable=False) | |
| name = Column(String, nullable=False) | |
| model_type = Column(String, nullable=False) # churn, lead | |
| feature_names_json = Column(Text, nullable=False) # JSON list of feature names | |
| encoders_json = Column(Text, nullable=False) # JSON dict of label encoders | |
| model_binary = Column(Text, nullable=False) # base64 encoded XGBoost model | |
| metrics_json = Column(Text, default="{}") # accuracy, roc_auc, etc. | |
| summary_json = Column(Text, default="{}") # n_rows, n_features, etc. | |
| n_rows = Column(Integer, default=0) | |
| n_features = Column(Integer, default=0) | |
| created_at = Column(DateTime, default=datetime.datetime.utcnow) | |
| user = relationship("User", back_populates="ml_models") | |
| def get_feature_names(self): | |
| return json.loads(self.feature_names_json) | |
| def get_metrics(self): | |
| return json.loads(self.metrics_json) | |
| def get_summary(self): | |
| return json.loads(self.summary_json) | |