bea288e414
== 已部署上线 (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
64 lines
2.7 KiB
Python
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})>"
|
|
)
|