# 失败记忆与防回归台账 > 状态:初始风险基线;实现和运营过程中持续追加 > 用途:把容易重复的错误转化为持久约束和机械反馈 ## 1. 已知高风险模式 | ID | 失败模式 | 常见症状 | 持久护栏 | 验证 | |---|---|---|---|---| | FM-001 | 六爻顺序被反转 | 已知输入显示成另一卦;初爻画在顶部 | 领域统一 bottom-up,仅展示适配层反转 | 已知夹具 + 4,096 组合测试 + UI 语义测试 | | FM-002 | 6/7/8/9 映射错误 | 6/9 未变或 7/8 被标成动爻 | `LineValue` 封闭枚举,禁止散落 `% 2`/magic number | 8 种币面与映射参数化测试 | | FM-003 | 用二进制序号冒充文王卦序 | 阴阳形正确但卦号/卦名错误 | 经审核的完整模式映射表 | 64 模式唯一性与已知卦测试 | | FM-004 | UI top-down 数据回流领域层 | 保存后再打开结果颠倒 | DTO 字段名强制 `BottomUp`,序列化往返测试 | Room/DTO round-trip | | FM-005 | AI 参与或改写起卦 | AI 前后卦号变化;网络失败无结果 | `CastEngine` 纯 Kotlin;解释状态与结果分离;依赖检查 | 请求前后不可变测试、离线 E2E | | FM-006 | 用户未点击就发起 AI 请求 | 进入结果页即出现网络流量 | 显式调用门与同意状态机 | fake server 调用次数为 0 | | FM-007 | 生产密钥进入 APK | BuildConfig/strings/NDK 中出现 key | 后端代理、secret scan、APK 检查 | CI secret scan + release artifact scan | | FM-008 | 敏感问题进入日志 | crash/HTTP 日志出现原文 | 结构化脱敏错误码;发布关闭 body logger | 日志捕获测试与人工抓取 | | FM-009 | 内容缺失时数组错位 | 第 N 卦显示第 N+1 卦文本 | 以显式卦号查表;启动/构建期 schema 校验 | 缺失/重复条目负向测试 | | FM-010 | 使用未授权现代译文 | 上架投诉或无法说明来源 | 每段 `sourceRefs` + 许可证清单 + 发布签核 | 内容校验 + 人工版权审核 | | FM-011 | “国风”装饰损害可用性 | 低对比水墨、毛笔正文、小铜币按钮 | 语义令牌、48dp、对比度和反模式清单 | accessibility test + 真机评审 | | FM-012 | 动爻只用朱砂色表示 | 色觉用户/读屏无法识别 | 颜色 + 形状/符号 + 文本 | TalkBack 和去色检查 | | FM-013 | 旋转或进程重建重复提交 | 丢轮次、重复 AI 扣费 | SavedState、idempotency key、显式请求状态 | 重建/并发/取消测试 | | FM-014 | AI 输出被当 HTML/命令执行 | 恶意链接、样式或脚本进入 UI | 结构化纯文本 schema、长度和字符校验 | 对抗性响应测试 | | FM-015 | 高风险问题得到命令式答案 | 模型要求买卖、停药、立即分手 | 服务端安全提示、测试集、本地降级 | 高风险金丝雀用例 | | FM-016 | 为通过测试关闭门禁 | ignored test、宽泛 catch、destructive migration | DoD 与评审规则,失败必须归因 | CI 检查 skipped tests/配置差异 | | FM-017 | 文档与实现漂移 | 代理按旧命令/旧结构工作 | 文档状态、链接检查、行为变更同提交 | CI docs check + 里程碑熵清理 | | FM-018 | 将实时 AI 当唯一测试 oracle | 测试不稳定、成本和输出漂移 | fake server + 固定 schema fixtures | JVM/integration tests 无外网依赖 | ## 2. 故障登记模板 可复现且有再次发生价值的故障追加如下记录: ```markdown ## INCIDENT-YYYYMMDD-NN:短标题 - 发现日期: - 影响需求: - 环境/版本: - 用户症状: - 最小复现: - 根因: - 为什么旧护栏没捕获: - 修复: - 新增测试/静态规则: - 相关提交或 issue: - 后续观察: ``` 不要记录密钥、真实用户问题或完整 AI 回复;使用脱敏夹具。 ## 3. 提升规则 - 同类问题第一次出现:修复并加回归测试。 - 第二次出现:在本文件登记,并优先增加 lint、架构测试、schema 或聚合验证。 - 影响领域确定性、隐私、密钥、内容授权或高风险 AI 的问题:第一次即登记并加入发布门禁。 - 只写“以后注意”不算护栏;必须指出由什么测试、脚本、类型或评审入口阻止复发。 ## 4. 定期审计问题 每个里程碑检查: 1. 是否出现新的裸数字 2/3/6/7/8/9 业务逻辑? 2. 是否有非 `CastEngine` 代码重新推导卦象? 3. 是否有新增网络路径在用户同意前发送内容? 4. 是否有日志或测试夹具包含类似真实问题的文本? 5. 是否有卦辞、字体、图片缺少来源? 6. 是否有页面绕过主题令牌或无障碍语义? 7. 是否有依赖方向、测试命令或文档链接已经过期? 8. 是否有多次出现但仍只靠人工评审发现的问题? 审计输出应形成小型、可评审的修复任务,而不是一次大规模无边界重写。