- 将 /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% 达标
28 lines
1.3 KiB
Markdown
28 lines
1.3 KiB
Markdown
# 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.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`,特此标注。
|
|
2. 覆盖率门禁(`fail_under=99`)已按要求用 `-o addopts=""` 关闭,未改动其他文件以规避门禁。
|
|
3. `_event = Dict[str, Any]` 作为类型别名用于 `emit` 注解,在 Python 3.14 下正常工作。
|