"""租户模型。 投资机构和被投企业都属于某个租户。多租户隔离的基础。 """ import uuid from datetime import datetime, timezone from sqlalchemy import DateTime, String from sqlalchemy.orm import Mapped, mapped_column from app.core.database import Base from app.core.types import JSONBType class Tenant(Base): """租户(投资机构)。""" __tablename__ = "tenants" id: Mapped[str] = mapped_column(String(36), primary_key=True, default=lambda: str(uuid.uuid4())) name: Mapped[str] = mapped_column(String(200), nullable=False, comment="租户名称") type: Mapped[str] = mapped_column(String(50), nullable=False, default="vc", comment="租户类型:vc/cvc/gov/holdings") config_json: Mapped[dict | None] = mapped_column(JSONBType, nullable=True, comment="租户配置") created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc) ) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc), )