feat: 支持受控外部表单工作流

This commit is contained in:
pikastech
2026-07-18 11:10:04 +02:00
parent 43d6156dfd
commit 3ba9b94bf4
13 changed files with 1159 additions and 11 deletions
@@ -0,0 +1,22 @@
# R6 任务报告
## 结果
- 新增 `web-probe external-form` 声明式入口,支持 `plan/start/status/continue/stop`、Secret sourceRef、验证码暂停续填、截图、本地文件受限上传、草稿动作和不可逆提交双重确认。
- runner 复用 node/lane、浏览器内存门禁、代理和浏览器 evidence 环境;启动采用持久进程组、明确 `launch-ready.json`、失败 typed diagnostic 与精确清理。
- 修复 POSIX `sh` 下内建 `kill` 不支持 `--` 导致进程组回收失效的问题,相关 observe 和通用 browser guard 统一改用 `/bin/kill`
- 增加仓库自有无真实 PII HTML fixture;临时 HTTP 服务只监听 loopback,并随 workflow 关闭。
## 验证
- `fixture-registration-a9e7e411cb39``start -> paused -> continue -> completed`;原始 5/5 动作完成,续填输出仅披露 `valueAccepted=true`
- `fixture-registration-8f88fb231b81`:6 动作版本完成导航、Secret 填写和本地文件受限上传后进入 `paused`;暂停截图 SHA-256 为 `a152c78ec379debab87b1b1c993d42dbde408af7998c4cc6fe97038ebde5dfe0`
- 同一 workflow 暂停态 `secretMaterialPresent=false`;执行 `stop` 后为 `aliveBefore=true``aliveAfter=false``uploadMaterialPresent=false`,证明 Secret 删除、精确进程组回收和上传材料终态删除均通过。
- 历史失效 workflow 的 `status` 已返回 `ok=false``failureKind=web-probe-external-form-stale-start`,不再把死进程误报为正常启动。
- `bun scripts/cli.ts web-probe external-form --help``bun scripts/cli.ts web-probe --help``bun scripts/cli.ts check --syntax-only`、目标 bundle、runner `node --check``git diff --check` 均通过。
## 边界
- fixture 仅用于开发 smoke,不替代真实高校招聘入口验收。
- 最终不可逆提交仍默认拒绝;普通 `click` 不能操作 submit 控件,本任务未对任何外部表单执行最终提交。
- 输出未包含密码、验证码、身份证号、Cookie、完整字段值或上传文件内容。
@@ -60,3 +60,7 @@
## R5 [completed]
改进 [UniDesk #2440](https://github.com/pikasTech/unidesk/issues/2440) 的 product-smoke typed 失败证据与工件下钻:一次失败运行直接披露有界 PDF status、mediaType、popup 生命周期、report/screenshot SHA 和受控下钻入口,保持 Secret 脱敏、输出上限与全部业务门禁,完成任务后将详细报告写入[任务报告](./details/web-observe-runtime-reliability/R5_Task_Report.md)。
## R6 [completed]
完成 [UniDesk #2501](https://github.com/pikasTech/unidesk/issues/2501):新增 YAML/文件驱动的受控外部表单工作流,复用 WebProbe node/lane、浏览器资源门禁和 Secret sourceRef,支持 start/status/continue/stop、验证码暂停续填、PII 脱敏、草稿保存和默认禁止不可逆提交;以无真实 PII fixture 完成最小 smoke,完成任务后将详细报告写入[任务报告](./details/web-observe-runtime-reliability/R6_Task_Report.md)。