146 lines
6.8 KiB
Markdown
146 lines
6.8 KiB
Markdown
# 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 | 生成修复代码 | 待评估 | 待改进 |
|