Files
2026Technology-Competition/docs/superpowers/plans/ws-task-1-report.md
T
lhl 80daadcd31 fix(websocket): 修复 app.py 不可导入并新增真实链路验证
- 将 /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% 达标
2026-08-29 14:36:12 +08:00

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)→ 提交。

疑虑 / 需关注

  1. pytest-asyncio 缺失:测试使用 @pytest.mark.asyncio,但项目 pyproject.tomldev 依赖仅包含 pytestpytest-cov,未声明 pytest-asyncio。本环境原本未安装该插件,已临时 pip install pytest-asyncio 才能运行。若要在 CI 或他人环境复现,需在 pyproject.toml[project.optional-dependencies] dev 中补充 pytest-asyncio 依赖(及按需配置 asyncio_mode)。本任务严格落实 brief "仅提交两个文件" 的约束,未改动 pyproject.toml,特此标注。
  2. 覆盖率门禁(fail_under=99)已按要求用 -o addopts="" 关闭,未改动其他文件以规避门禁。
  3. _event = Dict[str, Any] 作为类型别名用于 emit 注解,在 Python 3.14 下正常工作。