# 修改记录（版本台账）

> 格式：`大版本.小版本.修订.时间戳`（时间戳 = 年月日时分 + 同分钟内序号 001 起）
> 示例：2026-09-17 12:08 的修改 → `1.0.0.202609171208001`
> 大版本号在微信发布上架时可能变更；日常开发只递增时间戳段。
> 每行必须能回溯到：指令原文 → 开发计划 → 修改内容 → 结果。

| 版本号 | 时间 | 依据指令 | 修改内容 | 结果 |
|:--|:--|:--|:--|:--|
| 1.0.0.202609171212001 | 2026-09-17 12:12 | 02-指令原文/20260917-1212-开发流程与纪律.md | 立项：建立开发文档体系（README 规则、01-架构图×2+说明、02-指令原文×2、03-开发计划总览 P-000~P-005、本台账）；架构冻结为"双端一库" | ✅ 完成 · 无代码修改 |
| 1.0.0.202609171222001 | 2026-09-17 12:22 | 02-指令原文/20260917-1159-架构确认与口径修正.md（"中间最大的那个按钮就是中转站的入口"） | P-001 共 7 处修改：①app.json tabBar 中央项→中转站；②custom-tab-bar/index.js 中央项数据（icon=zap 闪电）；③custom-tab-bar/index.wxml 标签改动态；④relay/index.js onShow 选中态同步+goSubsidy；⑤relay/index.wxml 去返回键（Tab 页化）+新增「补贴中心」入口卡；⑥subsidy/index.js relay 跳转 navigateTo→switchTab（Tab 页限制）；⑦relay-price/index.js 返回兜底 redirectTo→switchTab（自检发现的历史隐患） | ✅ 完成 · 静态自检全过（JSON 合法、无 navigateTo 指向 Tab 页、switchTab×2、TabBar 数据正确）；待用户在开发者工具目验 |
| —（排查，无代码修改） | 2026-09-17 12:36 | 02-指令原文/20260917-1236-小程序真实性排查.md | P-001A 全量排查：15 页真实性台账 + 假象三大来源 + 整改 R1-R4 | ✅ 报告落 05-排查与整改/ |
| 1.0.0.202609171246001 | 2026-09-17 12:46 | 02-指令原文/20260917-1246-整活原则与版本优先级.md | P-001B：R1 返回体系修复——新建共享组件 components/backbar（返回键+navigateBack 兜底 switchTab），接入 card/biz/cert-select/cert-form/cert-result×2分支/profile-edit 共 7 处；prove 装饰返回键删除。R2 假状态栏删除——prove/learn/me/msg/relay/relay-price/subsidy/inbox/vendor 共 9 页 "9:41+5G" 替换为同高占位 | ✅ 完成 · 验收4项全过（无 9:41 残留、backbar×6页、JSON 全合法、Tab 页无返回键） |
| 1.0.0.202609171251001 | 2026-09-17 12:51 | 02-指令原文/20260917-1251-开整R3.md | P-001C（R3 数据契约）：新建 utils/mock-db.js 中央数据源（13 集合/8 域，字段形状=服务器接口）；8 页写死数据全部迁出（prove/cert-select/inbox/biz/msg/subsidy/me/learn），页面只留视图与路由映射；契约文档落 开发文档/06-数据契约/小程序数据契约-v0.1.md（P-002 网页端按此对齐字段） | ✅ 完成 · node --check 9 文件全过、页面业务数据字面量残留=0 |
| 1.0.0.202609171300001 | 2026-09-17 13:00 | 02-指令原文/20260917-1300-开始P002网页端.md | P-002 v1：①opc-web/index.html OPC 主站（桌面布局：顶部导航/Hero 证明卡/三产物/核验三步/企业服务类目/中转站推广位，字段对齐 06-数据契约）；②relay-web/index.html 重做为真桌面布局（左侧栏+主内容：工作台/价目表划线价/API Key/充值，高级区收纳置灰，移动端响应式降级底部导航）；③两站各配 js/data.js 数据层（页面零业务字面量，形状=契约；relay 数据层带 USE_MOCK 切真实后端开关）。替换旧 relay-web 单文件移动皮 | ✅ 完成 · 禁词自检过、双站互链通、JS 语法过；待用户浏览器目验 |
| —（梳理，无代码修改） | 2026-09-17 13:21 | 02-指令原文/20260917-1321-用户旅程全景梳理.md | P-002A 用户旅程全景台账：五类用户 × 七条大旅程 × 24 个子旅程，六级定级；识别 3 个旅程设计待定项（身份切换位置 / 服务商入驻路径 / 绑微信方式）；开发排序三批次 | ✅ 台账落 07-用户旅程/ |
| 1.0.0.202609171327001 | 2026-09-17 13:27 | 02-指令原文/20260917-1327-第一批开工.md | P-B1 第一批主链路端到端：A)api.js 加 USE_MOCK 开关+登录/档案/证书全套 mock 实现（提交后本地流水线 11 秒推进至 verified）；B)新增 pages/onboarding 三步建档引导（30 秒 L0，可跳过）；C)prove 页登录引导条+loginNow（新用户自动进建档）；D)新建 admin-web 管理后台（登录 mock RBAC + 核验审核台：并排比对/通过点亮/驳回填理由）；E)opc-web 登录弹层（微信扫码/手机号 mock）。三个设计待定随本版生效：身份顶部切换 / 服务商自助申请+审核 / 入驻通过后发绑定引导 | ✅ 完成 · node --check 4 文件+JSON 合法+16 页注册；待用户目验 |
| 1.0.0.202609171349001 | 2026-09-17 13:49 | 02-指令原文/20260917-1349-第二批与测试聚合页.md | P-B2 功能：F1 J3.1 开企业身份（pages/company-setup 工商六项回填 + biz 页变活 + prove 转化入口卡，17 页）；F2 J5.3 低余额预警（阈值¥10：relay-web 工作台 + 小程序算力账户页）；F3 J5.2 后端连通检测（relay-web ?live=1 探测 M2 new-api，回落 mock——真实鉴权属 P-003）。T-1 测试设施：test-hub/index.html 聚合页（前台5身份+后台2入口+小程序脚本，全部新标签页，sessionStorage 按标签页隔离）；opc-web ?as= 身份快登；admin-web ?preauth + 会话改 sessionStorage；08-测试/测试指南-v0.1.md（9 组用例+分工）。⚠️ 测试设施（聚合页/快登参数）正式上线前整组移除，本条为移除提醒存档 | ✅ 完成 · node --check 全过、JSON 合法、17 页注册；待目验 |
| 1.0.0.202609171427001 | 2026-09-17 14:27 | 02-指令原文/20260917-1427-聚合页Bug与第三批.md | F0 修复 test-hub 相对路径（卡片少 ../ 导致全部打不开——用户报告）。P-B3 第三批（门面收官）：G1 pages/resume 简历页（OUTPUTS.resume 路由改指）；G2 pages/visibility 可见性四档×四组；G3 company-setup 认领分支（授权书）；G4 pages/vendor-apply 服务商入驻；G5 pages/vendor-work 接单工作台（Lead 状态机+CPL 确认）；G6 admin-web 四标签页（+服务商管理/用户管理/数据看板）；G7 公告 v0。小程序 21 页。同时补落 P-B2 遗漏：biz 页 hero 企业名与开通按钮（当时锚点未命中静默跳过，本轮补齐） | ✅ 完成 · node --check 全过、21 页注册；**门面阶段收官，全部入口可从聚合页测** |
| 1.0.0.202609171504001 | 2026-09-17 15:04 | 02-指令原文/20260917-1504-中转站运营并入后台与联调启动.md | R1 admin-web 新增「中转站运营」标签：用户折扣（总体+逐模型覆盖，最小单位=模型）/火山模型同步（手动触发+默认折扣 8 折可改，架构注释注明方舟 GET /models 可自动同步）/利润看板（收入-成本-毛利+分模型明细）；R2 test-hub 撤独立站长入口（无站长角色口径）→ 中转站运营（OPC 后台内）。R3 联调启动：P-003 开放平台 guide 落 09-联调/；P-004 最小后端 server/server.js（零依赖 node:http，契约端点全实现，JSON 存储，流水线读时推进）——本地冒烟 6 步全过（登录/档案/me/提交核验→verified/工商/服务商） | ✅ 完成 · 后端已可跑（node server/server.js :3001）；下一步 = 大徐老师做开放平台两步 → AppSecret 配置 → 三端账号归一 → 部署 M2 |
| 1.0.0.202609171525001 | 2026-09-17 15:25 | 02-指令原文/20260917-1525-局域网上线M2.md | P-D1 局域网上线：①发现 M2 被重置（/opt/homebrew 空、docker/colima 丢失，relay-data/newapi-data 数据卷仍在）；②改用轻量方案——本机 Node 22.22.2 arm64 二进制直推 M2（~/starlink/bin/node），server.js 加静态托管（/hub /opc /relay /admin）+ /api/health；③LaunchAgent cn.aioo.starlink 常驻（KeepAlive+开机自启）；④局域网跨机验证：hub/opc/relay/admin 200 + 登录接口通；⑤小程序切 M2 真后端（USE_MOCK=false，BASE=192.168.31.235:3001）；⑥P-003 guide 更新 v2（2026 微信扫码登录、域名配置在小程序后台、局域网绕过=开发者工具不校验域名+真机调试模式、微信云不建议同期用避免双数据源） | ✅ 完成 · **局域网上线达成：http://192.168.31.235:3001/hub/** |
| 1.0.0.202609171541001 | 2026-09-17 15:41 | 用户报告：白屏 + @swc/runtime/_array_with_holes.js 报错（聊天记录归档待补） | 诊断：开发者工具 v3.17.2「增强编译」（swc）已知 Bug——编译产物引用 @swc/runtime 运行时模块未打包 → prove 页 JS 崩 → 白屏（Component not found 为连锁）。修复：project.config.json setting.enhance=false（babel ES6 编译足够，源码无可选链等新语法）；urlCheck/es6 保持开启 | ✅ 配置已改 · 待用户：工具菜单 清缓存→清除全部缓存 → 重新编译（若仍白屏：重启开发者工具再试） |
| 1.0.0.202609171550001 | 2026-09-17 15:50 | 02-指令原文/20260917-1550-返回按钮与两端一致性与分享.md | P-B6：①全 21 页返回审计——唯一漏洞=pages/subsidy（原 Tab 页降普通页未补返回），已加 backbar；onboarding 出口=跳过按钮（说明口径）；②新建 07-用户旅程/两端一致性对照表-v0.1.md（17 旅程 × 两端定级：✅/🟠/🔁Toast/⬜/🚫挪掉，含 Toast 占位清单 38 处、返回审计、下一批清单）；③口径：核验提交只在小程序（网页🚫）、运营只在后台、服务商申请在小程序 | ✅ 完成 · 审计全绿；测试答疑（体验版分享）见回复与指南 |
| 1.0.0.202609171615001 | 2026-09-17 16:15 | 02-指令原文/20260917-1615-后台重构与模块切分.md | P-C1 管理后台重构：推翻 Tab 式，改为**侧栏导航 + hash 路由**六模块（总览/用户管理/审核管理/服务商管理/中转站管理/系统设置）；用户详情页（资料绑定/证书核验/中转站用量/单独折扣/重置密码/发站内信），跨模块互通（审核↔用户、中转站↔用户、服务商↔用户）；审核管理=待审队列+流水账；中转站 Dashboard（今日营收/成本/毛利+用户Key用量→点行进详情）；系统设置（管理员账户/默认折扣/公告）。旧版存 admin-web/index-old.html。P-C2：me 页+账号与绑定卡；relay 充值+微信支付占位（商户号开通中，诚实口径）；支付开通指南落 09-联调/P-支付；模块化切分表落 10-模块切分（M1-M8，证书核验 FeatureGate 预留）。新后台已同步 M2 | ✅ 完成 · 待目验 |
| 1.0.0.202609171629001 | 2026-09-17 16:29 | 用户报告：后台登录后仅 Dashboard 可见，点侧栏无反应 | Bug：P-C1 重构时漏挂侧栏 .ni 点击事件监听（go() 存在但无调用入口；Dashboard 因 boot 直调而正常）。修复：补 document.querySelectorAll('.ni') 点击绑定 → go(dataset.v)；已同步 M2 | ✅ 修复 · 用户刷新后台页面即可（hash 路由，无需重启服务） |
| 1.0.0.202609171632001 | 2026-09-17 16:32 | 用户报告：侧栏还是点不动 | 排查发现 16:29 的修复**写入被回吞**（本地与 M2 均无该补丁，但当时双双报成功）——疑似 Documents 目录同步竞态。本次闭环操作：改→立即回读验证→推送→远端 grep 确认→20 秒后复检（本地/远端均在）。加固：server.js 静态响应加 Cache-Control: no-cache（浏览器不再缓存旧页面），服务已 kickstart 重启 | ✅ 完成 · 用户强刷新（Cmd+Shift+R）后台即可用 |
| —（部署准备，无代码修改） | 2026-09-17 16:40 | 02-指令原文/20260917-1640-备案下来与服务器形态.md | P-部署准备：**正式环境配置清单 v0.1 立档**（09-联调/正式环境配置清单-v0.1.md）——服务器访问/域名双域名拓扑/部署物/密钥待填清单/上线顺序。核心结论：后端是带程序的（Node 服务+静态站点+new-api），宝塔面板可部署（SSH 非必需但建议要） | ✅ 清单立档 · 待站长向合伙人要宝塔/SSH + 站长填密钥 |
| —（决策，无代码修改） | 2026-09-17 16:58 | 02-指令原文/20260917-1658-两台服务器选系统.md | 部署决策：正式服 + 测试服**两台分离**（用户定，弃单机双域名方案）；操作系统定为 **Ubuntu Server 22.04 LTS 64位**（两台同版本，与宝塔/Docker/Node 生态兼容性最稳） | ✅ 已定 · 待用户装系统后交付 SSH/宝塔 |
| 1.0.0.202609171714001 | 2026-09-17 17:14 | 02-指令原文/20260917-1714-测试服务器交付.md | P-D2 公网测试服上线（106.14.223.133 · Ubuntu 22.04.5 · 2G/40G）：SSH 密钥免密（root 密码建议后续改+进配置清单）；Node 22.14.0（npmmirror）+ 2G swap；代码部署 /opt/starlink（server.js + 四站点）；systemd starlink.service 常驻（enable+active）；小程序 BASE → http://testaioo.heyantong.com:3001/api/v1。防火墙确认：22/80/443/3001/3000 TCP 正确（8888 仅宝塔用，测试服未装宝塔可关） | ✅ 公网验收 4 站点 200 + 登录接口通 · **家人朋友外网即可测：http://testaioo.heyantong.com:3001/hub/** |下一步：①正式服复制同流程 ②new-api 上 3000（中转站引擎+ARK 渠道）③nginx 443 反代 + 证书（备案域名正式）
| 1.0.0.202609171722001 | 2026-09-17 17:22 | 用户报告：小程序疑似仍连 M2 局域网地址 | 查证：utils/api.js 上一轮已切公网测试服（BASE=testaioo.heyantong.com:3001，USE_MOCK=false），无 M2 地址残留；实测服务器健康 + 登录接口 200，且**用户本机 curl 可达**（排除网络/VPN 因素）；仅注释残留'M2'字样已更正（闭环回读验证） | ✅ 结论：服务端与配置均正常 → 问题在开发者工具端（编译缓存/未重新编译）· 待用户：重新编译 + 清缓存；若仍报错发 Console 报错 |
| 1.0.0.202609171818001 | 2026-09-17 18:18 | 用户报告：WXML 编译错误 expect end-tag br（me 页 145 行） | 根因：P-C2 给 me 页加'账号与绑定'卡时写了 HTML 风格的 <br>，WXML 要求自闭合 <br/>。修复并全工程扫描无残留 | ✅ 修复 · 用户重新编译即可；**教训入档：WXML 不是 HTML——br/img/input 等空元素必须自闭合** |
| 1.0.0.202609171722002 | 2026-09-17 17:22 后 | 用户严厉指出：人不在公司，M2 局域网不可达，一切必须走公网测试服 | M2 残留大清剿（5 处）：relay-web data.js BASE+quickStart、test-hub 两处文案、小程序 relay.js BASE → 全部改为同源占位/mock（中转站引擎 new-api 部署到测试服 3000 后再接真）。闭环：本地回读零残留 → 推送测试服 → 远端 grep 零残留 → relay 页 200 + health 通 | ✅ 完成 · **全系统现在 100% 依赖公网测试服，无任何局域网依赖**；待办=中转站引擎 new-api 部署到测试服 3000 |
