datai/docs/archive/REQ-007.md

6.5 KiB
Raw Blame History

name description
REQ-007 查询不同类型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)

技术栈

  • Java 17/21
  • Spring Boot 3.x
  • MyBatis Plus
  • Salesforce API

接口要求

  • REST API
  • SOAP API
  • GraphQL API

数据库要求

  • MySQL
  • PostgreSQL
  • Oracle

接口设计

接口1: 查询不同类型ORG成功登录历史

接口路径: GET /salesforce/login/history/success/{orgType}

请求参数:

参数名 类型 必填 描述 示例
orgType String ORG类型Source/Target/Sandbox/Production等 Source

响应数据:

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

响应数据:

{
  "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分组每组返回最新一条数据

请求参数: 无

响应数据:

{
  "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 - Salesforce数据及时同步至本地数据库

后续需求

外部依赖

  • [Salesforce API] - Salesforce登录API

变更历史 (Change History)

日期 版本 变更内容 变更人
2026-01-16 1.0.0 初始版本 SSOT Architect