datai/docs/archive/prompts/008-datai-salesforce-auth-immediate-fixes.md

146 lines
6.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Prompt First 模板
## 输入引用
引用相关的 docs 文档链接:
- [需求文档](../requirements/REQ-008.md) - datai-salesforce-auth 模块立即修复事项
- [架构决策](../decisions/adr/0008-datai-salesforce-auth-immediate-fixes.md) - datai-salesforce-auth 模块立即修复架构决策
## Context Maps
强制列出本次 Prompt 依赖的 Canvas 文件:
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
- **相关节点**: [SessionManager](../../datai-salesforce-auth/src/main/java/com/datai/auth/core/SessionManager.java) - 会话管理器
- **相关节点**: [SalesforceLoginServiceImpl](../../datai-salesforce-auth/src/main/java/com/datai/auth/service/impl/SalesforceLoginServiceImpl.java) - 登录服务实现
- **相关节点**: [DataiSfLoginHistoryController](../../datai-salesforce-auth/src/main/java/com/datai/auth/controller/DataiSfLoginHistoryController.java) - 登录历史控制器
- **相关节点**: [DataiSfLoginSessionController](../../datai-salesforce-auth/src/main/java/com/datai/auth/controller/DataiSfLoginSessionController.java) - 登录会话控制器
## 目标
生成代码以修复 datai-salesforce-auth 模块中的 4 个问题:
1. **语法错误修复**:修复 DataiSfLoginHistoryController 和 DataiSfLoginSessionController 中的多余右括号
2. **密码加密方式调整**:将对称加密改为不可逆的 BCrypt 哈希算法
3. **敏感信息日志脱敏**:对 Session ID、用户 ID 等敏感信息进行脱敏处理
4. **请求频率限制**:为登录接口添加请求频率限制功能
## 输出格式
代码示例语言Java
需要生成以下文件和代码:
1. **修复语法错误**
- [DataiSfLoginHistoryController.java](../../datai-salesforce-auth/src/main/java/com/datai/auth/controller/DataiSfLoginHistoryController.java) - 修复第 82 行的语法错误
- [DataiSfLoginSessionController.java](../../datai-salesforce-auth/src/main/java/com/datai/auth/controller/DataiSfLoginSessionController.java) - 修复第 82 行的语法错误
2. **密码加密方式调整**
- [DataiSfLoginHistory.java](../../datai-salesforce-auth/src/main/java/com/datai/auth/model/domain/DataiSfLoginHistory.java) - 添加 passwordHash 字段,移除 passwordEncrypted 字段
- [SalesforceLoginServiceImpl.java](../../datai-salesforce-auth/src/main/java/com/datai/auth/service/impl/SalesforceLoginServiceImpl.java) - 使用 BCrypt 加密密码
- [DataiSfLoginHistoryMapper.xml](../../datai-salesforce-auth/src/main/resources/mapper/auth/DataiSfLoginHistoryMapper.xml) - 更新数据库映射
3. **敏感信息日志脱敏**
- [SalesforceLoginServiceImpl.java](../../datai-salesforce-auth/src/main/java/com/datai/auth/service/impl/SalesforceLoginServiceImpl.java) - 添加脱敏方法并应用到日志中
- [SessionManager.java](../../datai-salesforce-auth/src/main/java/com/datai/auth/core/SessionManager.java) - 添加脱敏方法并应用到日志中
4. **请求频率限制**
- [DataISfLoginController.java](../../datai-salesforce-auth/src/main/java/com/datai/auth/controller/DataISfLoginController.java) - 添加 @RateLimiter 注解
- [application.yml](../../datai-salesforce-auth/src/main/resources/application.yml) - 添加频率限制配置
## 约束
列出使用此提示词时的约束条件:
- **技术栈限制**:必须使用 Spring Boot 3.x、MyBatis、BCrypt
- **性能要求**:修复后不影响登录接口响应时间,响应时间 < 2
- **安全性要求**
- 密码必须使用不可逆的哈希算法BCrypt
- 敏感信息在日志中必须进行脱敏处理
- Session ID 只显示前 8
- 请求频率限制每分钟最多 5 次登录尝试
- **兼容性要求**修复后不影响现有功能向后兼容
- **代码规范**遵循项目现有的代码风格和命名规范
## Rule Set
**具体规则**
1. **语法错误修复**
- 必须移除多余的右括号 `)))`改为 `))`
- 必须保持代码的其他部分不变
2. **密码加密方式调整**
- 必须使用 `BCrypt.hashpw(password, BCrypt.gensalt())` 加密密码
- 必须使用 `BCrypt.checkpw(password, hash)` 验证密码
- 必须将 `password_encrypted` 字段改为 `password_hash`
- 必须更新所有相关的数据库映射和查询语句
3. **敏感信息日志脱敏**
- 必须创建 `maskSensitiveInfo(String info)` 方法
- 必须对 Session ID用户 ID 等敏感信息应用脱敏方法
- 脱敏规则
- 如果字符串长度 <= 8显示前 2 + `******`
- 如果字符串长度 > 8显示前 4 位 + `******` + 后 4 位
- 必须更新所有记录敏感信息的日志语句
4. **请求频率限制**
- 必须在所有登录接口添加 `@RateLimiter` 注解
- 必须配置频率限制为:每分钟最多 5 次登录尝试
- 必须使用 Redis 存储请求计数
- 必须在配置文件中添加频率限制相关配置
## 验收标准
定义验证输出质量的具体标准:
### 功能完整性
- [ ] 语法错误已修复,代码能够正常编译
- [ ] 密码加密已改为 BCrypt无法直接解密
- [ ] 日志中敏感信息已脱敏Session ID 只显示前 8 位
- [ ] 登录接口已添加请求频率限制,每分钟最多 5 次登录尝试
### 代码正确性
- [ ] 所有修改的代码符合 Java 编码规范
- [ ] 所有修改的代码符合项目代码风格
- [ ] 所有修改的代码通过编译
- [ ] 所有修改的代码通过单元测试
### 文档准确性
- [ ] 所有修改的代码都有清晰的注释
- [ ] 所有修改的代码都符合需求文档的要求
- [ ] 所有修改的代码都符合 ADR 文档的决策
### 性能指标
- [ ] 登录接口响应时间 < 2
- [ ] 密码加密/验证性能无明显下降
- [ ] 日志脱敏性能无明显下降
- [ ] 请求频率限制性能无明显下降
## 风险
识别使用此提示词可能带来的风险
### 输出质量风险
- **风险**生成的代码可能不符合项目代码风格
- **缓解措施**仔细检查生成的代码确保符合项目规范
### 技术实现风险
- **风险**BCrypt 加密可能与现有代码不兼容
- **缓解措施**充分测试 BCrypt 加密和验证功能确保与现有代码兼容
### 业务风险
- **风险**修改数据库表结构可能影响现有数据
- **缓解措施**创建数据库迁移脚本确保数据迁移的正确性
### 时间成本风险
- **风险**修复 4 个问题可能需要较长时间
- **缓解措施**按优先级修复问题先修复语法错误再修复安全问题
## 使用记录
| 日期 | 使用场景 | 输入参数 | 输出结果 | 反馈 | 改进措施 |
|------|---------|---------|---------|------|----------|
| 2026-01-16 | datai-salesforce-auth 模块立即修复 | REQ-008, ADR-0008 | 生成修复代码 | 待评估 | 待改进 |