┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 微信小程序 │ │ Web 浏览器 │ │ 管理后台 │
│ (原生) │ │ (Vue 3) │ │ (Vue 3) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└─────────────────┼─────────────────┘
│ REST API (Result<T>)
┌──────┴──────┐
│ Server │
│ Spring Boot │
│ Java 17 │
└──────┬──────┘
│ IR JSON (唯一契约)
┌──────┴──────┐
│ Draw │
│ Python │
│ SVG/PNG/VSDX│
└─────────────┘
| 类型 | 输入 | 示例 |
|---|---|---|
| 🗄 ER 图 | SQL CREATE TABLE | 粘贴建表语句,自动生成实体关系图 |
| 🔀 流程图 | 自然语言文本 | 描述流程步骤,智能生成流程图 |
| 🏛 类图 | Java 源代码 | 粘贴类定义,自动生成 UML 类图 |
| 模块 | 技术栈 | 职责 |
|---|---|---|
smartDiagram-server |
Spring Boot 3.2 + MyBatis Plus | 认证、模板管理、图表编排、渲染调度 |
smartDiagram-draw |
Python 3.10+ | 消费 IR JSON,输出 SVG/PNG/VSDX |
smartDiagram-admin |
Vue 3 + Element Plus + Pinia | 运营后台:用户/模板/图表管理 |
smartDiagram-app |
微信小程序原生 | 终端用户:生成、预览、导出 |
smartDiagram-web |
Vue 3 + Element Plus | 浏览器端:登录、生成、导出全流程 |
cd smartDiagram-server
cp src/main/resources/application-local.example.yml src/main/resources/application-local.yml
# 编辑 application-local.yml 填入数据库信息
mvn spring-boot:runcd smartDiagram-draw
pip install -r requirements.txt
python main.py --input samples/er.sample.json --output out.svg --format svgcd smartDiagram-admin
npm install && npm run devcd smartDiagram-web
npm install
cp .env.development.example .env.development
npm run dev用微信开发者工具打开 smartDiagram-app/ 目录。
IR JSON 是 Server 与 Draw 之间唯一的数据契约:
用户输入 → Server 解析 → IR JSON → Draw 渲染 → SVG/PNG/VSDX
- 前端不直接依赖绘图引擎
- 渲染引擎不感知数据库和 HTTP
- 文件存储通过
OssService接口抽象
- ✅ Server: 全功能 API + 认证 + 三格式同步渲染
- ✅ Draw: ER/Flow/Class 解析器 + SVG/PNG/VSDX 输出
- ✅ Admin: 用户/模板/图表管理 + OSS 配置
- ✅ Web: 登录 + 生成 + 导出全链路
- 🚧 App: 小程序页面开发中,备案进行中
MIT