--- name: REQ-007 description: 查询不同类型ORG登录历史及自动登录功能 --- # 需求: 查询不同类型ORG登录历史及自动登录功能 ## 元数据 (Metadata) - **需求编号**: REQ-007 - **需求标题**: 查询不同类型ORG登录历史及自动登录功能 - **需求类型**: 功能需求 - **优先级**: 高 - **状态**: 阶段1-需求定义与入库 - **创建日期**: 2026-01-16 - **最后更新**: 2026-01-18 - **创建人**: SSOT Architect - **负责人**: 待分配 ## 需求描述 (Description) ### 背景 当前系统支持通过 `DataISfLoginController` 进行 Salesforce 登录操作,包括源ORG和目标ORG的登录。系统已经实现了基本的登录、登出、获取当前登录信息和自动登录功能。但是,当前的 `getCurrentLoginInfo` 接口只能获取当前登录信息,无法查询历史登录记录。而 `autoLogin` 接口虽然支持自动登录,但只能使用最新的登录历史记录。 ### 问题陈述 1. 无法查询特定类型ORG(如Source、Target、Sandbox、Production等)的成功登录历史记录 2. 无法基于指定的登录历史记录自动登录到对应的ORG环境 3. 开发人员和测试人员需要在多个环境间切换时,需要重复输入登录凭证,效率较低 ### 目标 1. 提供查询不同类型ORG成功登录历史的接口 2. 提供根据指定登录历史记录自动登录到对应ORG的接口 3. 支持多种ORG类型(Source、Target、Sandbox、Production等) 4. 提高多环境管理和切换的效率 ## 用户故事 (User Story) 作为一个系统管理员, 我想要查询不同类型ORG的成功登录历史,并基于历史记录自动登录到不同的ORG环境, 以便于快速切换和管理多个Salesforce环境。 ## 验收标准 (Acceptance Criteria) ### 功能验收标准 - [ ] AC1: 提供按orgType查询成功登录历史的接口 - [ ] AC2: 支持查询多种ORG类型(Source、Target、Sandbox、Production等) - [ ] AC3: 返回的登录历史包含完整的登录信息(用户名、登录类型、ORG类型、Session ID、登录时间等) - [ ] AC4: 提供根据登录历史ID自动登录到对应ORG的接口 - [ ] AC5: 自动登录时使用历史记录中的登录凭证 - [ ] AC6: 自动登录成功后返回完整的登录结果信息 - [ ] AC7: 提供查询所有登录成功历史的接口,按username和instanceUrl分组,每组返回最新一条数据 ### 非功能验收标准 - [ ] 性能要求: 查询登录历史响应时间 < 500ms - [ ] 安全要求: 登录历史中的敏感信息(如密码)需要加密存储 - [ ] 可用性要求: 接口可用性 > 99.9% - [ ] 日志要求: 记录所有登录历史查询和自动登录操作的日志 ### 测试用例 | 用例编号 | 用例描述 | 预期结果 | |----------|----------|----------| | TC-001 | 查询Source类型的登录历史 | 返回所有Source类型的成功登录记录 | | TC-002 | 查询Target类型的登录历史 | 返回所有Target类型的成功登录记录 | | TC-003 | 查询Sandbox类型的登录历史 | 返回所有Sandbox类型的成功登录记录 | | TC-004 | 查询不存在的ORG类型 | 返回空列表或提示无记录 | | TC-005 | 根据历史ID自动登录到Source ORG | 使用历史记录中的凭证成功登录到Source ORG | | TC-006 | 根据历史ID自动登录到Target ORG | 使用历史记录中的凭证成功登录到Target ORG | | TC-007 | 根据不存在的历史ID自动登录 | 返回错误信息,提示历史记录不存在 | | TC-008 | 查询登录历史时orgType为空 | 返回所有类型的登录历史记录 | | TC-009 | 查询所有登录成功历史分组数据 | 返回按username和instanceUrl分组的最新登录记录 | ## 技术要求 (Technical Requirements) ### 技术栈 - [x] Java 17/21 - [x] Spring Boot 3.x - [x] MyBatis Plus - [x] Salesforce API ### 接口要求 - [x] REST API - [ ] SOAP API - [ ] GraphQL API ### 数据库要求 - [x] MySQL - [ ] PostgreSQL - [ ] Oracle ### 接口设计 #### 接口1: 查询不同类型ORG成功登录历史 **接口路径**: `GET /salesforce/login/history/success/{orgType}` **请求参数**: | 参数名 | 类型 | 必填 | 描述 | 示例 | |--------|------|------|------|------| | orgType | String | 是 | ORG类型(Source/Target/Sandbox/Production等) | Source | **响应数据**: ```json { "code": 200, "message": "查询成功", "data": [ { "id": 1, "username": "admin@example.com", "loginType": "password", "orgType": "Source", "sessionId": "xxxxx", "loginTime": "2026-01-16 10:00:00", "userId": "005xxxxxxxxxxxx", "organizationId": "00Dxxxxxxxxxxxx" } ] } ``` #### 接口2: 根据登录历史自动登录 **接口路径**: `POST /salesforce/login/autoLoginByHistory` **请求参数**: | 参数名 | 类型 | 必填 | 描述 | 示例 | |--------|------|------|------|------| | historyId | Long | 是 | 登录历史记录ID | 1 | **响应数据**: ```json { "code": 200, "message": "自动登录成功", "data": { "userId": "005xxxxxxxxxxxx", "organizationId": "00Dxxxxxxxxxxxx", "sessionId": "xxxxx", "instanceUrl": "https://xxx.my.salesforce.com", "orgType": "Source", "loginType": "password" } } ``` #### 接口3: 查询所有登录成功历史分组数据 **接口路径**: `GET /auth/history/latest-success-grouped` **功能描述**: 查询所有登录成功的历史记录,按username和instanceUrl分组,每组返回最新一条数据 **请求参数**: 无 **响应数据**: ```json { "code": 200, "message": "查询成功", "rows": [ { "id": 1, "username": "admin@example.com", "loginType": "password", "instanceUrl": "https://xxx.my.salesforce.com", "orgType": "Source", "sessionId": "xxxxx", "loginTime": "2026-01-16 10:00:00", "userId": "005xxxxxxxxxxxx", "organizationId": "00Dxxxxxxxxxxxx" } ], "total": 1 } ``` ## 依赖关系 (Dependencies) ### 前置需求 - [REQ-001](./REQ-001.md) - Salesforce数据及时同步至本地数据库 ### 后续需求 - 无 ### 外部依赖 - [Salesforce API] - Salesforce登录API ## 相关文档 (Related Documents) - [设计文档](../design/0001-salesforce-cdc-realtime-sync.md) - [ADR 文档](../decisions/adr/0001-salesforce-cdc-sync.md) - [提示词文档](../prompts/0000-template.md) - [DataISfLoginController](../api-docs/auth/DataISfLoginController/) - Salesforce登录控制器接口文档 ## 变更历史 (Change History) | 日期 | 版本 | 变更内容 | 变更人 | |------|------|----------|--------| | 2026-01-16 | 1.0.0 | 初始版本 | SSOT Architect |