执行人:波波(方案 + 验收岗)。提交 89351424 入 main。
提审包里曾有 19 处「点了必失败」的入口,其中首页 4 处。已全部修复。
修复后:提审总门退出码 0,路由门禁 L1=0 / L2=0,出包 805,858 B(787.0 KB),页数维持 39。
自动体检连续三日报告「全绿、零改动」,我没有直接采信,而是补扫了第四形态死链,结果与既有门禁给出的「死链 2 处」不一致。
| 形态 | 举例 | 旧门禁是否覆盖 |
|---|---|---|
wx.navigateTo({ url: '/pages/x/x' }) 字面量 | demand-confirm.ts:79 | ✅ 覆盖(报 2 处) |
<navigator url="..."> | — | ✅ |
bindtap="goXxx" 直绑 | home 的 goJourney | ✅(09-18 已修) |
data-go="key" → 页内 ts 路由表 map | home 的「交通 / 餐饮 / 行程 / 需求单」 | ❌ 完全漏掉 |
第四形态是本次新发现的:页面 wxml 不写路径,只写 data-go="transport",由 goPage() 在 ts 里查一张 30+ 项的路由表得到真实路径。旧门禁只扫 .ts 里的 navigateTo 字面量,因此扫不到。
| 页面 | 处数 | 指向的未注册页 |
|---|---|---|
| home(首页) | 4 | category-transport、category-restaurant、journey、my-demands |
| culture | 3 | category-transport、category-restaurant、my-demands |
| selection | 3 | category-restaurant、category-ticket、category-transport |
| guide-article | 1 | journey |
| passport | 1 | journey |
| local-scene | 1 | category-restaurant |
| safety-check | 1 | category-transport |
| 合计 | 19 | 目标 5 个:transport / restaurant / ticket / journey / my-demands |
这 5 个目标页均不在 41 页 MVP 的 KEEP 名单内(已核 scripts/cut_v2_mvp_pages.py 的 KEEP 常量),属 09-18 摘页的遗留债 —— 摘了注册,没同步清入口。责任归属:波波。
后果:审核员打开首页点「交通」→ 目标页未注册 → 跳转失败。提审阻断级。
pilgrimage、settings、agreement 这些已注册页也判成死链。原因:app.json 存的是 pages/x/x(无前导斜杠),路由表值是 /pages/x/x(有斜杠),字符串直接比对不等。归一后真值 = 19。| # | 改动 | 说明 |
|---|---|---|
| 1 | 新增 utils/pack-routes.ts | 由 app.json 生成包内路由白名单 + inPack(url)。未来任何摘页都不会再产生"点得动但跳不了"的入口 |
| 2 | 7 个已注册页的 goPage | 加 inPack 校验,未注册目标静默 return,不再跳转报错 |
| 3 | 19 处 data-go 入口 | 加 hidden="{{true}}",入口不再可见 |
| 4 | 新增 scripts/check_v2_route_keys.py | 第四形态死链门禁:L1 阻断 / L2 登记;入口已隐藏则不计 |
| 反证 | 注入 | 结果 | 还原后 |
|---|---|---|---|
| ① | 摘掉 home.ts 的 inPack | L1 由 0 → 4,退出码 1 | L1=0,退出码 0,git 无残留 |
| ② | 摘掉 home.wxml 一处 hidden | L2 由 0 → 1 | L2=0,git 无残留 |
| 检查项 | 真值 | 判据 |
|---|---|---|
| 提审就绪总扫 | 退出码 0 | 0 = 干净 |
| 用户可见占位 / 未完成文案 | 0 | 0 |
| 静态演示页 / 伪造凭证 | 0 / 0 | 0 |
| 路由门禁 L1(点击必失败) | 0 | 0 |
| 路由门禁 L2(已兜底登记) | 0 | — |
| WXML 语法 / 裸属性 | 111 扫 / 0 坏 / 0 裸 | 0 |
| WXSS 语法 | 116 扫 / 0 坏 | 0 |
| 导航死链(旧形态) | 2(均在已摘页内,不在包中) | 非阻断 |
| app.json 注册页 | 39 | 不变 |
| 主包体积 | 805,858 B(787.0 KB) | 上限 2 MB,余量约 1.25 MB |
那 5 个被摘的目标页其实全部完工:ts 100–192 行、各有 2 处后端调用、50–100 个可见元素、无 mock / 占位数据。
| 选项 | 结果 | 代价 |
|---|---|---|
| A. 补注册 5 页 | 39 → 44 页,首页「交通 / 餐饮 / 门票 / 行程 / 需求」全部可用,功能面完整 | 超出老板「41 页」裁定 3–5 页;包体 +约 45 KB(余量充足) |
| B. 维持现状 | 39 页不变,入口已隐藏,不会点失败 | 首页分类入口只剩「住宿」,产品面变薄 |
另有三项人工阻塞(与体检报告一致):支付链路真机实测、mp 后台《用户隐私保护指引》、request 合法域名 https://api.kailashi.cn 登记。