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,62 @@
|
||||
# =============================================================================
|
||||
# 复杂场景重构 — 自动化测试局部 conftest
|
||||
# =============================================================================
|
||||
# 说明:扩展全局 MockRedis,增加 sadd/srem 方法(session_manager 和
|
||||
# timeout_cleaner 中使用了 Redis SET 操作)。
|
||||
# =============================================================================
|
||||
|
||||
from typing import Dict, Set
|
||||
from tests.conftest import MockRedis
|
||||
|
||||
|
||||
class ExtendedMockRedis(MockRedis):
|
||||
"""扩展 MockRedis,支持 sadd/srem/smembers 操作。
|
||||
|
||||
session_manager.pause_session 使用 redis.sadd() 向暂停会话集合添加成员,
|
||||
resume_session / agent_close / timeout_cleaner 使用 redis.srem() 移除成员。
|
||||
基础 MockRedis 不含这些方法,此处扩展。
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._sets: Dict[str, Set[str]] = {}
|
||||
|
||||
async def sadd(self, name: str, *values) -> int:
|
||||
"""模拟 Redis SADD 命令。"""
|
||||
s = self._sets.setdefault(name, set())
|
||||
count = 0
|
||||
for v in values:
|
||||
v_str = v.decode("utf-8") if isinstance(v, bytes) else str(v)
|
||||
if v_str not in s:
|
||||
s.add(v_str)
|
||||
count += 1
|
||||
return count
|
||||
|
||||
async def srem(self, name: str, *values) -> int:
|
||||
"""模拟 Redis SREM 命令。"""
|
||||
s = self._sets.get(name, set())
|
||||
count = 0
|
||||
for v in values:
|
||||
v_str = v.decode("utf-8") if isinstance(v, bytes) else str(v)
|
||||
if v_str in s:
|
||||
s.discard(v_str)
|
||||
count += 1
|
||||
return count
|
||||
|
||||
async def smembers(self, name: str) -> Set[str]:
|
||||
"""模拟 Redis SMEMBERS 命令。"""
|
||||
return set(self._sets.get(name, set()))
|
||||
|
||||
def reset(self) -> None:
|
||||
"""重置所有数据。"""
|
||||
super().reset()
|
||||
self._sets.clear()
|
||||
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_redis():
|
||||
"""覆盖全局 mock_redis fixture,返回支持 sadd/srem 的扩展版本。"""
|
||||
return ExtendedMockRedis()
|
||||
Reference in New Issue
Block a user