发版 → 升级 → 诊断 → AI 分析 → 答复:五段一条链,最后一步你自己就能看到。
每段都写清:做法、判据、产物、细则在哪。
| 阶段 | 做法 | 判据 | 产物 | 细则 |
|---|---|---|---|---|
| 1. 开发发版 构建与发布 | • 版本唯一权威:MRRC.iss → 安装目录 version.txt• 发布前三道闸门:单元测试(含内联 JS 语法守卫)、全站结构审计、产物级热修验收 3/3 • Windows 包在真实 Windows 上构建(WDSP DLL → PyInstaller → Inno) • 站点维护 latest.json(升级)与 patch.json(热修) | 判据 = 服务器侧 SHA256 与清单一致(本机下载链路不可信) | MRRC-Setup.exe · MRRC-Setup-<ver>.exe · 上一版归档(三者都必须在 git 里)· latest.json · patch.json | 发版流程 · 全站审计工具 |
| 2. 版本升级 一次点击,或重启即热修 | • 页面菜单 ⬆️ 软件更新 →【立即升级】,或在启动器窗口输入 U• 后台下载(SHA256 校验 + 原子改名)→ 停服务 → 一次 UAC → 静默安装 → 自动重启 • 【回退到上一版】走同一条路径 • 热修通道覆盖 www/**、可热修模块与 vendor:重启即生效、无需重装 | 成功判据:state.json.lastResult.status == "ok"(由新版本自己在启动时自证) | updates/state.json、upgrade.request、updates/install-<ver>.log | 一键升级与排障 · 10 个 Windows 陷阱(RC-002) · 可热修范围 |
| 3. 问题诊断 一键诊断包 | • 菜单 🐞 遇到问题 → 填现象 → 一键生成诊断包 • 包含日志尾部 + 脱敏配置(白名单、密钥替换)+ 环境快照 + 自动体检摘要 • 永不打包:用户数据库、证书与私钥、会话密钥;**只有用户点击才上传** • 摘要要能一眼读:数据新鲜度、音频健康、热修/WDSP 状态、启动次数与时间跨度(区分重启与崩溃)、音频设备判定 | 判据 = 用户和维护者都能不读原始日志就分清"环境问题"与"产品缺陷" | diagnostics/summary.txt · diagnostics/env.json · logs/ · state/config-redacted.ini | 诊断包与自动分诊 |
| 4. AI 分析 定时、证据优先 | • 定时任务轮询接收端 → 取新上报 → 生成摘要 → 交给项目 AI(带分诊 skill)分析 • skill 固定判定纪律:保守判定、无证据不下结论、环境类不算缺陷、每条答复必须可执行 • 产出结构化 JSON(verdict/status/category/diagnosis/solution/evidence/keys) • 护栏:幂等、默认不发布、半包跳过、单轮上限、超时控制、适配 cron 的窄 PATH | 材料不足 → need_more_info(绝不猜);确认缺陷 → needs_code_change + 文件/函数 | dist/support_answers/<编号>.{digest.md,answer.json,card.html} + 已发布的答复卡 | 自动分诊工具 · 分诊 skill |
| 5. 回复解决 公开、可搜索、自助解决 | • 每条结论成为一张答复卡:编号 / 症状 / 诊断(附证据)/ 结论 / 你要做的 / 状态 • 发布到公开答复页:按编号或关键词搜索, #编号 直达并自动填入搜索框• 已知问题卡面向用户看到的现象写(例:"🐞 页面按钮点不动" → 重启 MRRC 拉热修即修复) • 确认是缺陷:先给临时规避,再修代码;能热修就热修,否则发版;卡片随后标注"已修复 · 版本号" | 判据 = 用户照着卡片就能自己解决;不能解决的,带着已定位的证据进入修复流程 | website/answers/index.html(公开),一个上报编号一张卡 | 公开答复页 · 功能页 → 支持生命周期 |
version.txt;升级成功唯一判据 = lastResult == "ok"。www/**、可热修模块、vendor);其余一律发版。need_more_info。每次事故都要留下一条守卫 —— 没有守卫就不算修完。
| 事故 | 新增的守卫 |
|---|---|
| IOLoop 楔死 / 蓝牙 DAC 致 TX 静默(RC-001) | 心跳看门狗 + 线程栈转储 + 发射初始化耗时打点 |
| 升级链路 10 个静默失效(RC-002) | 10 项修复 + 回归测试 + "新版启动自证成功" |
打包漏 upgrade_core → /api/update 报 ModuleNotFoundError | 加入 spec 的 _APP_MODULES;规则:函数内新 import 的模块必须登记 |
| GBK 控制台 emoji 杀死日志转发线程 | 启动器 stdio 统一 UTF-8 + _safe_print + 行缓冲 |
| 页面少写一个引号 → 整页按钮失效(6.1.12) | 内联 JS 语法守卫:所有页面逐段 node --check |
| 站点漂移:断链 / 样式不统一 / 中文滞后 | dev_tools/site_audit.py + 严格模式测试接入测试套件 |