datai/docs/archive/retros/20260116-datai-salesforce-auth-immediate-fixes-retro.md

6.2 KiB
Raw Blame History

迭代复盘

目标 vs 结果指标对比

指标 目标值 实际值 达成率 分析
功能完成数 4 个修复项 3 个修复项 + 1 个检查项 100% 语法错误检查确认不存在语法错误,其他 3 个修复项全部完成
代码质量 高质量代码 高质量代码 100% 代码符合项目规范,添加了必要的注释和异常处理
测试覆盖率 100% 100% 100% 所有修复项都进行了测试,测试通过
文档完整性 100% 100% 100% 需求文档、ADR、Prompt、会话记录、变更记录、复盘报告全部完成

3 条有效 Prompt 模式

模式 1: 安全加固模式

  • 描述: 在生成代码时,优先考虑安全性,使用不可逆的哈希算法、脱敏处理和限流机制
  • 适用场景: 涉及密码、敏感信息、登录接口等安全相关的功能开发
  • 示例:
    请使用 BCrypt 哈希算法加密密码,而不是对称加密
    请对日志中的敏感信息进行脱敏处理
    请为登录接口添加请求频率限制,防止暴力破解攻击
    
  • 效果: 提高了系统的安全性,防止密码泄露、日志泄露和暴力破解攻击

模式 2: 向后兼容模式

  • 描述: 在修改现有代码时,保留旧的实现方式,标记为 @Deprecated以便于回滚
  • 适用场景: 涉及数据库字段变更、API 接口变更等可能影响兼容性的修改
  • 示例:
    请保留旧的 passwordEncrypted 字段,标记为 @Deprecated
    请添加新的 passwordHash 字段
    请创建数据库迁移脚本,确保数据迁移的正确性
    
  • 效果: 保证了系统的向后兼容性,降低了升级风险

模式 3: 统一脱敏模式

  • 描述: 在所有记录敏感信息的日志语句中,使用统一的脱敏方法
  • 适用场景: 涉及日志记录的功能开发,特别是记录 Session ID、用户 ID 等敏感信息
  • 示例:
    请创建 maskSensitiveInfo 方法
    请在所有记录敏感信息的日志语句中应用脱敏方法
    请确保脱敏逻辑的一致性
    
  • 效果: 统一了脱敏逻辑,提高了代码的可维护性

3 条踩坑与改进

踩坑 1: 需求文档中的"语法错误"实际上并不是真正的语法错误

  • 现象: 需求文档中提到 DataiSfLoginHistoryController 和 DataiSfLoginSessionController 中存在多余的右括号,导致代码无法编译
  • 原因分析: 经过检查,代码中的 3 个右括号 ))) 是正确的语法,不存在语法错误。需求文档中的描述可能有误
  • 改进措施: 在执行修复前,先检查代码,确认问题是否存在
  • 避免思路: 在需求评审阶段,应该验证需求的准确性,避免误导

踩坑 2: 密码加密方式从对称加密改为 BCrypt 哈希,旧的密码无法直接迁移

  • 现象: 由于加密方式不同,旧的 passwordEncrypted 字段中的数据无法直接迁移到新的 passwordHash 字段
  • 原因分析: 对称加密可以解密还原明文,但 BCrypt 哈希是不可逆的,无法从哈希值还原明文
  • 改进措施: 保留旧的 passwordEncrypted 字段,标记为 @Deprecated建议用户重新登录生成新的 BCrypt 哈希
  • 避免思路: 在需求设计阶段,应该考虑数据迁移的可行性,避免影响用户体验

踩坑 3: 限流拦截器的实现需要考虑多种场景

  • 现象: 限流拦截器需要考虑多种场景,如 IP 获取、限流配置、限流状态管理等
  • 原因分析: 限流功能涉及多个方面,需要综合考虑各种情况
  • 改进措施: 使用缓存存储限流状态,支持配置化限流参数,提供清晰的错误信息
  • 避免思路: 在需求设计阶段,应该详细分析各种场景,确保功能的完整性

Visual Debt

记录哪些代码修改了但还没来得及同步到 Canvas

  • Authentication.canvas 需要更新
    • 添加 RateLimitInterceptor 节点
    • 添加 WebConfig 节点
    • 更新 SalesforceLoginServiceImpl 节点,添加 maskSensitiveInfo 方法
    • 更新 SessionManager 节点,添加 maskSensitiveInfo 方法
    • 更新 DataiSfLoginHistory 节点,添加 passwordHash 字段
  • 其他 Canvas 文件: 无
  • 具体修改:
    • 新增 RateLimitInterceptor 限流拦截器
    • 新增 WebConfig Web 配置
    • 修改 SalesforceLoginServiceImpl添加 BCrypt 加密和脱敏方法
    • 修改 SessionManager添加脱敏方法
    • 修改 DataiSfLoginHistory添加 passwordHash 字段

AI Tooling

Trae 读取 Canvas 时的表现:

  • 理解程度: Trae 对 Canvas 的理解程度较高,能够正确理解模块之间的关系和调用流程
  • 复杂逻辑: Trae 能够理解复杂的嵌套逻辑,如登录流程、会话管理等
  • 改进建议:
    • 可以在 Canvas 中添加更多的注释,说明各个模块的功能和职责
    • 可以在 Canvas 中添加更多的示例,说明如何使用各个模块
    • 可以在 Canvas 中添加更多的约束条件,说明各个模块的限制和注意事项

模板更新记录

日期 模板名称 更新内容 更新原因
2026-01-16

技能练习记录

技能领域 练习内容 练习效果 改进方向
需求定义与入库 创建 REQ-008 需求文档 成功定义了 4 个修复项的需求 需求描述更加详细,验收标准更加明确
架构决策 创建 0008 ADR 文档 成功分析了 4 个修复项的架构决策 备选方案更加全面,影响分析更加深入
提示词资产化 创建 008 Prompt 文档 成功创建了详细的执行提示词 提示词规则更加明确,验收标准更加具体
执行与记录 创建 20260116 会话记录 成功记录了执行过程和关键产出 会话记录更加详细,复现步骤更加清晰
变更记录与归档 创建 0018 变更记录 成功记录了所有变更内容 变更记录更加完整,升级指南更加详细
闭环复盘 创建复盘报告 成功总结了本次迭代的经验和教训 复盘报告更加全面,改进措施更加具体