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
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# =============================================================================
|
||||
# 企微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})>"
|
||||
)
|
||||
Reference in New Issue
Block a user