7b5ffa74f6
整理采集页流程、录像选项和汇总入口的分阶段方案,供 DeepSeek 执行;文档门禁通过。
95 lines
6.1 KiB
Markdown
95 lines
6.1 KiB
Markdown
# 标定采集页重构:DeepSeek 代理执行清单
|
||
|
||
状态:2026-10-18 计划,未实施。阶段定义、入口与出口条件、统一验证见[主计划](capture-workflow-plan.zh.md);本页只规定由谁执行、按什么顺序执行、交付什么。复选框记录实际完成情况。
|
||
|
||
## 主代理指令
|
||
|
||
开始前先读工作区 `AGENTS.md`、`docs/AUTHORING.md`、`docs/platform/engineering-workflow.md` 和主计划,再重新检查 app 与工作区根的分支、HEAD、index 和工作树。已有的 `motion/service.py`、`record_diagnostics.py` 改动以及根仓库 `scripts/finger_multical/` 的改动都不属于本任务,不得覆盖。
|
||
|
||
不得连接真实控制器、移动平台或加载;不得提交、推送、暂存或改写历史。D1、D2 未经用户确认时,停在相应阶段并报告。
|
||
|
||
scratch 统一放在 `.scratch/autocal-capture-workflow/`;运行期间保留 `.active` 标记,每次 pytest 用新的 `--basetemp` 并加 `-p no:cacheprovider`。
|
||
|
||
主代理负责以下文件的最终合并:
|
||
- 接口:`capture_controller.py` 的公共 API、`recording_options.py` 的结构;
|
||
- 共享文件:`ui/window.py`、`preferences.py`、`config/preferences.default.json`、两份 locale 文件、`docs/`。
|
||
|
||
子代理需要改这些文件时,先把改动交给主代理,由主代理串行合入。
|
||
|
||
## 角色
|
||
|
||
| 角色 | 负责阶段 | 可改文件 | 不可改 |
|
||
|---|---|---|---|
|
||
| 主代理 | P0、接口冻结、合并、P6 文档、交接 | 上面列出的共享文件 | — |
|
||
| A 数据与文件 | P1、P2 | `ui/reveal.py`、`summary_export.py`、`recording_options.py`、`capture_guard.py`、`summary.py`、`session_review.py`,`trial.py` 与 `multipoint.py` 中构造 `RecordConfig` 的两行,以及相应测试 | 状态机、界面布局、`shared/` |
|
||
| B 控制器 | P3 | `capture_controller.py`、`tests/test_capture_controller.py`;`multipoint.py` 只允许为控制器暴露只读属性 | 任何 `ui/` 文件 |
|
||
| C 界面 | P4,之后 P5 | `ui/calibration_panel.py`、`ui/multipoint_panel.py`、`ui/sensor_panel.py`、`ui/finger_source_panel.py`、新增的 `ui/*` 组件,以及相应 UI 测试 | 控制器逻辑、数据格式 |
|
||
| D 编码验证 | P2b | 只在 scratch 中写脚本和报告 | 产品代码 |
|
||
| V 验收 | 最终验收 | 只读;可在 scratch 中写报告 | 任何产品文件 |
|
||
|
||
同一时间最多 3 个实现子代理在工作。控制器 API 冻结前,C 只能对着主代理给出的桩接口开发。
|
||
|
||
## 执行顺序
|
||
|
||
```text
|
||
W0 主代理 P0 + 冻结 CaptureController / RecordingOptions 接口
|
||
W1 A: P1 → P2 B: P3 D: P2b (三者并行)
|
||
W2 C: P4(需要 P1、P3;P2 合入后补 Ready 行的录像标签)
|
||
W3 C: P5 主代理: P6 文档;可选的批次导出交给 A
|
||
W4 V: 独立验收 → 主代理修复 → V 复核修复项
|
||
```
|
||
|
||
检查点 1 在 W1 结束时:P1、P2、P3 的 V1–V3 全部通过,才允许开始 W2。检查点 2 在 W3 结束时:V1–V8 全部通过,才交给 V。
|
||
|
||
## 任务清单
|
||
|
||
### W0 主代理
|
||
|
||
- [ ] P0 基线:记录 HEAD、工作树状态和基线测试结果到 `scratch/baseline.md`。
|
||
- [ ] 冻结接口,写入 `scratch/interfaces.md`:`readiness()`、`primary_action()`、`perform()`、`secondary_actions()`、`poll()` 的签名、返回结构和动作键清单;`RecordingOptions` 的字段与 `session.json` 中 `recording` 块的结构。
|
||
|
||
### A 数据与文件
|
||
|
||
交接提示:你负责让用户能找到数据、能控制视频体积。不得改变原始目录结构、不得删除或移动已有录像;summary 副本只是方便查看,指针仍是唯一权威。
|
||
|
||
- [ ] P1:`reveal` 提取与三个按钮(按钮的布局由 C 在 P4 完成;A 在 P1 先接到现有会话行),`summary/` 平铺副本及失败处理。测试:`test_summary_export.py` 增加副本一致性、副本失败两项,新增 `test_reveal.py`。
|
||
- [ ] P2:录像选项、工厂函数、`recording` 块、`video_expected` 判定、编码探测、体积估算。测试:`test_multipoint_recording.py` 增加关视频完成、编码不可用两项;`test_summary.py` 增加关视频行 eligible、旧会话不变两项;`test_preferences_isolation.py` 覆盖新的偏好键。
|
||
|
||
### B 控制器
|
||
|
||
交接提示:你负责把流程判断从界面中移出。控制器不得发出运动命令、不得导入 Qt;对准只发出请求。每个禁用的动作必须带原因,原因文字通过 locale 键给出。
|
||
|
||
- [ ] P3:实现控制器及表驱动测试;用同一组输入比较“直接驱动 `Campaign`”与“经由控制器”写出的文件结构。
|
||
|
||
### C 界面
|
||
|
||
交接提示:你负责重排界面,依据是设计稿与主计划 P4、P5。界面只渲染控制器的输出;不得在 `ui/` 中判断 `campaign.phase`。实时图与 UV 图必须能同时看到。
|
||
|
||
- [ ] P4:新布局、更改输入对话框、队列表模型、当前点卡片、消息行;在模拟模式下用界面测试走完两点;截图存 scratch。
|
||
- [ ] P5:Finger debug 改名并瘦身,测点表迁移,安装偏置变化后重新求解。
|
||
|
||
### D 编码验证
|
||
|
||
- [ ] P2b:按主计划完成对比并写报告,内容包括输入文件、编码参数、逐帧差值统计和窗口均值差占 1 N 阶跃的比例。不给结论性推荐,由用户决定。
|
||
|
||
### V 验收
|
||
|
||
- [ ] 用新进程跑完主计划 V1–V8;按严重度列出发现,每条附复现步骤;不修改代码。
|
||
|
||
## 子代理交付格式
|
||
|
||
每个任务结束时交回以下内容:
|
||
1. 改动文件清单;
|
||
2. 新增测试,以及它们在修复前失败的证据(可行时);
|
||
3. 实际执行的命令和结果(复制输出摘要,不改写);
|
||
4. 未验证项及原因;
|
||
5. 接口变化;没有就写“无”。
|
||
|
||
不得把跳过、未运行或环境缺失写成通过。
|
||
|
||
## 主代理最终交接
|
||
|
||
- [ ] 所有改动保持未暂存;每个改动过的仓库各写 `.scratch/autocal-capture-workflow/commit-message.txt`,按 AGENTS 第 7 条给出单行的 `git add` 和 `git commit -F` 命令。
|
||
- [ ] 列出需要排除的既有改动。
|
||
- [ ] 状态写为“仅软件验证,待实机验收”;V10 实机验收需要用户指定设备、运动与载荷范围以及停机条件。
|