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