Files
wecom_it_smart_desk/backend/app/models/meetingroom_booking_snapshot.py
T
Simon bea288e414 feat: 2026-07-11 全量更新 - 代办集成+会议室预定+知识迭代修复+UI统一+Bug修复
== 已部署上线 (9项) ==
- 代办事项真实数据源集成 (企微审批API 8bug修复链)
- H5/坐席端 Logo样式统一+绿色背景
- 视频引导页修复 (localStorage key v2)
- 坐席端 v9 Vue版本修复 (ElMessage._context)
- 截图按钮 v10 修复 (getDisplayMedia user gesture)
- 扫码样式恢复+H5扫码登录跳转修复
- H5截图快捷键提示

== 代码完成待部署 (3项) ==
- 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查)
- 会议室预定-小鱼易联终端 (40文件, 40/40测试通过)
- IT资产升级审批推送 (asset_service.py)

== 需求文档 (2项) ==
- 坐席端AI辅助消息框-PRD (4项新功能确认)
- 坐席端布局优化建议 v2.0 (7天计划)

== 新增文档 ==
- 日报-2026-07-11.md
- 知识迭代Bug修复报告-20260711.md
- 会议室预定-部署指南.md
- CHANGELOG.md 更新

== 测试 ==
- test_todo_integration.py: 40/40
- test_meetingroom.py: 40/40
- test_bugfix_ki_suggestions.py: 21/21
2026-07-11 23:13:10 +08:00

64 lines
2.7 KiB
Python

# =============================================================================
# 企微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})>"
)