Files
wecom_it_smart_desk/backend/app/models/meetingroom_booking_snapshot.py
T

64 lines
2.7 KiB
Python
Raw Normal View History

# =============================================================================
# 企微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"<MeetingroomBookingSnapshot(id={self.id}, meetingroom_id={self.meetingroom_id}, "
f"booking_id='{self.booking_id}', subject='{self.subject}', snapshot_date={self.snapshot_date})>"
)