- 将 /api/sessions/{sid}/ws 端点移入 create_app(此前置于模块级导致整模块 import NameError,回归被验证拦截)
- register_loop + subscribe 调整至 accept 之前,缩小连接已开但未订阅期间的进度丢失窗口
- 新增 tests/test_verify_ws_real_flow.py:驱动真实 HTTP 聊天流程断言 WS 收到 agent 实际发射的 parse/impact 进度
- 同步 WebSocket 计划文档 Task 3 代码片段(标注端点必须位于 create_app 内)
- 全量 pytest 实测 583 passed / 99.03% 达标
1.3 KiB
1.3 KiB
Task 1 执行报告:ProgressHub 进度发布/订阅单例
- 状态:DONE
- 提交 commit 短哈希:
74d15cc - 分支:
feat/websocket-progress
改动文件
- 新增
src/genesis/server/hub.py - 新增
tests/test_progress_hub.py
测试命令
python -m pytest tests/test_progress_hub.py -q -o addopts=""
测试输出摘要
...
3 passed in 0.28s
TDD 流程已遵循:先写测试 → 运行失败(模块不存在)→ 写最小实现 → 运行通过(3 passed)→ 提交。
疑虑 / 需关注
- pytest-asyncio 缺失:测试使用
@pytest.mark.asyncio,但项目pyproject.toml的dev依赖仅包含pytest与pytest-cov,未声明pytest-asyncio。本环境原本未安装该插件,已临时pip install pytest-asyncio才能运行。若要在 CI 或他人环境复现,需在pyproject.toml的[project.optional-dependencies]dev 中补充pytest-asyncio依赖(及按需配置asyncio_mode)。本任务严格落实 brief "仅提交两个文件" 的约束,未改动pyproject.toml,特此标注。 - 覆盖率门禁(
fail_under=99)已按要求用-o addopts=""关闭,未改动其他文件以规避门禁。 _event = Dict[str, Any]作为类型别名用于emit注解,在 Python 3.14 下正常工作。