You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.5 KiB
4.5 KiB
真人录证:定位 place commit 瞬间
当前 P0 必做任务。在修复 RPA 之前,必须先完成本录证。
冻结:录证完成并分析前,禁止新增fix-place/*、place-commit-strategy、selection-trace、新回退策略、新点击方式。
目标
找到 MotherShip widget 在真人操作下,GET axel/location/place/{placeId} 真正发生的瞬间,并与 RPA 失败路径对比。
成功判据(录证侧):
- HAR + Trace + 录像 + Console + Network 五类产物齐全
commit-moments.json中至少有 2 次GET place200(提货 + 派送)- 能说明:点选联想后多少毫秒内触发 place commit、伴随哪些 DOM/网络事件
一键启动
cd x:\work\chajia
npm run record:human-commit-baseline
非 TTY / Enter 无效时:
$env:HUMAN_RECORD_FILE_TRIGGER="1"
npm run record:human-commit-baseline
脚本会打印 runId 和产物目录,例如:
.rpa/human-commit-baseline/a1b2c3d4/
人工操作顺序
- 浏览器打开 MotherShip 报价 widget
- 提货:键入街道 → 点选联想 → 确认 widget 显示已锁定
- 触发检查点 1(Enter 或触发文件
triggers/after-pickup) - 派送:同上
- 触发检查点 2(
triggers/after-delivery) - 填货物 → 点 Get Quote → 等待报价档位出现
- 触发检查点 3(
triggers/after-quote) - 触发结束(
triggers/finish)
文件触发(推荐 Windows)
# 将 {runId} 替换为脚本启动时打印的 ID
New-Item -Force ".rpa\human-commit-baseline\{runId}\triggers\after-pickup"
New-Item -Force ".rpa\human-commit-baseline\{runId}\triggers\after-delivery"
New-Item -Force ".rpa\human-commit-baseline\{runId}\triggers\after-quote"
New-Item -Force ".rpa\human-commit-baseline\{runId}\triggers\finish"
产物说明
| 文件 | 用途 |
|---|---|
baseline.har |
全量 HAR,DevTools 导入分析 |
trace.zip |
Playwright Trace(含 CDP、截图、DOM 快照) |
video/*.webm |
屏幕录像,对照时间轴 |
console.ndjson |
浏览器 Console 逐行 |
network.ndjson |
axel/location、axel/quote、Google Places 请求 |
checkpoints.json |
四个检查点时间戳 |
commit-moments.json |
自动捕获的 GET place/{id} 200 |
summary.json |
录证摘要与分析提示 |
分析 commit 瞬间
1. 自动摘要
Get-Content .rpa\human-commit-baseline\{runId}\commit-moments.json
Get-Content .rpa\human-commit-baseline\{runId}\summary.json
终端在录证过程中会打印:
[录证] ★ place commit 200 @ +12345ms phase=after_pickup
2. Playwright Trace(CDP)
npx playwright show-trace .rpa\human-commit-baseline\{runId}\trace.zip
在 Trace 中:
- 时间轴对齐 Network 面板,过滤
place/ - 查看点选联想前一帧 / 后一帧的 DOM 与鼠标事件
- 记录:是
click、keydown、place_changed还是 blur 之后触发
3. HAR
用 Chrome DevTools → Import HAR → 过滤 axel/location/place
对比:
search响应中的placeId- 随后
GET place/{id}的 initiator / timing
4. 与 RPA 对比
| 维度 | 真人录证 | RPA worker 日志 |
|---|---|---|
| place 200 次数 | commit-moments.json | placeRequestObserved |
| 触发阶段 | checkpointPhase | selection-trace / adapter events |
| 点选方式 | trace 录像 | mothership-styled-click / keyboard |
若真人稳定 2 次 place 200,RPA 为 0 → 停止改 timeout/stealth,只复刻真人事件序列。
推荐测试地址(与 prove 一致)
| 侧 | 地址 |
|---|---|
| 提货 | 1234 Warehouse Street, Los Angeles, CA |
| 派送 | 5678 Distribution Way, Farmers Branch, TX |
| 货物 | 2 托 × 500 lb,48×40×48 in |
也可用 POI 难例(Convention Center → Ocean Drive)做第二遍录证。
冻结范围(录证期间)
禁止新增或扩展:
workers/rpa/fix-place/*place-commit-strategy.tsselection-trace.ts- 新的 commit 回退链 / CDP 点击路径
允许:
- 本录证脚本与文档
- 基于录证结论的单一最小复刻(需先写分析结论)
完成标准
- 至少 1 次完整录证(双地址 + 报价)
commit-moments.json≥ 2 条 place 200- 输出 1 页分析:
docs/mothership-commit-瞬间分析.md(人工或 AI 根据 trace 填写) - 团队评审:确认 RPA 下一步只复刻真人事件,不继续堆策略