datai/README.md

368 lines
14 KiB
Markdown
Raw Permalink Normal View History

# Datai - Salesforce 集成系统
## 项目概述
2026-01-14 22:57:15 +08:00
Datai 是一个基于若依 Geek 框架构建的企业级管理系统,采用模块化架构设计,提供可扩展的插件和场景模块。系统集成了 Salesforce 平台,支持多种 API 交互方式,实现数据同步、认证管理和元数据处理等核心功能。
**当前实现状态**:项目目前专注于从 Salesforce 源系统同步数据到本地数据库,包括元数据管理、批量数据同步、实时数据同步等功能。
2026-01-14 22:57:15 +08:00
### 项目地址
- **前端地址**: https://github.com/KrisDong-developer/datai-vue
- **后端地址**: https://github.com/KrisDong-developer/datai
---
## 技术栈
| 技术 | 版本 | 说明 |
|------|------|------|
| Java | 21 / 22 | 根项目使用 Java 21Salesforce 模块使用 Java 22 |
| Spring Boot | 3.5.7 | 核心框架 |
| MyBatis | 3.5.16 | 持久层框架 |
| MySQL | 8.3.0 | 关系型数据库 |
| PostgreSQL | 42.7.7 | 关系型数据库 |
| Knife4j | 4.5.0 | API 文档工具 |
| Druid | 1.2.27 | 数据库连接池 |
| Maven | - | 构建工具 |
| Salesforce Partner API | 0.0.1 | Salesforce SOAP API 客户端 |
| Salesforce Pub/Sub Client | 0.2.21 | Salesforce CDC 实时同步客户端 |
| Apache Avro | 1.11.3 | 数据序列化格式 |
| Fastjson | 2.0.58 | JSON 解析器 |
| JWT | 0.12.6 | Token 生成与解析 |
| PageHelper | 2.1.1 | 分页插件 |
2026-01-14 22:57:15 +08:00
---
## 项目结构
```
datai/
├── datai-admin/ # 管理后台启动模块
2026-01-14 22:57:15 +08:00
├── datai-framework/ # 框架核心模块
├── datai-system/ # 系统管理模块
├── datai-common/ # 通用工具模块
├── datai-scenes/ # 场景模块
│ ├── datai-scene-salesforce/ # Salesforce 集成场景
│ │ ├── datai-salesforce-auth/ # 认证相关模块
│ │ ├── datai-salesforce-common/ # 通用工具和常量
│ │ ├── datai-salesforce-integration/ # 核心集成模块
│ │ ├── datai-salesforce-setting/ # 配置管理模块
│ │ └── datai-salesforce-starter/ # 启动器模块
│ ├── datai-scene-auth/ # 认证场景
│ │ ├── datai-auth-common/ # 认证通用模块
│ │ ├── datai-auth-starter/ # 认证启动器
│ │ ├── datai-oauth-justauth/ # JustAuth OAuth
│ │ ├── datai-oauth-wx/ # 微信 OAuth
│ │ ├── datai-tfa-email/ # 邮箱双因子认证
│ │ └── datai-tfa-phone/ # 手机双因子认证
│ ├── datai-scene-pay/ # 支付场景
│ │ ├── datai-pay-common/ # 支付通用模块
│ │ ├── datai-pay-starter/ # 支付启动器
│ │ ├── datai-pay-alipay/ # 支付宝支付
│ │ ├── datai-pay-wx/ # 微信支付
│ │ └── datai-pay-sqb/ # 收钱吧支付
│ └── datai-scene-file/ # 文件场景
│ ├── datai-file-common/ # 文件通用模块
│ ├── datai-file-starter/ # 文件启动器
│ ├── datai-file-local/ # 本地文件存储
│ ├── datai-file-minio/ # MinIO 文件存储
│ └── datai-file-aliyun-oss/ # 阿里云 OSS 文件存储
2026-01-14 22:57:15 +08:00
├── datai-plugins/ # 插件模块
│ ├── datai-plugins-starter/ # 插件启动器
│ ├── datai-mybatis-plus/ # MyBatis Plus 插件
│ ├── datai-cache-redis/ # Redis 缓存插件
│ ├── datai-cache-ehcache/ # Ehcache 缓存插件
│ ├── datai-rabbitmq/ # RabbitMQ 消息队列插件
│ ├── datai-websocket/ # WebSocket 插件
│ ├── datai-netty/ # Netty 网络插件
│ └── datai-atomikos/ # Atomikos 分布式事务插件
└── datai-models/ # 模型模块
├── datai-models-starter/ # 模型启动器
├── datai-quartz/ # Quartz 定时任务
├── datai-form/ # 表单管理
├── datai-message/ # 消息管理
├── datai-generator/ # 代码生成器
├── datai-online/ # 在线用户
└── datai-flowable/ # 工作流
2025-12-14 12:50:08 +08:00
```
2026-01-14 22:57:15 +08:00
---
## 核心功能
### Salesforce 集成模块(当前实现)
提供与 Salesforce 源系统的数据集成解决方案,支持从 Salesforce 同步数据到本地数据库。
#### 认证管理
2026-01-14 22:57:15 +08:00
- **多种登录方式**: OAuth2、SessionId、CLI、Legacy Credential
- **会话管理**: 登录会话的创建、查询和销毁
- **历史记录**: 登录历史记录的查询和统计
2026-01-19 10:29:36 +08:00
- **多ORG管理**: 支持查询不同类型ORGSource/Target/Sandbox/Production等的登录历史
- **自动登录**: 支持根据登录历史记录自动登录到对应的ORG环境
- **安全加固**:
- 密码使用 BCrypt 哈希算法加密,提高密码安全性
- 日志中敏感信息Session ID、用户 ID 等)进行脱敏处理
- 登录接口添加请求频率限制,防止暴力破解攻击
#### 数据同步(源系统 → 本地)
2026-01-14 22:57:15 +08:00
- **Bulk API v1/v2**: 批量数据同步,支持大规模数据导入导出
- **Partner API**: SOAP API 数据交互,支持 CRUD 操作
- **REST API**: RESTful API 数据交互
- **CDC 实时同步**: Change Data Capture 实时数据同步
#### 元数据管理
2026-01-14 22:57:15 +08:00
- **对象管理**: Salesforce 对象的查询、同步和结构创建
- **字段管理**: 对象字段的查询和管理
- **Picklist 管理**: Picklist 值的查询和管理
- **Lookup 过滤器**: Lookup 过滤器的查询和管理
#### 批次管理
2026-01-14 22:57:15 +08:00
- **批次创建**: 创建数据同步批次
- **批次数据插入**: 将本地数据插入到 Salesforce保存返回 ID
- **批次数据更新**: 使用保存的 ID 更新 Salesforce 数据
- **批次重试**: 失败批次的重试机制
- **批次历史**: 批次操作历史记录
#### 实时同步
2026-01-14 22:57:15 +08:00
- **Pub/Sub API**: Salesforce Event Bus 实时数据订阅
- **事件处理**: CDC 事件的接收和处理
- **数据同步**: 实时数据同步到本地数据库
- **服务管理**: 实时同步服务的启动、停止和重启
#### 监控日志
2026-01-14 22:57:15 +08:00
- **API 调用日志**: Salesforce API 调用记录和统计
- **同步日志**: 数据同步操作日志
- **速率限制监控**: Salesforce API 速率限制监控
- **实时同步日志**: CDC 实时同步日志
feat: 添加定时任务功能和文档 - 新增 4 个定时任务类: - ObjectSyncTask: 对象自动同步任务 - ObjectInsertTask: 对象自动插入任务 - ObjectUpdateTask: 对象自动更新任务 - MetadataChangeAutoSyncTask: 元数据变更自动同步任务 - 新增 2 个多对象操作接口: - insertMultipleObjectDataToTarget: 批量插入对象数据到目标系统 - updateMultipleObjectDataToTarget: 批量更新对象数据到目标系统 - 新增完整的定时任务文档: - task/index.md: 定时任务文档索引 - ObjectSyncTask.md: 对象自动同步任务文档 - ObjectInsertTask.md: 对象自动插入任务文档 - ObjectUpdateTask.md: 对象自动更新任务文档 - MetadataChangeAutoSyncTask.md: 元数据变更自动同步任务文档 - RateLimitResetTask.md: 每日限流重置任务文档 - 新增 API 文档索引:api-docs/index.md - 更新唯一真源文档中心:docs/index.md - 新增完整的项目文档: - REQ-005.md: 定时任务自动同步、插入和更新对象数据需求 - REQ-006.md: 元数据变更自动同步本地数据库需求 - 0005-scheduled-tasks-implementation.md: 定时任务架构决策 - 0006-metadata-change-auto-sync.md: 元数据变更自动同步架构决策 - 005-scheduled-tasks-implementation.md: 定时任务实现提示词 - 006-metadata-change-auto-sync.md: 元数据变更自动同步实现提示词 - 20260116-scheduled-tasks-implementation.md: 定时任务实现会话记录 - 20260116-metadata-change-auto-sync.md: 元数据变更自动同步实现会话记录 - 20260116-scheduled-tasks-implementation-retro.md: 定时任务实现复盘 - 20260116-metadata-change-auto-sync-retro.md: 元数据变更自动同步实现复盘 - 0015-scheduled-tasks-implementation.md: 定时任务变更记录 - 0016-metadata-change-auto-sync.md: 元数据变更自动同步变更记录 - 更新 CHANGELOG.md 和 README.md
2026-01-16 16:38:35 +08:00
#### 定时任务
- **自动同步任务**: 基于对象配置自动执行数据同步(存量/增量)
- **自动插入任务**: 基于对象配置自动执行数据插入到目标系统
- **自动更新任务**: 基于对象配置自动执行数据更新到目标系统
- **任务管理**: 通过 SysJob 管理定时任务的执行时间、启用状态等
2026-01-14 22:57:15 +08:00
---
### 项目截图
#### 配置中心
![配置中心](datai-scenes/datai-scene-salesforce/docs/picture/img.png)
#### 登录认证中心
![登录认证中心](datai-scenes/datai-scene-salesforce/docs/picture/img_1.png)
#### 监控统计中心
![监控统计中心](datai-scenes/datai-scene-salesforce/docs/picture/img_2.png)
#### 数据同步中心
![数据同步中心](datai-scenes/datai-scene-salesforce/docs/picture/img_3.png)
#### 实时同步中心
![实时同步中心](datai-scenes/datai-scene-salesforce/docs/picture/img_4.png)
#### 元数据变更中心
![元数据变更中心](datai-scenes/datai-scene-salesforce/docs/picture/img_5.png)
---
### 开发计划
#### 1. 数据推送到目标 Salesforce 系统
2026-01-14 22:57:15 +08:00
- **目标系统认证**: 支持目标 Salesforce 系统的多种认证方式
- **数据推送**: 支持将本地数据批量推送到目标 Salesforce 系统
- **双向同步**: 实现源系统 → 本地 → 目标系统的数据流转
- **数据映射**: 支持源系统和目标系统之间的字段映射
- **推送监控**: 数据推送任务的监控和日志记录
#### 2. 源 Salesforce 系统文件下载
2026-01-14 22:57:15 +08:00
- **文件元数据**: 获取 Salesforce 附件和文档的元数据信息
- **文件下载**: 支持批量下载 Salesforce 中的文件Attachment、Document、ContentVersion
- **文件存储**: 支持本地存储、MinIO、阿里云 OSS 等多种存储方式
- **文件同步**: 文件与数据的关联同步
- **下载监控**: 文件下载任务的监控和进度追踪
#### 3. User 权限同步集成系统
2026-01-14 22:57:15 +08:00
- **权限元数据**: 同步 Salesforce User、Profile、PermissionSet、Role 等权限相关对象
- **权限映射**: 将 Salesforce 权限映射到系统用户权限
- **数据权限控制**: 基于用户权限控制数据访问范围
- **权限同步**: 实时同步用户权限变更
- **权限审计**: 权限变更的审计日志
#### 4. 集成可视化报表插件
2026-01-14 22:57:15 +08:00
- **报表设计器**: 可视化拖拽式报表设计器,支持自定义报表布局
- **数据源配置**: 支持从本地数据库和 Salesforce 系统配置数据源
- **图表组件**: 提供丰富的图表类型(柱状图、折线图、饼图、表格等)
- **数据筛选**: 支持动态筛选条件和参数化查询
- **报表导出**: 支持导出为 PDF、Excel、图片等多种格式
- **报表分享**: 支持报表分享和权限控制
- **实时刷新**: 支持报表数据的实时刷新和定时更新
- **报表模板**: 提供常用报表模板,快速生成标准报表
2026-01-19 10:29:36 +08:00
#### 5. 系统通用配置,实现多语言页面
- **多语言支持**: 实现系统页面的多语言切换功能
- **语言包管理**: 支持多种语言包的导入、导出和管理
- **动态切换**: 支持用户在系统中实时切换语言
- **数据库配置**: 支持多语言数据的存储和查询
- **前端组件**: 支持国际化的前端组件库
- **配置管理**: 提供系统通用配置的管理界面
- **权限控制**: 支持基于角色的配置权限管理
2026-01-14 22:57:15 +08:00
---
### 认证场景模块
- **OAuth 集成**: JustAuth 和微信 OAuth 登录
- **双因子认证**: 邮箱和手机双因子认证
- **用户管理**: OAuth 用户信息管理
### 文件场景模块
- **本地存储**: 本地文件系统存储
- **MinIO 存储**: MinIO 对象存储
- **阿里云 OSS**: 阿里云对象存储服务
- **文件管理**: 文件上传、下载和管理
### 插件模块
- **MyBatis Plus**: MyBatis 增强工具
- **Redis 缓存**: Redis 分布式缓存
- **Ehcache 缓存**: Ehcache 本地缓存
- **RabbitMQ**: 消息队列中间件
- **WebSocket**: WebSocket 实时通信
- **Netty**: Netty 网络框架
- **Atomikos**: 分布式事务管理
### 模型模块
- **Quartz**: 定时任务调度
- **表单管理**: 动态表单生成和管理
- **消息管理**: 系统消息管理
- **代码生成器**: 代码自动生成工具
- **在线用户**: 在线用户管理
- **工作流**: Flowable 工作流引擎
2026-01-14 22:57:15 +08:00
---
## 快速开始
### 环境要求
- JDK 21+
- Maven 3.6+
- MySQL 8.3.0+ 或 PostgreSQL 42.7.7+
- Redis可选用于缓存
### 配置说明
#### 关键配置项
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| server.port | 8080 | 服务端口 |
| datai.profile | D:/datai/uploadPath | 文件上传路径 |
| datai.fileServer | local | 文件服务类型local/minio/oss |
| datai.fileMaxSize | 50 | 文件上传最大大小MB |
| spring.cache.type | redis | 缓存类型redis/jcache |
| token.expireTime | 1440 | Token 有效期(分钟) |
| pagehelper.helperDialect | mysql | 数据库方言 |
#### 启用配置文件
- `application-druid.yml`: 数据库连接池配置
- `application-file.yml`: 文件服务配置
- `application-auth.yml`: 认证配置
- `application-pay.yml`: 支付配置
- `application-plugins.yml`: 插件配置
- `application-model.yml`: 模型配置
- `application-apidoc.yml`: API 文档配置
### 构建项目
```bash
mvn clean install
```
### 运行项目
```bash
cd datai-admin
mvn spring-boot:run
```
启动成功后,访问:
2026-01-14 22:57:15 +08:00
- 应用地址: http://localhost:8080
- API 文档: http://localhost:8080/doc.html
2026-01-14 22:57:15 +08:00
---
## 文档
### 项目规则
项目采用基于单一真源 (Single Source of Truth) 的 Workflow所有项目相关文档和决策均集中在 `docs/` 目录中。
### Salesforce 模块文档
详细文档请参考 [Salesforce 集成模块文档中心](datai-scenes/datai-scene-salesforce/docs/index.md)
- **唯一入口**: [datai-scene-salesforce/docs/index.md](datai-scenes/datai-scene-salesforce/docs/index.md)
- **架构看板**: [datai-scene-salesforce/docs/Authentication.canvas](datai-scenes/datai-scene-salesforce/docs/Authentication.canvas)
- **接口文档**: [datai-scene-salesforce/docs/api-docs/](datai-scenes/datai-scene-salesforce/docs/api-docs/)
### 文档目录
- **需求文档**: [datai-scenes/datai-scene-salesforce/docs/requirements/](datai-scenes/datai-scene-salesforce/docs/requirements/)
- **设计文档**: [datai-scenes/datai-scene-salesforce/docs/design/](datai-scenes/datai-scene-salesforce/docs/design/)
- **架构决策**: [datai-scenes/datai-scene-salesforce/docs/decisions/adr/](datai-scenes/datai-scene-salesforce/docs/decisions/adr/)
- **提示词库**: [datai-scenes/datai-scene-salesforce/docs/prompts/](datai-scenes/datai-scene-salesforce/docs/prompts/)
- **会话记录**: [datai-scenes/datai-scene-salesforce/docs/sessions/](datai-scenes/datai-scene-salesforce/docs/sessions/)
- **变更日志**: [datai-scenes/datai-scene-salesforce/docs/changelog/](datai-scenes/datai-scene-salesforce/docs/changelog/)
2026-01-14 22:57:15 +08:00
---
## 贡献指南
请参考 [CONTRIBUTING.md](CONTRIBUTING.md) 了解如何参与项目贡献。
2026-01-14 22:57:15 +08:00
---
## 变更日志
请参考 [CHANGELOG.md](CHANGELOG.md) 查看项目变更记录。
2026-01-14 22:57:15 +08:00
---
## 许可证
2026-01-14 22:57:15 +08:00
本项目基于若依 Geek 框架开发,遵循相应的开源许可证。
---
## 联系方式
2026-01-14 22:57:15 +08:00
- **项目地址**: https://gitee.com/geek-xd/datai-springboot3.git
- **前端地址**: https://github.com/KrisDong-developer/datai-vue
- **后端地址**: https://github.com/KrisDong-developer/datai
- **文档中心**: [datai-scenes/datai-scene-salesforce/docs/index.md](datai-scenes/datai-scene-salesforce/docs/index.md)