datai/docs/requirements/2026-01-21-003-06-salesforce-login-status-query.md

11 KiB
Raw Blame History

Salesforce 登录状态查询需求

元数据

  • 需求编号2026-01-21-003-06
  • 父需求编号2026-01-21-003
  • 创建时间2026-01-21
  • 创建人SSOT 架构师
  • 状态:待开始
  • 优先级:高

需求概述

提供登录状态查询接口,用户可以查看当前所有系统的登录状态。提供查询接口返回当前所有系统的登录状态,显示每个系统的登录状态(已登录/未登录/已过期),显示每个系统的 Session ID脱敏处理显示每个系统的过期时间支持按 org 类型筛选查询结果,支持按系统 ID 查询特定系统的登录状态。

目标

  1. 登录状态查询:提供登录状态查询接口,用户可以查看当前所有系统的登录状态
  2. 系统登录状态:显示每个系统的登录状态(已登录/未登录/已过期)
  3. Session ID 显示:显示每个系统的 Session ID脱敏处理
  4. 过期时间显示:显示每个系统的过期时间
  5. 按 org 类型筛选:支持按 org 类型筛选查询结果
  6. 按系统 ID 查询:支持按系统 ID 查询特定系统的登录状态

业务上下文

当前问题

  • 缺乏登录状态查询功能
  • 用户无法查看当前所有系统的登录状态

业务场景

Salesforce 登录状态查询
├─ 提供查询接口返回当前所有系统的登录状态
├─ 显示每个系统的登录状态(已登录/未登录/已过期)
├─ 显示每个系统的 Session ID脱敏处理
├─ 显示每个系统的过期时间
├─ 支持按 org 类型筛选查询结果
└─ 支持按系统 ID 查询特定系统的登录状态

应用场景

  1. 登录状态监控:用户可以查看当前所有系统的登录状态
  2. Session 管理:用户可以查看和管理 Session ID

功能需求

核心功能

功能 1查询所有系统登录状态

  • 描述:提供查询接口返回当前所有系统的登录状态
  • 验收标准
    1. 提供查询接口返回当前所有系统的登录状态
    2. 显示每个系统的系统 ID
    3. 显示每个系统的系统名称
    4. 显示每个系统的系统类型
    5. 显示每个系统的 org 类型
    6. 显示每个系统的登录状态(已登录/未登录/已过期)
    7. 显示每个系统的 Session ID脱敏处理
    8. 显示每个系统的过期时间
    9. 显示每个系统的用户信息
    10. 显示每个系统的组织信息
  • 优先级:高
  • 依赖关系依赖缓存优化功能2026-01-21-003-04、会话管理功能2026-01-21-003-05

功能 2按 org 类型筛选查询

  • 描述:支持按 org 类型筛选查询结果
  • 验收标准
    1. 支持按 org 类型source筛选查询结果
    2. 支持按 org 类型target筛选查询结果
    3. 支持查询所有 org 类型的系统
    4. 支持同时查询源 org 和目标 org 的系统
  • 优先级:高
  • 依赖关系:依赖查询所有系统登录状态功能

功能 3按系统 ID 查询

  • 描述:支持按系统 ID 查询特定系统的登录状态
  • 验收标准
    1. 支持按系统 ID 查询特定系统的登录状态
    2. 返回指定系统的详细登录状态
    3. 系统不存在时返回错误信息
  • 优先级:高
  • 依赖关系:依赖查询所有系统登录状态功能

功能 4Session ID 脱敏处理

  • 描述:显示每个系统的 Session ID脱敏处理
  • 验收标准
    1. Session ID 进行脱敏处理
    2. 只显示 Session ID 的前 4 位和后 4 位
    3. 中间部分用 **** 代替
    4. 格式:{前4位}****{后4位}
  • 优先级:高
  • 依赖关系:依赖查询所有系统登录状态功能

功能 5会话信息管理

  • 描述:支持会话信息的增删改查
  • 验收标准
    1. 支持查询会话信息列表
    2. 支持查询会话信息详情
    3. 支持新增会话信息
    4. 支持修改会话信息
    5. 支持删除会话信息
    6. 支持批量删除会话信息
    7. 支持根据 Session ID 查询会话信息
    8. 支持查询最近一条活跃的会话信息
    9. 支持根据 ORG 类型查询最近一条活跃的会话信息
    10. 支持导出会话信息列表为 Excel 文件
  • 优先级:高
  • 依赖关系:依赖查询所有系统登录状态功能

非功能需求

性能需求

  • 查询时间:登录状态查询响应时间 < 1 秒
  • 并发用户数:支持 100+ 并发用户

安全需求

  • 数据安全Session ID 进行脱敏处理
  • 访问控制:只有授权用户才能查询登录状态

可用性需求

  • 系统可用性99.9%

可维护性需求

  • 代码可读性:代码符合项目编码规范,注释完整
  • 测试覆盖率:单元测试覆盖率 ≥ 80%

数据需求

数据模型

datai_sf_login_sessionSalesforce 登录会话表)

datai_sf_login_session (Salesforce 登录会话表)
├─ id (BIGINT) - 主键ID
├─ username (VARCHAR) - 用户名
├─ login_type (VARCHAR) - 登录类型oauth2/session_id/cli/legacy_credential
├─ status (VARCHAR) - 会话状态active/inactive
├─ login_time (DATETIME) - 登录时间
├─ expire_time (DATETIME) - 过期时间
├─ last_activity_time (DATETIME) - 最后活动时间
├─ login_ip (VARCHAR) - 登录 IP
├─ device_info (VARCHAR) - 设备信息
├─ browser_info (VARCHAR) - 浏览器信息
├─ session_id (VARCHAR) - 会话 ID
├─ dept_id (BIGINT) - 部门 ID
├─ sf_user_id (VARCHAR) - Salesforce 用户 ID
├─ sf_organization_id (VARCHAR) - Salesforce 组织 ID
├─ instance_url (VARCHAR) - 实例 URLInstance URL
├─ org_type (VARCHAR) - ORG 类型S=源 org T=目标 org ST=源和目标 org
├─ create_by (VARCHAR) - 创建者
├─ create_time (DATETIME) - 创建时间
├─ update_by (VARCHAR) - 更新者
└─ update_time (DATETIME) - 更新时间

Redis 缓存结构(复用缓存优化需求的缓存结构)

缓存键:
- 源 orgCURRENT_SOURCE_ORG_RESULT
- 目标 orgCURRENT_TARGET_ORG_RESULT

说明:
- 缓存键通过 orgTypesource/target动态获取
- 源 org 和目标 org 使用不同的缓存键
- 支持同时管理源 org 和目标 org 的会话

缓存值SalesforceLoginResult 对象JSON 序列化):
{
  "success": true/false,
  "errorCode": "错误代码",
  "errorMessage": "错误信息",
  "sessionId": "Session ID",
  "refreshToken": "刷新令牌(仅 OAuth 流程中存在)",
  "tokenType": "Bearer",
  "expiresIn": "过期时间(秒)",
  "loginTimestamp": "登录时间戳",
  "expirationTimestamp": "过期时间戳(登录时间 + 过期时长)",
  "instanceUrl": "实例 URLInstance URL",
  "metadataServerUrl": "元数据服务器 URL",
  "sandbox": true/false,
  "passwordExpired": true/false,
  "userId": "用户 ID由 Salesforce 登录后返回)",
  "organizationId": "组织 ID由 Salesforce 登录后返回)",
  "orgType": "组织类型source/target",
  "userFullName": "用户全名",
  "userEmail": "用户邮箱",
  "organizationName": "组织名称(由 Salesforce 登录后返回)",
  "language": "语言",
  "timeZone": "时区"
}

缓存过期时间2 小时7200 秒)

数据存储需求

  • 缓存类型Redis
  • 存储容量:支持 1000 万+ 缓存键
  • 缓存过期策略TTLTime To Live自动过期

数据流转需求

登录状态查询
  └─ 从 Redis 读取所有系统的登录状态
  └─ 判断每个系统的登录状态(已登录/未登录/已过期)
  └─ 对 Session ID 进行脱敏处理
  └─ 返回登录状态信息

会话信息管理
  └─ 查询会话信息列表
  └─ 查询会话信息详情
  └─ 新增会话信息
  └─ 修改会话信息
  └─ 删除会话信息
  └─ 批量删除会话信息
  └─ 根据 Session ID 查询会话信息
  └─ 查询最近一条活跃的会话信息
  └─ 根据 ORG 类型查询最近一条活跃的会话信息
  └─ 导出会话信息列表为 Excel 文件

业务规则

  1. 登录状态判断:根据缓存信息判断登录状态(已登录/未登录/已过期)
  2. Session ID 脱敏Session ID 必须进行脱敏处理,只显示前 4 位和后 4 位
  3. 按 org 类型筛选:支持按 org 类型source/target筛选查询结果
  4. 按系统 ID 查询:支持按系统 ID 查询特定系统的登录状态
  5. 会话信息管理:支持会话信息的增删改查
  6. 会话状态管理支持会话状态active/inactive和最后活动时间管理

接口需求

登录状态查询接口

  1. 查询所有系统登录状态

    • 接口路径GET /api/salesforce/login/status/list
    • 请求参数:无(从缓存中读取所有 org 类型的登录状态)
    • 响应:所有系统的登录状态列表(源 org 和目标 org
  2. 查询特定 org 类型登录状态

    • 接口路径GET /api/salesforce/login/status/{orgType}
    • 请求参数orgType必填source/target
    • 响应:指定 org 类型的登录状态
  3. 查询源 org 登录状态

    • 接口路径GET /api/salesforce/login/status/source
    • 请求参数:无
    • 响应:源 org 的登录状态
  4. 查询目标 org 登录状态

    • 接口路径GET /api/salesforce/login/status/target
    • 请求参数:无
    • 响应:目标 org 的登录状态

会话信息管理接口

  1. 查询会话信息列表

    • 接口路径GET /auth/session/list
    • 请求参数:分页参数、筛选参数
    • 响应:会话信息列表
  2. 导出会话信息列表

    • 接口路径POST /auth/session/export
    • 请求参数:筛选参数
    • 响应Excel 文件
  3. 查询会话信息详情

    • 接口路径GET /auth/session/{id}
    • 响应:会话信息详情
  4. 新增会话信息

    • 接口路径POST /auth/session
    • 请求参数:会话信息
    • 响应:成功/失败
  5. 修改会话信息

    • 接口路径PUT /auth/session
    • 请求参数:会话信息
    • 响应:成功/失败
  6. 删除会话信息

    • 接口路径DELETE /auth/session/{ids}
    • 请求参数:会话 ID 数组
    • 响应:成功/失败
  7. 根据 Session ID 查询会话信息

    • 接口路径GET /auth/session/by-session-id/{sessionId}
    • 响应:会话信息
  8. 查询最近一条活跃的会话信息

    • 接口路径GET /auth/session/latest-active
    • 响应:会话信息
  9. 根据 ORG 类型查询最近一条活跃的会话信息

    • 接口路径GET /auth/session/latest-active/{orgType}
    • 请求参数orgTypeS/T/ST
    • 响应:会话信息

依赖关系

  • 依赖 2026-01-21-003-04:缓存优化
  • 依赖 2026-01-21-003-05:会话管理
  • 依赖 datai-cache-redis 模块

后续需求

  • 2026-01-21-003-07错误码映射