# ============================================================================= # 企微IT智能服务台 — 会议室预定快照模型(P2统计用) # ============================================================================= # 说明:每日定时拉取预定记录存入本地数据库,作为统计快照(非实时数据源) # 实时预定状态仍以企微API为唯一数据源,此表仅用于P2统计分析 # ============================================================================= from datetime import date, datetime from sqlalchemy import Date, DateTime, Integer, String, func from sqlalchemy.orm import Mapped, mapped_column from app.database import Base class MeetingroomBookingSnapshot(Base): """会议室预定记录快照模型(P2统计用)。 每日定时拉取企微预定记录,存入本地作为统计快照。 非实时数据源 — 实时预定状态仍以企微API为准。 Attributes: id: 自增主键 meetingroom_id: 企微会议室ID booking_id: 企微预定ID subject: 会议主题 booker: 预定人userid start_time: 会议开始时间 end_time: 会议结束时间 status: 预定状态(0=已预定, 1=已取消) snapshot_date: 快照日期 created_at: 记录创建时间 """ __tablename__ = "meetingroom_booking_snapshot" # 自增主键 id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) # 企微会议室ID meetingroom_id: Mapped[int] = mapped_column(Integer, index=True, nullable=False) # 企微预定ID booking_id: Mapped[str] = mapped_column(String(64), index=True, nullable=False) # 会议主题 subject: Mapped[str] = mapped_column(String(200), nullable=False, default="") # 预定人userid booker: Mapped[str] = mapped_column(String(64), nullable=False, default="") # 会议开始时间 start_time: Mapped[datetime] = mapped_column(DateTime, nullable=False) # 会议结束时间 end_time: Mapped[datetime] = mapped_column(DateTime, nullable=False) # 预定状态(0=已预定, 1=已取消) status: Mapped[int] = mapped_column(Integer, nullable=False, default=0) # 快照日期(用于按日期统计) snapshot_date: Mapped[date] = mapped_column(Date, index=True, nullable=False) # 记录创建时间 created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now(), nullable=False) def __repr__(self) -> str: """返回模型的可读字符串表示。""" return ( f"" )