datai/README.md

345 lines
13 KiB
Markdown
Raw 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.

# Datai - Salesforce 集成系统
## 项目概述
Datai 是一个基于若依 Geek 框架构建的企业级管理系统,采用模块化架构设计,提供可扩展的插件和场景模块。系统集成了 Salesforce 平台,支持多种 API 交互方式,实现数据同步、认证管理和元数据处理等核心功能。
**当前实现状态**:项目目前专注于从 Salesforce 源系统同步数据到本地数据库,包括元数据管理、批量数据同步、实时数据同步等功能。
### 项目地址
- **前端地址**: 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 | 分页插件 |
---
## 项目结构
```
datai/
├── datai-admin/ # 管理后台启动模块
├── 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 文件存储
├── 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/ # 工作流
```
---
## 核心功能
### Salesforce 集成模块(当前实现)
提供与 Salesforce 源系统的数据集成解决方案,支持从 Salesforce 同步数据到本地数据库。
#### 认证管理
- **多种登录方式**: OAuth2、SessionId、CLI、Legacy Credential
- **会话管理**: 登录会话的创建、查询和销毁
- **历史记录**: 登录历史记录的查询和统计
#### 数据同步(源系统 → 本地)
- **Bulk API v1/v2**: 批量数据同步,支持大规模数据导入导出
- **Partner API**: SOAP API 数据交互,支持 CRUD 操作
- **REST API**: RESTful API 数据交互
- **CDC 实时同步**: Change Data Capture 实时数据同步
#### 元数据管理
- **对象管理**: Salesforce 对象的查询、同步和结构创建
- **字段管理**: 对象字段的查询和管理
- **Picklist 管理**: Picklist 值的查询和管理
- **Lookup 过滤器**: Lookup 过滤器的查询和管理
#### 批次管理
- **批次创建**: 创建数据同步批次
- **批次数据插入**: 将本地数据插入到 Salesforce保存返回 ID
- **批次数据更新**: 使用保存的 ID 更新 Salesforce 数据
- **批次重试**: 失败批次的重试机制
- **批次历史**: 批次操作历史记录
#### 实时同步
- **Pub/Sub API**: Salesforce Event Bus 实时数据订阅
- **事件处理**: CDC 事件的接收和处理
- **数据同步**: 实时数据同步到本地数据库
- **服务管理**: 实时同步服务的启动、停止和重启
#### 监控日志
- **API 调用日志**: Salesforce API 调用记录和统计
- **同步日志**: 数据同步操作日志
- **速率限制监控**: Salesforce API 速率限制监控
- **实时同步日志**: CDC 实时同步日志
---
### 项目截图
#### 配置中心
![配置中心](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 系统
- **目标系统认证**: 支持目标 Salesforce 系统的多种认证方式
- **数据推送**: 支持将本地数据批量推送到目标 Salesforce 系统
- **双向同步**: 实现源系统 → 本地 → 目标系统的数据流转
- **数据映射**: 支持源系统和目标系统之间的字段映射
- **推送监控**: 数据推送任务的监控和日志记录
#### 2. 源 Salesforce 系统文件下载
- **文件元数据**: 获取 Salesforce 附件和文档的元数据信息
- **文件下载**: 支持批量下载 Salesforce 中的文件Attachment、Document、ContentVersion
- **文件存储**: 支持本地存储、MinIO、阿里云 OSS 等多种存储方式
- **文件同步**: 文件与数据的关联同步
- **下载监控**: 文件下载任务的监控和进度追踪
#### 3. User 权限同步集成系统
- **权限元数据**: 同步 Salesforce User、Profile、PermissionSet、Role 等权限相关对象
- **权限映射**: 将 Salesforce 权限映射到系统用户权限
- **数据权限控制**: 基于用户权限控制数据访问范围
- **权限同步**: 实时同步用户权限变更
- **权限审计**: 权限变更的审计日志
#### 4. 集成可视化报表插件
- **报表设计器**: 可视化拖拽式报表设计器,支持自定义报表布局
- **数据源配置**: 支持从本地数据库和 Salesforce 系统配置数据源
- **图表组件**: 提供丰富的图表类型(柱状图、折线图、饼图、表格等)
- **数据筛选**: 支持动态筛选条件和参数化查询
- **报表导出**: 支持导出为 PDF、Excel、图片等多种格式
- **报表分享**: 支持报表分享和权限控制
- **实时刷新**: 支持报表数据的实时刷新和定时更新
- **报表模板**: 提供常用报表模板,快速生成标准报表
---
### 认证场景模块
- **OAuth 集成**: JustAuth 和微信 OAuth 登录
- **双因子认证**: 邮箱和手机双因子认证
- **用户管理**: OAuth 用户信息管理
### 文件场景模块
- **本地存储**: 本地文件系统存储
- **MinIO 存储**: MinIO 对象存储
- **阿里云 OSS**: 阿里云对象存储服务
- **文件管理**: 文件上传、下载和管理
### 插件模块
- **MyBatis Plus**: MyBatis 增强工具
- **Redis 缓存**: Redis 分布式缓存
- **Ehcache 缓存**: Ehcache 本地缓存
- **RabbitMQ**: 消息队列中间件
- **WebSocket**: WebSocket 实时通信
- **Netty**: Netty 网络框架
- **Atomikos**: 分布式事务管理
### 模型模块
- **Quartz**: 定时任务调度
- **表单管理**: 动态表单生成和管理
- **消息管理**: 系统消息管理
- **代码生成器**: 代码自动生成工具
- **在线用户**: 在线用户管理
- **工作流**: Flowable 工作流引擎
---
## 快速开始
### 环境要求
- 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
```
启动成功后,访问:
- 应用地址: http://localhost:8080
- API 文档: http://localhost:8080/doc.html
---
## 文档
### 项目规则
项目采用基于单一真源 (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/)
---
## 贡献指南
请参考 [CONTRIBUTING.md](CONTRIBUTING.md) 了解如何参与项目贡献。
---
## 变更日志
请参考 [CHANGELOG.md](CHANGELOG.md) 查看项目变更记录。
---
## 许可证
本项目基于若依 Geek 框架开发,遵循相应的开源许可证。
---
## 联系方式
- **项目地址**: 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)