datai/docs/archive/REQ-007.md

199 lines
6.5 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.

---
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 |