承接目录治理:上轮只压缩内容未减文件数,闭线工作记录仍平铺致目录看着仍一堆(创始人指出)。本次执行 B2 归档。 64 个 ≤06-15 闭线档(25 压缩桩 + 闭线 review/report/纪要/edit-plan)git mv 入 docs/agent-specs/_archive/(文件名不变、仍 git 跟踪可查)。热目录 ≤06-15 仅留 13 活档(决策/纲领/SoT/活spike)+13 个 06-16 在飞。 活资产 20 处旧路径引用(.agents/docs/memory/_index)同步改 _archive/,引用断裂复测=0;_index 活地图 + 治理档状态收口。约束:0 个 06-16 被移、orchestrator 等未跟踪在飞档零误纳。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
6.5 KiB
6.5 KiB
真实鉴权与匿名玩家 · e2e 验收报告
- 编号: HJ-PASSPORT-E2E-001 | 2026-06-10 | ✅ 验收通过(E1-E13 全过,E10 留部署轨注记)
- 被验对象: HJ-PASSPORT-EXEC-001 鉴权建设波(提交链
b0850a2→f0c4e81→7e84021→4dbbc06) - 环境: staging(mini-desktop :48080,V11 已迁移;前端 :4173 staging 模式)
- 方法: 两轮多代理取证(一轮 10 组并行+独占 / 二轮 8 组)+ 三次部署窗口 + 主 agent 终验;全部判定带「命令+输出+DB 行」三重证据(原始档在两轮 workflow 转写目录)
1. 终判表(对照 execution §11)
| # | 用例 | 终判 | 关键证据 |
|---|---|---|---|
| E1 | 真 token 创作者全链 | ✅ | sms-login→set-creator→草稿→生成 succeeded→发布→admin 审核→分区流匿名可发现;归属列=真实 userId |
| E2 | 匿名零门槛 | ✅ | 14 端点读写全链 code:0;DB:player_user_id NULL ∧ anon_id 透传 ∧ creator='0' ∧ process_status=1 |
| E3 | 互动触发登录 | ✅ | UI Vant 弹窗(截图)+ 直连 401 信封(信任边界在后端) |
| E4 | 邀请码注册 | ✅ | register_channel='invite' / invite_code_id 关联 / used_count+1 / 互动落库 user_id=真实 |
| E5 | 负路径四码+并发 | ✅ | 1002091000/001/002/003 四错误码精确;并发双发恰 1 成功(条件更新原子性实证),败方零残留行 |
| E6 | 白名单 | ✅ | 5 创作写入口全 1002090003 拒 → set-creator 置位后建草稿 code:0 |
| E7 | 身份衔接 | ✅ | first_anon_id=X;user_login 双带落库(user_id=3∧anon_id=X,终验补:见 §3-3);互动 user_id=真实(1001/1 错位消除) |
| E8 | mock 并存 | ✅ | test1 生成→succeeded→取包→feed 全链零变化(@PermitAll 只放宽不收紧实证) |
| E9 | 旁路退役开关 | ✅ | 关→1002091 段「旁路已退役」∧ sms 主路径不受影响→恢复→happy-path(E5⑤ 充当) |
| E10 | 生产负路径 | 📌 部署轨注记 | 生产 profile 未建立(spec §1.2 既定),部署落地后补测 Bearer test1→401 |
| E11 | 安全基线 | ✅ | 修复后新日志无手机号/验证码明文;token 中段 16 字符 grep=0;refresh 实测 30d(spec 7d/30d 中 7d 未配置,如实记录) |
| E12 | admin 不回归 | ✅ | admin-api 列表/审核链冒烟过,game-admin 零改动 |
| E13 | 剔除桩 | ✅ | 105 条原始照落∧聚合截流 ≤100∧剔除中文日志∧anonExceeded=false 直证 anon 维零误伤(对照「+1」失败=同源 IP 取证设计缺陷,恰证 IP 维反刷在岗,见 §4-3) |
完成条件 §14 对账:1 契约三件 ✅ / 2 后端全量 ✅ / 3 前端 build ✅ / 4 用例全过留证 ✅ / 5 三类单测绿 ✅ / 6 文档回写 ✅(本报告随批落) / 7 R6 本件内两项 ✅+切渠道前两项已入 A1 看板 #3 备注。
2. e2e 逮住的两个 P0(堵在种子用户之前)
| P0 | 根因 | 修复 | 提交 |
|---|---|---|---|
| 匿名/免登写路径全断(session start/end、telemetry batch/beacon、注册两入口、ad 计费) | V11 只放宽业务列,漏继承审计列 creator/updater NOT NULL;@PermitAll 无登录态 → DefaultDBFieldHandler 填 null → 约束爆。与 M-b 执行器 updater 雷同根第三现 |
第一层:5 写点 DO 显式兜底 "0";第二层:telemetry 入口注入系统身份(M-b 范本 Web 线程版)覆盖 stat 累加/feed 回灌/markAggregated 全级联 | f0c4e81 + 7e84021 |
| 手机号+验证码明文进 app.log | ApiAccessLogInterceptor 非 prod 无条件打印原始请求体(不读 @ApiAccessLog 注解,framework 不可改)+ SmsSendConsumer 记 message 含码 | 两面合围:staging 抬该 logger 至 WARN(控制台面)+ 三端点 sanitizeKeys(持久化面)+ Consumer 脱敏 | f0c4e81 |
修复链中二次逮雷:markAggregated 的 UPDATE SET updater=null 运行时证伪「MP 跳过 null 字段」的静态推断——这是入口注入方案取代逐点 set 的依据。终验 DB:匿名链 creator='0'、登录链 creator=真实 id,两态对照成立。
3. 修复后增补的第三个缺陷
user_login 事件被入口拒收(accepted:0/rejected:1)——契约 events.schema.json 已登记,但后端 TelemetryEventEnum 才是真守门人未同步。修复 4dbbc06(+2 行枚举),终验:accepted=1,DB user_id=3∧anon_id='r2-anon-link'∧creator='3'∧process_status=1。红线蒸馏:契约登记事件必须同步该枚举。
4. 遗留债登记(全部非阻断)
- feed 主流翻页桩(既有债重确认):nextCursor 恒空串(FeedServiceImpl 骨架 TODO),新游戏 sort_score=0 排 30 名外则主流不可达——分区流可达成立;种子期 feed≤30 款时无感,内容池>30 前必须实现 cursor。
- set-creator 单列更新不写 updater(PlayerMapper wrapper 更新),审计追溯轻微缺口。
- 执行器产物 updater='0' 系统哨兵(设计内);若产品要求归因创作者需在执行器更新链注入创作者身份——设计取舍备拍。
/root/game-staging/repo旧树与运行 jar 来源脱钩:运行 jar=构建树产物(md5 对账过),但部署目录所在 checkout 停在 wave3——溯源性缺口,建议后续把部署产物目录与旧 checkout 解耦。- E13 对 9001 的 stat 污染(+99 like)已如实留档;后续复用 9001 须按快照差值判定。
- refresh 7d 档未配置(实测 30d);生产 profile 时按安全基线复核。
5. 操作教训(已蒸馏 .agents)
-pl huijing-server增量重打包会0.5s 假成功(jar 不重建)——重打包必须clean联合反应堆 + 产物内嵌 jar grep 核验;telemetry 产物名是定制 finalName(无版本号)。- 重启类 ssh 命令与含 jar 名串的命令必须拆会话(start-app.sh 的
pkill -f会击杀同串 cmdline 的承载 shell,本波两例实证)。 - system-server 单测必须
SPRING_DATA_REDIS_PORT=26379(宿主 16379=staging redis 撞 huijing 嵌入式测试口,catch(ignore)静默连错库)。 - e2e 多代理并发写同库时,对账须先排除同轮兄弟代理的写入与探针 DML(本波一次「核销未回滚」误报由此交叉解除)。
6. 证据指针
- UI 截图:
docs/agent-specs/2026-06-10-passport-e2e-evidence/(feed/弹窗/登录页) - 两轮取证原始 JSON:会话 workflow 转写目录(wf_69d4028c / wf_db9c00f2)
- staging 构建日志:mini-desktop
/root/build-*.log;jar 备份:huijing-server.jar.bak-{57b2593,b0850a2}