"""
系統功能快取 Model
從 System Admin 服務同步的系統功能定義 (只讀副本)
"""
from datetime import datetime
from sqlalchemy import Column, Integer, String, Boolean, DateTime, UniqueConstraint, Index

from app.db.base import Base


class SystemFunctionCache(Base):
    """系統功能快取表"""

    __tablename__ = "system_functions_cache"
    __table_args__ = (
        UniqueConstraint("function_code", name="uq_function_code"),
        Index("idx_func_cache_service", "service_code"),
        Index("idx_func_cache_category", "function_category"),
    )

    id = Column(Integer, primary_key=True, comment="與 System Admin 的 id 一致")
    service_code = Column(String(50), nullable=False, comment="服務代碼: hr/erp/mail/ai")
    function_code = Column(String(100), nullable=False, comment="功能代碼: HR_EMPLOYEE_VIEW")
    function_name = Column(String(200), nullable=False, comment="功能名稱")
    function_category = Column(String(50), nullable=True,
                               comment="功能分類: query/manage/approve/report")
    is_active = Column(Boolean, default=True, nullable=False)
    synced_at = Column(DateTime, default=datetime.utcnow, nullable=False, comment="最後同步時間")

    def __repr__(self):
        return f"<SystemFunctionCache {self.function_code} ({self.service_code})>"
