系统集成场景分析
文档编号:SYS-DES-BA-006
文档版本:1.0
创建日期:2026-03-08
文档作者:架构师
文档状态:✅ Reviewed and Approved(2026-03-08)
1. 概述
1.1 文档目的
本文档分析System基础平台与外部系统的集成场景,明确集成需求、数据流转和异常处理策略,为系统集成设计提供场景化指导。
1.2 输入文档
- 核心业务流程分析(SYS-DES-BA-003)
- 业务规则梳理(SYS-DES-BA-004)
- System系统业务需求文档(BRD)V1.1
- 现有系统架构资料
1.3 集成系统清单
| 系统名称 | 系统类型 | 集成方式 | 集成优先级 |
|---|---|---|---|
| HR系统 | 内部系统 | API + 消息队列 | P0 |
| ERP系统 | 内部系统 | API | P1 |
| OA系统 | 内部系统 | API + SSO | P1 |
| CRM系统 | 内部系统 | API | P2 |
| 财务系统 | 内部系统 | API | P2 |
| 邮件服务 | 外部服务 | SMTP/IMAP | P0 |
| 短信服务 | 外部服务 | HTTP API | P1 |
| 文件存储 | 外部服务 | S3/OSS API | P1 |
2. HR系统集成场景
2.1 员工入职同步
场景2.1.1:新员工入职自动开户
场景描述:HR系统中员工入职审批通过后,自动在System平台创建用户账号
集成方式:消息队列(异步)
触发条件:
- HR系统中员工入职审批通过
- 员工信息完整且有效
数据流向:
HR系统 → 消息队列 → System平台 → 用户创建 → 通知发送场景步骤:
| 步骤 | 操作方 | 操作内容 | 数据内容 |
|---|---|---|---|
| 1 | HR系统 | 入职审批通过 | 员工信息 |
| 2 | HR系统 | 发送入职事件 | EmployeeEntryEvent |
| 3 | 消息队列 | 事件入队 | 消息持久化 |
| 4 | System平台 | 消费入职事件 | 解析员工数据 |
| 5 | System平台 | 检查用户是否存在 | 员工编号查询 |
| 6 | System平台 | 创建用户账号 | 用户信息 |
| 7 | System平台 | 分配默认角色 | 普通用户角色 |
| 8 | System平台 | 分配主部门 | 部门映射 |
| 9 | System平台 | 生成初始密码 | 随机密码 |
| 10 | System平台 | 发送通知邮件 | 账号信息 |
| 11 | System平台 | 确认消息消费 | ACK确认 |
数据映射:
| HR字段 | System字段 | 转换规则 |
|---|---|---|
| employee_no | employee_no | 直接映射 |
| name | real_name | 直接映射 |
| 直接映射 | ||
| mobile | mobile | 直接映射 |
| department_code | dept_id | 部门编码映射 |
| position | position | 直接映射 |
| entry_date | entry_date | 日期格式转换 |
业务规则:
- BR-INT-001: 员工入职后24小时内必须完成账号创建
- BR-INT-002: 如用户已存在则更新员工状态为在职
- BR-INT-003: 初始密码必须满足复杂度要求
- BR-INT-004: 账号创建成功后必须发送通知邮件
异常处理:
| 异常场景 | 处理策略 | 补偿机制 |
|---|---|---|
| 消息消费失败 | 重试3次,间隔5分钟 | 死信队列,人工处理 |
| 部门映射失败 | 记录错误,分配默认部门 | 管理员手动调整 |
| 邮件发送失败 | 记录日志,不重试 | 管理员手动补发 |
| 用户创建失败 | 记录错误,不消费消息 | 人工排查后重试 |
幂等性保证:
- 使用员工编号作为幂等键
- 重复消息不重复创建用户
- 更新操作覆盖原有数据
场景2.1.2:员工信息变更同步
场景描述:HR系统中员工信息变更后,同步更新System平台用户信息
集成方式:消息队列(异步)
触发条件:
- HR系统中员工关键信息变更
- 变更字段涉及:姓名、部门、职位、邮箱、手机号
场景步骤:
| 步骤 | 操作方 | 操作内容 | 数据内容 |
|---|---|---|---|
| 1 | HR系统 | 员工信息变更 | 变更字段 |
| 2 | HR系统 | 发送变更事件 | EmployeeChangedEvent |
| 3 | System平台 | 消费变更事件 | 解析变更数据 |
| 4 | System平台 | 查询现有用户 | 员工编号查询 |
| 5 | System平台 | 比对变更字段 | 差异分析 |
| 6 | System平台 | 更新用户信息 | 增量更新 |
| 7 | System平台 | 记录变更日志 | 审计日志 |
| 8 | System平台 | 通知用户(如必要) | 变更通知 |
可变更字段:
- 姓名(real_name)
- 部门(dept_id)
- 职位(position)
- 邮箱(email)- 需校验唯一性
- 手机号(mobile)- 需校验唯一性
不可变更字段:
- 员工编号(employee_no)
- 用户名(username)
- 用户ID(user_id)
2.2 员工离职同步
场景2.2.1:员工离职自动禁用账号
场景描述:HR系统中员工离职审批通过后,自动禁用System平台账号
集成方式:消息队列(异步)
触发条件:
- HR系统中员工离职审批通过
- 离职日期到达
数据流向:
HR系统 → 消息队列 → System平台 → 账号禁用 → 会话清理场景步骤:
| 步骤 | 操作方 | 操作内容 | 数据内容 |
|---|---|---|---|
| 1 | HR系统 | 离职审批通过 | 离职信息 |
| 2 | HR系统 | 发送离职事件 | EmployeeResignEvent |
| 3 | System平台 | 消费离职事件 | 解析离职数据 |
| 4 | System平台 | 查询用户账号 | 员工编号查询 |
| 5 | System平台 | 禁用用户账号 | 状态更新为DISABLED |
| 6 | System平台 | 撤销所有Token | Token失效 |
| 7 | System平台 | 清理用户会话 | 会话销毁 |
| 8 | System平台 | 更新员工状态 | 状态更新为RESIGNED |
| 9 | System平台 | 记录审计日志 | 操作日志 |
| 10 | System平台 | 通知管理员 | 离职处理通知 |
业务规则:
- BR-INT-005: 离职员工账号必须立即禁用
- BR-INT-006: 禁用账号时所有Token立即失效
- BR-INT-007: 离职员工历史数据保留
- BR-INT-008: 离职处理必须记录审计日志
延迟离职处理:
| 场景 | 处理策略 |
|---|---|
| 提前审批 | 记录离职日期,到达日期自动处理 |
| 即时离职 | 立即处理 |
| 离职取消 | 撤销离职状态,恢复账号 |
2.3 组织架构同步
场景2.3.1:部门变更同步
场景描述:HR系统中组织架构变更后,同步更新System平台部门结构
集成方式:消息队列(异步)
触发条件:
- HR系统中部门新增、修改、删除
- HR系统中部门层级调整
场景步骤:
| 步骤 | 操作方 | 操作内容 | 数据内容 |
|---|---|---|---|
| 1 | HR系统 | 部门变更 | 部门数据 |
| 2 | HR系统 | 发送部门变更事件 | DepartmentChangedEvent |
| 3 | System平台 | 消费变更事件 | 解析部门数据 |
| 4 | System平台 | 部门映射转换 | 编码映射 |
| 5 | System平台 | 执行变更操作 | 增删改 |
| 6 | System平台 | 级联更新子部门 | 树路径更新 |
| 7 | System平台 | 更新部门用户 | 部门关联更新 |
| 8 | System平台 | 记录变更日志 | 审计日志 |
变更类型处理:
| 变更类型 | 处理逻辑 | 注意事项 |
|---|---|---|
| 新增部门 | 创建部门节点 | 检查父部门存在性 |
| 修改部门 | 更新部门信息 | 编码不可修改 |
| 删除部门 | 检查无用户后删除 | 有用户则标记禁用 |
| 部门移动 | 更新父部门和树路径 | 级联更新子部门 |
3. ERP系统集成场景
3.1 基础数据同步
场景3.1.1:供应商/客户主数据同步
场景描述:ERP系统中供应商或客户信息变更后,同步到System平台用于权限控制
集成方式:API(定时同步)
触发条件:
- 定时任务触发(每日凌晨2点)
- 手动触发同步
数据流向:
System平台 → API调用 → ERP系统 → 返回数据 → System平台处理场景步骤:
| 步骤 | 操作方 | 操作内容 | 数据内容 |
|---|---|---|---|
| 1 | System平台 | 触发同步任务 | 同步请求 |
| 2 | System平台 | 调用ERP接口 | GET /api/partners |
| 3 | ERP系统 | 返回数据列表 | 供应商/客户数据 |
| 4 | System平台 | 解析响应数据 | 数据转换 |
| 5 | System平台 | 比对本地数据 | 差异分析 |
| 6 | System平台 | 增量更新数据 | 增删改操作 |
| 7 | System平台 | 记录同步日志 | 同步结果 |
| 8 | System平台 | 发送同步报告 | 管理员通知 |
同步策略:
| 策略项 | 配置 |
|---|---|
| 同步频率 | 每日凌晨2:00 |
| 同步方式 | 全量比对,增量更新 |
| 超时时间 | 30秒 |
| 重试次数 | 3次 |
| 失败处理 | 记录日志,发送告警 |
4. OA系统集成场景
4.1 单点登录(SSO)
场景4.1.1:OA系统免密登录System平台
场景描述:用户已登录OA系统,点击链接免密跳转到System平台
集成方式:SSO Token(同步)
触发条件:
- 用户已登录OA系统
- 用户点击System平台链接
数据流向:
用户 → OA系统 → 生成SSO Token → 跳转System → 验证Token → 自动登录场景步骤:
| 步骤 | 操作方 | 操作内容 | 数据内容 |
|---|---|---|---|
| 1 | 用户 | 点击System链接 | 访问请求 |
| 2 | OA系统 | 生成SSO Token | 加密Token |
| 3 | OA系统 | 跳转System平台 | 携带Token |
| 4 | System平台 | 接收SSO请求 | 解析Token |
| 5 | System平台 | 验证Token有效性 | 签名验证 |
| 6 | System平台 | 验证Token时效 | 时间戳检查 |
| 7 | System平台 | 查询或创建用户 | 用户映射 |
| 8 | System平台 | 创建本地会话 | Token生成 |
| 9 | System平台 | 跳转工作台 | 登录成功 |
Token规范:
| 属性 | 说明 | 示例 |
|---|---|---|
| 用户标识 | OA系统用户唯一标识 | user_12345 |
| 时间戳 | Token生成时间 | 1646723400 |
| 有效期 | Token有效时长 | 5分钟 |
| 签名 | HMAC-SHA256签名 | abc123... |
安全控制:
- BR-INT-009: SSO Token有效期不超过5分钟
- BR-INT-010: SSO Token只能使用一次
- BR-INT-011: Token必须包含防篡改签名
- BR-INT-012: 用户映射失败时拒绝登录
4.2 待办集成
场景4.2.1:System待办同步到OA
场景描述:System平台产生的待办任务同步到OA系统统一展示
集成方式:API(实时推送)
触发条件:
- System平台产生新的待办任务
- 待办任务状态变更
场景步骤:
| 步骤 | 操作方 | 操作内容 | 数据内容 |
|---|---|---|---|
| 1 | System平台 | 待办任务创建 | 待办数据 |
| 2 | System平台 | 调用OA接口 | POST /api/todos |
| 3 | OA系统 | 接收待办数据 | 数据解析 |
| 4 | OA系统 | 创建待办记录 | 数据存储 |
| 5 | OA系统 | 返回处理结果 | 成功/失败 |
| 6 | System平台 | 记录同步状态 | 同步日志 |
待办数据格式:
{
"sourceSystem": "SYSTEM",
"todoId": "todo_12345",
"userId": "user_67890",
"title": "审批申请",
"content": "您有一条待审批的申请",
"url": "https://system.example.com/approval/12345",
"priority": "HIGH",
"createTime": "2026-03-08T10:30:00Z",
"expireTime": "2026-03-09T10:30:00Z"
}5. 外部服务集成场景
5.1 邮件服务集成
场景5.1.1:系统通知邮件发送
场景描述:系统需要向用户发送通知邮件(账号开通、密码重置等)
集成方式:SMTP(异步)
触发条件:
- 用户账号创建成功
- 用户申请密码重置
- 系统告警通知
场景步骤:
| 步骤 | 操作方 | 操作内容 | 数据内容 |
|---|---|---|---|
| 1 | System平台 | 触发邮件发送 | 邮件任务 |
| 2 | System平台 | 邮件内容渲染 | HTML内容 |
| 3 | System平台 | 发送SMTP请求 | SMTP协议 |
| 4 | 邮件服务器 | 接收邮件请求 | 邮件队列 |
| 5 | 邮件服务器 | 发送邮件 | 投递到收件箱 |
| 6 | 邮件服务器 | 返回发送结果 | 成功/失败 |
| 7 | System平台 | 记录发送日志 | 发送记录 |
邮件模板:
| 模板名称 | 使用场景 | 关键变量 |
|---|---|---|
| welcome | 账号开通 | username, password, loginUrl |
| reset_password | 密码重置 | resetUrl, expireTime |
| password_changed | 密码修改成功 | changeTime, ipAddress |
| login_alert | 异常登录提醒 | loginTime, ipAddress, location |
失败处理:
| 失败类型 | 重试策略 | 告警方式 |
|---|---|---|
| 网络超时 | 重试3次,间隔1分钟 | 无 |
| 邮箱不存在 | 不重试 | 记录日志 |
| 邮箱已满 | 重试1次,间隔1小时 | 无 |
| SMTP服务不可用 | 重试5次,间隔5分钟 | 发送告警 |
5.2 短信服务集成
场景5.2.1:验证码短信发送
场景描述:用户登录或敏感操作时需要短信验证码
集成方式:HTTP API(同步)
触发条件:
- 用户开启短信二次验证
- 敏感操作确认
场景步骤:
| 步骤 | 操作方 | 操作内容 | 数据内容 |
|---|---|---|---|
| 1 | 用户 | 请求发送验证码 | 手机号 |
| 2 | System平台 | 生成验证码 | 6位随机数字 |
| 3 | System平台 | 保存验证码 | Redis缓存(5分钟) |
| 4 | System平台 | 调用短信API | POST /api/sms/send |
| 5 | 短信服务商 | 发送短信 | 短信投递 |
| 6 | 短信服务商 | 返回发送结果 | 发送状态 |
| 7 | System平台 | 返回发送结果 | 成功/失败 |
频率限制:
| 限制类型 | 限制值 | 说明 |
|---|---|---|
| 单手机号日限制 | 10条 | 防止短信轰炸 |
| 单IP日限制 | 50条 | 防止恶意调用 |
| 发送间隔 | 60秒 | 同一手机号间隔 |
| 验证码有效期 | 5分钟 | 过期需重新获取 |
5.3 文件存储集成
场景5.3.1:用户头像上传
场景描述:用户上传头像,存储到对象存储服务
集成方式:S3/OSS API(同步)
触发条件:
- 用户上传头像文件
场景步骤:
| 步骤 | 操作方 | 操作内容 | 数据内容 |
|---|---|---|---|
| 1 | 用户 | 选择头像文件 | 图片文件 |
| 2 | System平台 | 校验文件格式 | 格式检查 |
| 3 | System平台 | 校验文件大小 | 大小检查(最大2MB) |
| 4 | System平台 | 生成文件路径 | 用户ID/avatar/timestamp.jpg |
| 5 | System平台 | 上传文件到OSS | PUT Object |
| 6 | OSS服务 | 存储文件 | 文件持久化 |
| 7 | OSS服务 | 返回文件URL | 访问地址 |
| 8 | System平台 | 更新用户头像URL | 数据库更新 |
| 9 | System平台 | 返回上传结果 | 成功/失败 |
文件规范:
| 属性 | 限制 | 说明 |
|---|---|---|
| 格式 | JPG, PNG, GIF | 图片格式 |
| 大小 | 最大2MB | 文件大小限制 |
| 尺寸 | 建议200x200 | 推荐尺寸 |
| 存储路径 | user/{userId}/avatar/ | 按用户隔离 |
| 访问权限 | 公开读 | 允许公开访问 |
6. 集成异常处理
6.1 异常分类
| 异常类型 | 说明 | 示例 |
|---|---|---|
| 网络异常 | 网络连接问题 | 超时、断开 |
| 服务异常 | 外部服务故障 | 500错误、服务不可用 |
| 数据异常 | 数据格式或内容问题 | 格式错误、数据缺失 |
| 业务异常 | 业务规则冲突 | 重复数据、状态冲突 |
| 安全异常 | 安全验证失败 | 签名错误、Token过期 |
6.2 异常处理策略
6.2.1 重试策略
| 场景 | 重试次数 | 重试间隔 | 退避策略 |
|---|---|---|---|
| 网络超时 | 3次 | 1秒 | 固定间隔 |
| 服务不可用 | 5次 | 5秒 | 指数退避 |
| 限流错误 | 3次 | 10秒 | 固定间隔 |
6.2.2 降级策略
| 场景 | 降级方案 | 用户体验 |
|---|---|---|
| 邮件服务不可用 | 延迟发送,记录队列 | 无感知 |
| 短信服务不可用 | 切换备用通道 | 可能有延迟 |
| HR同步失败 | 标记失败,人工处理 | 数据可能延迟 |
| SSO失败 | 跳转登录页 | 需手动登录 |
6.2.3 熔断策略
| 指标 | 阈值 | 动作 |
|---|---|---|
| 错误率 | > 50% | 开启熔断 |
| 响应时间 | > 5秒 | 开启熔断 |
| 熔断时长 | 60秒 | 自动恢复 |
| 半开请求数 | 5个 | 测试恢复 |
6.3 监控告警
| 监控项 | 阈值 | 告警级别 | 通知方式 |
|---|---|---|---|
| 集成失败率 | > 5% | 警告 | 邮件 |
| 集成失败率 | > 20% | 严重 | 邮件+短信 |
| 响应时间 | > 3秒 | 警告 | 邮件 |
| 响应时间 | > 10秒 | 严重 | 邮件+短信 |
| 消息堆积 | > 1000条 | 警告 | 邮件 |
| 消息堆积 | > 5000条 | 严重 | 邮件+短信 |
7. 集成安全要求
7.1 传输安全
| 要求项 | 具体要求 | 实现方式 |
|---|---|---|
| 传输加密 | 所有接口使用HTTPS | TLS 1.2+ |
| 证书验证 | 验证服务端证书 | 证书 pinning |
| 敏感数据加密 | 敏感字段额外加密 | AES-256 |
7.2 认证授权
| 要求项 | 具体要求 | 实现方式 |
|---|---|---|
| API认证 | 所有API调用需认证 | API Key + Secret |
| 请求签名 | 请求参数签名防篡改 | HMAC-SHA256 |
| Token时效 | Token有效期控制 | JWT过期时间 |
| 权限控制 | 最小权限原则 | 接口权限配置 |
7.3 数据安全
| 要求项 | 具体要求 | 实现方式 |
|---|---|---|
| 数据脱敏 | 日志中敏感数据脱敏 | 正则替换 |
| 数据加密 | 敏感数据存储加密 | AES加密 |
| 数据隔离 | 不同系统数据隔离 | 独立数据库/Schema |
| 审计日志 | 所有集成操作记录日志 | 统一日志平台 |
8. 集成测试场景
8.1 正常流程测试
| 测试场景 | 测试内容 | 预期结果 |
|---|---|---|
| 员工入职同步 | 模拟HR入职事件 | 用户自动创建 |
| 员工离职同步 | 模拟HR离职事件 | 用户自动禁用 |
| SSO登录 | 模拟OA跳转 | 免密登录成功 |
| 邮件发送 | 触发邮件通知 | 邮件成功发送 |
| 短信发送 | 请求验证码 | 短信成功发送 |
8.2 异常流程测试
| 测试场景 | 测试内容 | 预期结果 |
|---|---|---|
| HR系统不可用 | 模拟HR服务宕机 | 消息堆积,恢复后处理 |
| 重复入职事件 | 发送重复入职消息 | 幂等处理,不重复创建 |
| Token过期 | 使用过期SSO Token | 拒绝登录,跳转登录页 |
| 邮件发送失败 | 模拟SMTP错误 | 重试后记录失败 |
| 网络超时 | 模拟网络超时 | 重试机制生效 |
8.3 性能测试
| 测试场景 | 测试指标 | 目标值 |
|---|---|---|
| HR事件处理 | 处理延迟 | < 5秒 |
| SSO登录 | 响应时间 | < 1秒 |
| 邮件发送 | 发送延迟 | < 10秒 |
| 并发处理 | 同时处理事件数 | > 100/秒 |
9. 附录
9.1 集成接口清单
| 系统 | 接口名称 | 接口类型 | 调用方式 | 文档链接 |
|---|---|---|---|---|
| HR系统 | 入职事件 | 消息队列 | 消费 | 内部文档 |
| HR系统 | 离职事件 | 消息队列 | 消费 | 内部文档 |
| HR系统 | 变更事件 | 消息队列 | 消费 | 内部文档 |
| ERP系统 | 主数据查询 | API | HTTP GET | API文档 |
| OA系统 | SSO认证 | API | HTTP POST | 对接文档 |
| OA系统 | 待办推送 | API | HTTP POST | 对接文档 |
| 邮件服务 | SMTP发送 | SMTP | TCP | 标准协议 |
| 短信服务 | 短信发送 | API | HTTP POST | 服务商文档 |
| 文件存储 | 文件上传 | API | HTTP PUT | S3协议 |
9.2 消息队列Topic清单
| Topic名称 | 用途 | 生产者 | 消费者 |
|---|---|---|---|
| hr.employee.entry | 员工入职 | HR系统 | System平台 |
| hr.employee.resign | 员工离职 | HR系统 | System平台 |
| hr.employee.change | 员工变更 | HR系统 | System平台 |
| hr.department.change | 部门变更 | HR系统 | System平台 |
| system.user.change | 用户变更 | System平台 | 其他系统 |
9.3 修订记录
| 版本 | 日期 | 修订人 | 修订内容 |
|---|---|---|---|
| 1.0 | 2026-03-08 | 架构师 | 初始版本 |
文档编制:架构师
文档审核:技术负责人
编制日期:2026-03-08
