# snail
**Repository Path**: jf_linux/snail
## Basic Information
- **Project Name**: snail
- **Description**: Snail(蜗牛)是基于若依(RuoYi-Cloud)基础框架重构升级的企业级快速开发平台,包含系统管理、AI 智能助手(多智能体编排、A2A 远程智能体、MCP 工具接入、知识库 RAG)、Flowable 工作流引擎、多租户、数据权限、操作审计、定时任务、消息队列、文件管理、MQTT 设备接入等模块,前端 Vue 3 重构,全栈文档齐备,开箱即用,MIT 开源。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://gitee.com/WilliamWangmy/snail
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 45
- **Created**: 2026-09-09
- **Last Updated**: 2026-09-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Snail —— 蜗牛快速开发平台
[](https://www.oracle.com/java/)
[](https://spring.io/projects/spring-boot)
[](https://spring.io/projects/spring-cloud)
[](https://github.com/alibaba/spring-cloud-alibaba)
[](https://nacos.io/)
[](https://www.flowable.com/)
[](https://github.com/alibaba/spring-ai-alibaba)
[](https://vuejs.org/)
[](LICENSE)
**Snail(蜗牛)** 是一款企业级快速开发平台,采用 **单体 / 微服务双模式架构**(一套业务代码,两种部署方式),集成 **AI 智能助手(多智能体 + A2A + MCP)**、Flowable 工作流、多租户、数据权限、消息队列、MQTT 设备接入等企业级能力。项目代号"蜗牛",寓意稳扎稳打、持续迭代。
> **v7.x 架构**:Spring Boot 3.5 + Spring Cloud 2025 + JDK 17,`api/biz/model` 三层拆分,单体(snail-monolith)与微服务(snail-services)双模式运行。
---
## 目录
- [核心功能](#核心功能)
- [技术栈](#技术栈)
- [系统架构](#系统架构)
- [项目结构](#项目结构)
- [快速开始](#快速开始)
- [模块导航](#模块导航)
- [启动脚本](#启动脚本)
- [文档索引](#文档索引)
- [版本历史](#版本历史)
- [开源协议](#开源协议)
---
## 核心功能
| 功能域 | 功能点 |
|--------|--------|
| **用户权限** | 用户/角色/菜单(动态路由)/部门(树)/岗位/字典/参数管理,注解式权限校验(`@RequiresPermissions` / `@RequiresRoles`) |
| **系统安全** | 自研 Token 鉴权(JWT + Redis,滑动续期)、Kaptcha 验证码、XSS 过滤、IP 黑名单、在线用户监控、防重复提交(`@RepeatSubmit`) |
| **工作流引擎** | Flowable 7.2 引擎、流程部署/发起/审批/驳回/委派/转办/撤回、待办/已办、审批记录、流程图高亮、业务公共模板模式(`WorkflowBasic*`) |
| **AI 智能助手** | Spring AI Alibaba **StateGraph 多智能体编排**(监督者决策 + 闲聊/咨询/A2A 远程业务子智能体)、ReAct 工具调用、RedisSaver 多轮记忆、Nacos 提示词热更新、多模态图片上传 |
| **A2A 远程智能体** | 通过 A2A 协议 + Nacos 服务发现调用远端业务 Agent(演示:自然语言新增请假申请),登录态安全透传 |
| **MCP 工具服务** | MCP Server 标准工具服务:知识库语义检索(Milvus RAG)、通用工具(时间/时区/天气),经网关 MCP Gateway 聚合供智能助手调用 |
| **定时任务** | XXL-Job 调度中心 + 执行器封装(`@XxlJob` 标准心跳注册),在线 CRON 管理、执行日志、失败邮件告警 |
| **多租户** | 表字段隔离(MyBatis-Plus 拦截器)+ 独立数据库隔离双模式 |
| **数据权限** | 全部/自定义/本部门/本部门及以下/仅本人 五级数据权限(MyBatis 拦截器 SQL 级过滤) |
| **文件管理** | 统一上传/查询/下载/删除,本地 / MinIO / FastDFS 三种存储后端切换 |
| **操作审计** | `@Log` 注解 AOP 切面,操作日志异步落库(敏感字段自动过滤) |
| **消息队列** | RabbitMQ / Kafka 双实现 + 抽象层:幂等去重(Redis)、消费重试、死信队列、MQ 生产/消费日志 |
| **MQTT 接入** | Spring Integration + Paho v5 对接 EMQX:单连接聚合订阅 + topic 路由、发布负载均衡(QoS0/QoS1)、EMQX JWT+ACL 鉴权 |
| **设备管理** | 设备注册(BCrypt)、MQTT 鉴权(失败锁定)、遥测上报入库、指令下发(QoS1 确认 + 超时状态机)、上下线检测(遗嘱/WebHook) |
| **分布式锁** | Redis SET NX + Lua 原子释放、自旋等待、TTL 线程锁标识(TransmittableThreadLocal) |
| **Excel 工具** | EasyExcel + `@Excel` 注解驱动导入导出、单元格合并、下拉校验、枚举转换器 |
| **序列号生成** | Redis 预生成 + 远程批量分配,支持前缀/日期/补齐规则 |
| **API 文档** | Knife4j + SpringDoc OpenAPI,网关聚合多服务文档 |
| **第三方集成** | 高德地图(IP 定位/行政区/地理编码)+ 阿里云短信 |
---
## 技术栈
### 后端
| 技术 | 版本 | 说明 |
|------|------|------|
| JDK | 17 | 运行环境 |
| Spring Boot | 3.5.5 | 基础框架 |
| Spring Cloud | 2025.0.0 | 微服务治理 |
| Spring Cloud Alibaba | 2025.0.0.0 | Nacos / Sentinel |
| Spring AI / Spring AI Alibaba | 1.1.2 | AI 应用框架(DashScope、Agent、MCP、A2A) |
| Nacos | 3.x | 注册中心 + 配置中心(动态提示词) |
| Spring Cloud Gateway | WebFlux Netty | API 网关(HTTP + MCP Gateway) |
| EMQX | 5.x | MQTT Broker(WebSocket 8083) |
| MySQL + mysql-connector-j | — | 关系型数据库 |
| MyBatis-Plus | 3.5.5 | ORM 框架 |
| Druid + Dynamic-Datasource | — | 连接池 + 多数据源 |
| Redis | — | 缓存 / Token / 分布式锁 / 序列号 |
| RabbitMQ / Kafka | — | 消息队列双实现 |
| Flowable | 7.2.0 | 工作流引擎 |
| XXL-Job | 3.2.0 | 分布式定时任务(调度中心 + 执行器) |
| Milvus | — | 向量数据库(知识库 RAG) |
| MinIO / FastDFS | — | 文件存储 |
| Knife4j + SpringDoc | — | API 文档 |
| jjwt | 0.12.x | JWT 令牌 |
| EasyExcel | — | Excel 处理 |
| MapStruct | — | 对象映射 |
| Kaptcha | — | 验证码 |
### 前端
| 技术 | 版本 | 说明 |
|------|------|------|
| Vue | 3.5.x | 核心框架(主力前端) |
| Vite / TypeScript | — | 构建 / 语言 |
| Element Plus | — | UI 组件库 |
| Axios / Vue Router | — | HTTP / 路由(后端动态菜单驱动) |
| mqtt.js | — | MQTT 客户端(设备实时遥测,WebSocket 直连 EMQX) |
| bpmn-js | — | 流程设计器 |
| Vue 2 + Ant Design Vue | — | 旧版管理端 |
| Uni-App | — | 移动端 |
---
## 系统架构
### 双模式部署
同一套业务代码(snail-modules),通过不同启动模块与接口实现方式支持两种运行模式,业务代码零改动:
| 模式 | 启动模块 | 接口实现 | 适用 |
|------|---------|---------|------|
| **单体** | `snail-monolith`(单 JVM :8080) | boot-starter 本地直连(`@Primary`) | 轻量部署、二次开发调试 |
| **微服务** | `snail-services`(9 个独立服务) | cloud-starter + Feign 远程调用 | 分布式生产部署 |
```mermaid
graph TB
subgraph "前端"
web["Vue 3 管理端 :8001
Vue 2 管理端 / Uni-App 移动端"]
end
subgraph "微服务模式 snail-services"
gw["snail-gateway :8080
网关 + MCP Gateway"]
auth["snail-auth :9200
认证中心"]
sys["snail-system :9201
系统管理"]
file["snail-file :9204
文件服务"]
wf["snail-workflow :9205
工作流"]
job["snail-job-admin :9206
定时任务"]
tp["snail-thirdparty :9207
第三方"]
demo["snail-oa :9900
OA 演示 + demoAgent"]
device["snail-device :9910
设备管理"]
gw --> auth
gw --> sys
gw --> file
gw --> wf
gw --> job
gw --> tp
gw --> demo
gw --> device
auth -->|"Feign"| sys
auth -->|"Feign"| tp
end
subgraph "单体模式"
mono["snail-monolith :8080
聚合全部业务模块"]
end
subgraph "基础设施"
infra["MySQL
Redis
Nacos :8848
EMQX :1883/8083
RabbitMQ / Kafka
MinIO
Milvus"]
end
subgraph "AI 服务"
oamr["snail-ai-oamr :9210
智能助手(监督者 + 子智能体)"]
mcpv["snail-ai-mcp-vector :9211
知识库检索 MCP"]
mcpb["snail-ai-mcp-business :9212
通用工具 MCP"]
end
web --> mono
web --> gw
mono --> infra
gw --> infra
device -->|"MQTT"| infra
oamr -->|"A2A/Nacos"| demo
oamr -->|"MCP Gateway"| gw
mcpv --> infra
mcpb --> infra
```
### 模块分层
```mermaid
graph TB
subgraph "部署层"
svc["snail-services
微服务 x 9"]
mono["snail-monolith
单体"]
end
subgraph "业务层 snail-modules"
biz["9 个业务域
api / biz / model 三层"]
end
subgraph "AI 层 snail-ai"
ai["oamr / mcp-vector / mcp-business"]
end
subgraph "基础设施层 snail-common"
common["18 个子模块
core / security / mq / mqtt / agent / ..."]
end
svc --> biz
mono --> biz
ai --> common
biz --> common
```
---
## 项目结构
```
snail/
├── snail-common/ # 公共基础设施(18 个子模块)
│ ├── snail-common-core/ # 核心:R 响应体/常量/异常/工具/脱敏
│ ├── snail-common-security/ # 安全:自研 Token/注解鉴权/防重复提交
│ ├── snail-common-redis/ # 缓存:Redis 操作封装(FastJson2 序列化)
│ ├── snail-common-datasource/ # 数据源:Druid 动态数据源 + 字段自动填充
│ ├── snail-common-datascope/ # 数据权限:五级 SQL 级过滤
│ ├── snail-common-tenant/ # 多租户:表/库隔离双模式
│ ├── snail-common-log/ # 操作日志:@Log AOP 异步落库
│ ├── snail-common-excel/ # Excel:@Excel 注解驱动
│ ├── snail-common-lock/ # 分布式锁:SET NX + Lua 安全释放
│ ├── snail-common-mq/ # 消息队列抽象:幂等/重试/日志
│ ├── snail-common-mq-kafka/ # Kafka 实现
│ ├── snail-common-mq-rabbitmq/# RabbitMQ 实现(死信队列)
│ ├── snail-common-mqtt/ # MQTT:订阅路由/发布网关/EMQX 鉴权
│ ├── snail-common-job/ # XXL-Job 执行器封装(@JobTask/@XxlJob)
│ ├── snail-common-sequence/ # 序列号:Redis 预生成 + 批量分配
│ ├── snail-common-interface/ # 接口适配:单体/微服务统一契约
│ ├── snail-common-cloud/ # 微服务装配:@SnailCloudApplication + MP 插件
│ └── snail-common-agent/ # Agent 装配:技能/监控/A2A 登录态
│
├── snail-modules/ # 业务模块(api/biz/model 三层,9 个)
│ ├── snail-modules-auth/ # 认证授权(登录/注册/Token/验证码/租户)
│ ├── snail-modules-system/ # 系统管理(用户/角色/菜单/部门/字典/日志等 + Feign 契约)
│ ├── snail-modules-file/ # 文件服务(Local/MinIO/FastDFS)
│ ├── snail-modules-workflow/ # 工作流(Flowable + 公共模板模式)
│ ├── snail-modules-job/ # 定时任务(XXL-Job 调度中心)
│ ├── snail-modules-thirdparty# 第三方集成(高德地图/阿里云短信)
│ ├── snail-modules-gateway/ # 网关公共逻辑(验证码/白名单/CORS/XSS)
│ ├── snail-modules-demo/ # OA 演示(工作流/MQ/Excel/A2A 智能体)
│ └── snail-modules-device/ # 设备管理(MQTT 接入/鉴权/遥测/指令)
│
├── snail-monolith/ # 单体模式启动入口
├── snail-services/ # 微服务模式启动入口(9 个服务)
├── snail-ai/ # AI 服务
│ ├── snail-ai-oamr/ # AI 智能助手(StateGraph 多智能体,:9210)
│ ├── snail-ai-mcp-vector/ # 知识库检索 MCP(Milvus RAG,:9211)
│ └── snail-ai-mcp-business/ # 通用工具 MCP(时间/天气等,:9212)
├── snail-dependencies/ # Maven BOM 统一版本管理
├── snail-web/ # 前端(snail-web-vue3 / snail-web / snail-app)
├── bat/ # Windows 启动脚本
├── docs/ # 项目文档 + docs/sql 初始化脚本 + docs/snail Nacos 配置模板
├── pom.xml # Maven 根 POM
└── LICENSE # MIT 开源许可证
```
---
## 快速开始
### 前置条件
| 组件 | 版本 | 端口 | 说明 |
|------|------|------|------|
| JDK | 17+ | — | 运行环境 |
| Maven | 3.8+ | — | 构建工具 |
| Node.js | 18+ | — | 前端构建 |
| MySQL | 8.0+ | 3306 | 关系型数据库 |
| Redis | 6.x+ | 6379 | 缓存 / Token / 分布式锁 |
| Nacos | 3.x | 8848 | 注册中心 + 配置中心(命名空间 `snail`) |
> AI / 设备等扩展能力按需安装:DashScope API Key(AI 模块)、Milvus(知识库)、EMQX(MQTT)、RabbitMQ/Kafka(MQ)。
### 数据库初始化
初始化脚本位于 **`docs/sql/`**(按需执行对应脚本):
| 脚本 | 说明 |
|------|------|
| `snail-config.sql` | Nacos 配置库 + 初始化配置 |
| `snail-cloud.sql` | 系统管理基础数据(库 `snail-cloud`) |
| `snail-job.sql` | XXL-Job 调度中心表(库 `snail-job`) |
| `snail-workflow.sql` | Flowable 工作流引擎表(库 `snail-workflow`) |
| `snail-oa.sql` | OA 演示数据(库 `snail-oa`) |
| `spring_ai_oamr.sql` | AI 智能助手表(库 `spring_ai_oamr`) |
### 发布 Nacos 配置
每个服务的配置存于 Nacos 配置中心,仓库 `docs/snail/` 提供各服务 `*-dev.yml` 模板(含 `application-dev.yml` 公共配置),按服务名 `{service-name}-dev.yml` 发布,并修改数据源/中间件地址。
### 方式一:微服务模式(完整部署)
```bash
# 1. 构建项目(根目录)
mvn clean install -DskipTests
# 2. 启动网关(依赖 Nacos、Redis)
mvn spring-boot:run -pl snail-services/snail-gateway
# 3. 依次启动核心服务
mvn spring-boot:run -pl snail-services/snail-auth # :9200
mvn spring-boot:run -pl snail-services/snail-system # :9201
mvn spring-boot:run -pl snail-services/snail-file # :9204
mvn spring-boot:run -pl snail-services/snail-workflow # :9205
mvn spring-boot:run -pl snail-services/snail-job # :9206
mvn spring-boot:run -pl snail-services/snail-thirdparty # :9207
mvn spring-boot:run -pl snail-services/snail-demo # :9900
mvn spring-boot:run -pl snail-services/snail-device # :9910(需 EMQX)
# 4. 启动前端(Vue 3)
cd snail-web/snail-web-vue3
pnpm install
pnpm dev # http://localhost:8001 -> 代理到网关 :8080
```
**Windows 快捷启动:** 使用 `bat/start-all.bat` 一键按序启动。
### 方式二:单体模式(轻量快速)
```bash
# 1. 修改 snail-monolith 的数据源/Redis/Nacos 配置
# 2. 构建并启动
mvn clean package -DskipTests -pl snail-monolith -am
java -jar snail-monolith/target/snail-monolith.jar
# 3. 前端设置单体模式后启动
# .env.development: VITE_SERVER_MODE=monolith
```
### AI 智能助手(可选)
```bash
# 1. 配置 DASHSCOPE_API_KEY 环境变量
# 2. 启动 MCP 工具服务(知识库检索需 Milvus + docs-path 文档目录)
mvn spring-boot:run -pl snail-ai/snail-ai-mcp-vector # :9211
mvn spring-boot:run -pl snail-ai/snail-ai-mcp-business # :9212
# 3. 启动智能助手(依赖 Nacos、Redis、MCP Gateway)
mvn spring-boot:run -pl snail-ai/snail-ai-oamr # :9210
```
### 系统访问
| 入口 | 地址 | 默认账号 |
|------|------|----------|
| 管理端 | `http://localhost:8001` | admin / admin123 |
| 网关 API 文档 | `http://localhost:8080/doc.html` | — |
| XXL-Job 调度中心 | `http://localhost:9206/snail-job-admin` | admin / 123456 |
| EMQX Dashboard | `http://localhost:18083` | admin / public |
---
## 模块导航
| 模块 | 说明 | 文档 |
|------|------|------|
| **snail-common** | 公共基础设施(18 个子模块,含 MQTT/agent) | [README](snail-common/README.md) |
| **snail-modules** | 业务模块(9 个业务域,api/biz/model) | [README](snail-modules/README.md) |
| **snail-monolith** | 单体模式启动入口 | [README](snail-monolith/README.md) |
| **snail-services** | 微服务模式启动入口(9 个服务 + Nacos 配置映射) | [README](snail-services/README.md) |
| **snail-ai** | AI 智能助手 + MCP 工具服务 | [README](snail-ai/README.md) |
| **snail-web/snail-web-vue3** | Vue 3 管理端(主力) | [README](snail-web/snail-web-vue3/README.md) |
| **snail-web/snail-web** | Vue 2 管理端(旧版) | [README](snail-web/snail-web/README.md) |
| **snail-web/snail-app** | Uni-App 移动端 | [README](snail-web/snail-app/README.md) |
---
## 启动脚本
`bat/` 目录提供 Windows 批处理脚本:
| 脚本 | 功能 |
|------|------|
| `start-all.bat` | 一键启动核心微服务(gateway → auth → system → file → workflow → job → thirdparty → demo) |
| `start-*.bat` | 单独启动单个服务(gateway/auth/system/file/workflow/job/thirdparty/demo) |
| `mvn-clean-install.bat` | 全量 Maven 构建 |
> device、AI 等服务未包含在批处理脚本中,需手动启动(`mvn spring-boot:run`)。
---
## 文档索引
项目全部文档已整合至 **[docs/Snail项目文档索引.md](docs/Snail项目文档索引.md)**,提供统一的目录导航:
| 章节 | 内容 |
|------|------|
| [一、项目总览](docs/Snail项目文档索引.md#一项目总览) | 项目简介、技术设计文档、启动说明 |
| [二、开发规范](docs/Snail项目文档索引.md#二开发规范) | 后端 / 前端开发规范 |
| [三、更新记录](docs/Snail项目文档索引.md#三更新记录) | 版本更新记录 |
| [四、后端模块文档](docs/Snail项目文档索引.md#四后端模块文档) | snail-common(18 子模块)、snail-modules(9 业务域)、snail-services、snail-monolith、snail-ai |
| [五、前端模块文档](docs/Snail项目文档索引.md#五前端模块文档) | snail-web-vue3、snail-web、snail-app |
| [六、数据库脚本](docs/Snail项目文档索引.md#六数据库脚本) | docs/sql 下 6 个初始化脚本 |
---
## 版本历史
| 版本 | 日期 | 里程碑 |
|:---|:---|:---|
| 7.x | 2026-09 | README 全面核对修正(删除未实现项:Seata/ES/Caffeine 等),模块数对齐(common 18)、AI 模块对齐(3 服务 + A2A/MCP Gateway) |
| 7.x | 2026-08 | 新增 MQTT 设备接入(EMQX)、全模块文档重构、AI 智能助手多智能体改造 |
| 7.0.0 | 2026-07 | 双模式架构重构:api/biz/model 三层拆分 |
| 6.x | 2026-06 | 基础架构升级:JDK 17、Spring Boot 3.x |
| 3.x | — | RuoYi-Cloud 基线版本 |
---
## 开源协议
[MIT](LICENSE)
Snail 基于 RuoYi-Cloud 二次开发,感谢若依社区与 Spring AI Alibaba 开源社区。