118 lines
6.2 KiB
Markdown
118 lines
6.2 KiB
Markdown
# 迭代复盘
|
||
|
||
## 目标 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 变更记录 | 成功记录了所有变更内容 | 变更记录更加完整,升级指南更加详细 |
|
||
| 闭环复盘 | 创建复盘报告 | 成功总结了本次迭代的经验和教训 | 复盘报告更加全面,改进措施更加具体 |
|