from datetime import datetime from app.core.utils import now_tw from sqlalchemy import Boolean, Column, Integer, String, DateTime, ForeignKey from sqlalchemy.orm import relationship from app.core.database import Base class Account(Base): __tablename__ = "accounts" id = Column(Integer, primary_key=True, index=True, autoincrement=True) tenant_id = Column(Integer, ForeignKey("tenants.id", ondelete="CASCADE"), nullable=False, index=True) account_code = Column(String(20), unique=True, nullable=False, index=True) # prefix + seq_no 4碼左補0 sso_account = Column(String(100), nullable=False) sso_uuid = Column(String(100), unique=True) # Keycloak UUID,首次建立後回寫 notification_email = Column(String(200), nullable=False) email = Column(String(200)) # sso_account@tenants.domain legal_name = Column(String(200)) english_name = Column(String(200)) quota_limit = Column(Integer, nullable=False, default=20) # GB is_active = Column(Boolean, nullable=False, default=True) default_password = Column(String(200)) seq_no = Column(Integer, nullable=False) # 同租戶內流水號 created_at = Column(DateTime, nullable=False, default=now_tw) updated_at = Column(DateTime, nullable=False, default=now_tw, onupdate=now_tw) tenant = relationship("Tenant", back_populates="accounts") schedule_results = relationship("AccountScheduleResult", back_populates="account")