Build lightweight AI agent admin
This commit is contained in:
@@ -0,0 +1,580 @@
|
||||
# ZQ Platform
|
||||
|
||||
<div align="center">
|
||||
|
||||
[](LICENSE)
|
||||
[](backend/)
|
||||
[](backend/)
|
||||
[](web/)
|
||||
[](web/)
|
||||
|
||||
**一个基于 FastAPI + Vue 3 的全栈企业级低代码/零代码开发平台**
|
||||
|
||||
[English](README.en.md) | 简体中文
|
||||
|
||||
</div>
|
||||
|
||||
## 🌐 相关链接
|
||||
|
||||
- **官方网站**:<https://zq-platform.com/>
|
||||
- **社区版演示**:<https://opensource.zq-platform.com/>
|
||||
- **演示账号**:zhangwei
|
||||
- **演示密码**:123456
|
||||
|
||||
***
|
||||
|
||||
## 📖 项目简介
|
||||
|
||||
ZQ Platform 是一个功能完善的全栈企业级开发平台,采用前后端分离架构。后端基于 **FastAPI** 异步框架,前端基于 **Vue 3** + **Element Plus** + **Vben Admin 5.x** 构建。
|
||||
|
||||
平台集成了 RBAC 权限管理、组织架构管理、**在线表单/页面设计(零代码)**、即时通讯、AI 对话、第三方登录与组织同步、系统监控、定时任务、数据源管理、代码生成等丰富的企业级功能模块,可大幅加速企业级应用开发。
|
||||
|
||||
## 🎯 零代码能力 — 完全开源、免费、无限制
|
||||
|
||||
ZQ Platform 的零代码(在线开发)模块是其核心亮点之一,与市面上主流的零代码/低代码平台相比,拥有 **完全开源、完全免费、完全无限制** 的显著优势。
|
||||
|
||||
### 与同类平台对比
|
||||
|
||||
| 对比维度 | ZQ Platform | 钉钉宜搭 | 百度爱速搭 | NocoBase |
|
||||
| --------- | ---------------------------- | ----------------- | ----------------- | ----------------------- |
|
||||
| **开源协议** | 完全开源 | ❌ 闭源商业软件 | ❌ 闭源商业软件 | ⚠️ AGPL 3.0(传染性协议,商用受限) |
|
||||
| **是否免费** | ✅ 完全免费,无任何隐藏费用 | ❌ 按用户/表单/流程数收费 | ❌ 按版本收费,有功能限制 | ⚠️ 社区版功能受限,企业版收费 |
|
||||
| **用户数限制** | ✅ 无限制 | ❌ 按套餐限制用户数 | ❌ 按版本限制用户数 | ⚠️ 社区版有用户限制 |
|
||||
| **部署方式** | ✅ 私有化部署,数据完全自主可控 | ⚠️ SaaS为主,私有化成本极高 | ⚠️ SaaS为主,私有化需企业版 | ✅ 支持私有化部署 |
|
||||
| **二次开发** | ✅ 无限制,可任意修改源码 | ❌ 不支持 | ❌ 有限支持 | ⚠️ AGPL协议限制商业二次开发 |
|
||||
| **商用授权** | ✅ Apache 2.0 协议 + 附加条款,可自由商用 | ❌ 需购买商业许可 | ❌ 需购买商业许可 | ⚠️ AGPL商用需购买授权 |
|
||||
| **数据库支持** | PostgreSQL / MySQL | 仅支持云数据库 | 仅支持云数据库 | PostgreSQL |
|
||||
| **前端技术** | Vue 3 + Element Plus(主流技术栈) | 封闭技术栈,无法自定义 | 封闭技术栈 | React + Ant Design |
|
||||
| **后端技术** | Python FastAPI(异步高性能) | 封闭 | 封闭 | Node.js + Koa |
|
||||
|
||||
### 零代码核心功能
|
||||
|
||||
#### 📝 在线表单设计器
|
||||
|
||||
- **拖拽式设计**:直观的拖拽操作,无需编写任何代码即可构建复杂表单
|
||||
- **丰富组件库**:文本输入、数字、日期、下拉选择、级联选择、文件上传、富文本、子表单等 30+ 组件
|
||||
- **复杂布局**:支持分栏、分组、表格布局、标签页等复杂页面布局
|
||||
- **条件逻辑**:支持字段显隐条件、校验规则、联动逻辑配置
|
||||
- **移动端适配**:自动适配 PC 端与移动端展示
|
||||
|
||||
#### 📄 在线页面设计器
|
||||
|
||||
- **可视化页面编排**:将表单、图表、数据表格等组件自由组合成完整的业务页面
|
||||
- **数据绑定**:支持数据源绑定、API 对接,实现页面与后端数据的实时交互
|
||||
- **权限集成**:页面级别的访问权限控制,与 RBAC 权限体系无缝集成
|
||||
|
||||
#### 📊 仪表盘设计器
|
||||
|
||||
- **丰富图表组件**:支持折线图、柱状图、饼图、雷达图、漏斗图、热力图、桑基图、K 线图等 20+ 图表类型
|
||||
- **业务组件**:公告列表、待办事项、快捷入口、排行列表、服务器监控、天气组件等业务组件
|
||||
- **数据过滤**:支持日期筛选、输入筛选等交互式数据过滤
|
||||
- **自由布局**:拖拽式自由布局,支持自定义尺寸和位置
|
||||
|
||||
#### 🔗 数据管理
|
||||
|
||||
- **数据源管理**:支持接入外部数据库(PostgreSQL / MySQL / SQL Server)作为数据源
|
||||
- **表单数据管理**:自动生成表单数据的列表、详情、编辑和删除功能
|
||||
- **数据导入导出**:支持 Excel 格式的数据导入与导出
|
||||
|
||||
### 适用场景
|
||||
|
||||
- **企业内部管理系统**:OA、CRM、ERP、进销存、项目管理等
|
||||
- **业务流程数字化**:审批流程、工单系统、报表系统等
|
||||
- **快速原型开发**:业务需求快速验证与迭代
|
||||
- **SaaS 平台构建**:多租户应用开发
|
||||
- **数据收集与分析**:调查问卷、数据采集、统计分析
|
||||
|
||||
***
|
||||
|
||||
## 🏗 技术栈
|
||||
|
||||
### 后端 (Backend)
|
||||
|
||||
| 技术 | 说明 |
|
||||
| ------------------------------------------------------ | --------------- |
|
||||
| [FastAPI](https://fastapi.tiangolo.com/) | Web 框架 (0.121+) |
|
||||
| [SQLAlchemy 2.0](https://www.sqlalchemy.org/) | 异步 ORM |
|
||||
| [Alembic](https://alembic.sqlalchemy.org/) | 数据库迁移 |
|
||||
| [PostgreSQL 16+](https://www.postgresql.org/) / MySQL | 数据库 |
|
||||
| [Redis](https://redis.io/) | 缓存与消息 |
|
||||
| [APScheduler 4.x](https://apscheduler.readthedocs.io/) | 定时任务调度 |
|
||||
| [MinIO](https://min.io/) / OSS / Azure Blob | 文件存储 |
|
||||
| [Qdrant](https://qdrant.tech/) | 向量数据库 (RAG) |
|
||||
| [OpenAI](https://openai.com/) / Anthropic / DashScope | AI 大模型集成 |
|
||||
| [WebSocket](https://websockets.readthedocs.io/) | 实时通信 |
|
||||
|
||||
### 前端 (Frontend)
|
||||
|
||||
| 技术 | 说明 |
|
||||
| ---------------------------------------------------------- | ----------------------- |
|
||||
| [Vue 3](https://vuejs.org/) | 前端框架 |
|
||||
| [TypeScript](https://www.typescriptlang.org/) | 类型安全 |
|
||||
| [Element Plus](https://element-plus.org/) | UI 组件库 |
|
||||
| [Vben Admin 5.x](https://github.com/vbenjs/vue-vben-admin) | 后台管理框架 |
|
||||
| [Vite](https://vitejs.dev/) | 构建工具 |
|
||||
| [Pinia](https://pinia.vuejs.org/) | 状态管理 |
|
||||
| [Vue Router](https://router.vuejs.org/) | 路由管理 |
|
||||
| [i18n](https://vue-i18n.intlify.nuxt.dev/) | 国际化 (zh-CN/en-US/zh-TW) |
|
||||
| [ECharts](https://echarts.apache.org/) | 图表可视化 |
|
||||
| [Tiptap](https://tiptap.dev/) | 富文本编辑器 |
|
||||
| [CodeMirror](https://codemirror.net/) | 代码编辑器 |
|
||||
|
||||
## ✨ 核心特性
|
||||
|
||||
### 🔐 用户与权限
|
||||
|
||||
- **用户管理**:完整的用户 CRUD、头像上传、密码策略
|
||||
- **角色管理**:基于 RBAC 的角色权限分配
|
||||
- **菜单管理**:动态菜单配置与权限控制
|
||||
- **部门管理**:树形组织架构管理
|
||||
- **岗位管理**:岗位关联与人员管理
|
||||
- **资源权限**:资源级别的细粒度字段权限控制
|
||||
- **数据权限**:基于部门/用户的数据范围隔离
|
||||
|
||||
### 🏢 组织管理
|
||||
|
||||
- **组织架构**:可视化组织架构图
|
||||
- **部门树**:无限级部门层级管理
|
||||
- **企业同步**:支持钉钉、飞书、企业微信组织架构与用户同步
|
||||
|
||||
### 🔗 第三方集成
|
||||
|
||||
- **OAuth 登录**:支持 Gitee、GitHub、QQ、Google、微信、Microsoft、钉钉、飞书、企业微信
|
||||
- **消息通知**:邮件 (SMTP)、短信 (阿里云/腾讯云)、钉钉机器人、飞书机器人、企业微信机器人、微信公众号
|
||||
- **文件存储**:支持本地存储、MinIO、阿里云 OSS、Azure Blob Storage
|
||||
|
||||
### 📱 零代码能力
|
||||
|
||||
- **在线表单设计**:拖拽式表单构建器,支持复杂表单设计
|
||||
- **表单数据管理**:表单数据的 CRUD 与动态查询
|
||||
- **在线页面设计**:可视化页面编辑器
|
||||
- **仪表盘设计**:仪表盘设计器,支持丰富图表组件
|
||||
- **代码生成器**:支持多种编码模式 (日期序列、流水号等)
|
||||
|
||||
### 💬 即时通讯
|
||||
|
||||
- **实时聊天**:基于 WebSocket 的单聊与群聊
|
||||
- **消息管理**:未读计数、消息免打扰、置顶会话
|
||||
- **消息通知**:系统通知与公告管理
|
||||
|
||||
### 🤖 AI 能力
|
||||
|
||||
- **AI 对话**:集成 OpenAI、Anthropic (Claude)、DashScope (通义千问) 等多种大模型
|
||||
- **知识库**:基于 Qdrant 向量数据库的 RAG 检索增强生成
|
||||
|
||||
### ⚙️ 系统工具
|
||||
|
||||
- **数据字典**:业务字典管理 (支持树形/列表)
|
||||
- **系统配置**:动态系统参数配置
|
||||
- **UI 配置**:前端界面偏好设置 (可从后端动态加载)
|
||||
- **定时任务**:基于 APScheduler 的任务调度管理
|
||||
- **文件管理**:文件上传、预览、分片上传
|
||||
- **数据源管理**:外部数据库连接管理
|
||||
- **API 令牌**:API 访问令牌管理
|
||||
- **区域管理**:省市区地理数据管理
|
||||
|
||||
### 🌐 国际化
|
||||
|
||||
- 支持中文简体、中文繁体、英文
|
||||
- 前端 UI 界面完全国际化
|
||||
- 后端错误消息国际化支持
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 前置条件
|
||||
|
||||
- Python 3.12+
|
||||
- Node.js 20.10+
|
||||
- pnpm 9.12+
|
||||
- PostgreSQL 16+
|
||||
- Redis
|
||||
|
||||
### 后端启动
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
|
||||
# 创建虚拟环境
|
||||
python -m venv venv
|
||||
source venv/bin/activate # Linux/Mac
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 配置环境变量
|
||||
cp env/example.env env/dev.env
|
||||
# 编辑 env/dev.env 配置数据库连接等信息
|
||||
|
||||
# 运行数据库迁移
|
||||
alembic upgrade head
|
||||
|
||||
# 启动开发服务器
|
||||
uvicorn main:app --reload --port 8000
|
||||
```
|
||||
|
||||
### 前端启动
|
||||
|
||||
```bash
|
||||
cd web
|
||||
|
||||
# 安装依赖
|
||||
pnpm install
|
||||
|
||||
# 启动开发服务器(默认使用 Element Plus 版本)
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
访问 <http://localhost:5777> 即可进入系统。
|
||||
|
||||
### 🐳 Docker Compose 部署
|
||||
|
||||
项目提供了完善的 Docker 化部署方案,支持两种模式:
|
||||
|
||||
| 模式 | 配置文件 | 适用场景 |
|
||||
|------|----------|----------|
|
||||
| **全量部署** | `docker-compose.yml` | 全新部署,自动启动 PostgreSQL + Redis |
|
||||
| **生产部署** | `docker-compose.prod.yml` | 连接已有的外部数据库和 Redis |
|
||||
| **预构建部署** | `docker-compose.web-direct.yml` | 连接外部数据库和 Redis,跳过前端构建,直接使用预构建静态文件 |
|
||||
|
||||
#### 前置条件
|
||||
|
||||
- [Docker](https://www.docker.com/) >= 24.0
|
||||
- [Docker Compose](https://docs.docker.com/compose/) >= 2.20
|
||||
|
||||
---
|
||||
|
||||
#### 模式一:全量部署(一键启动)
|
||||
|
||||
适用于本地开发或全新部署场景,自动创建并启动 PostgreSQL 和 Redis 容器。
|
||||
|
||||
```bash
|
||||
# 1. 进入项目根目录
|
||||
cd zq-platform
|
||||
|
||||
# 2. (可选)创建环境变量文件
|
||||
cat > .env << EOF
|
||||
DB_PASSWORD=your_db_password
|
||||
REDIS_PASSWORD=your_redis_password
|
||||
JWT_SECRET_KEY=your-secret-key-change-in-production
|
||||
EOF
|
||||
|
||||
# 3. 构建并启动所有服务(PostgreSQL + Redis + 后端 + 前端)
|
||||
docker compose up -d
|
||||
|
||||
# 4. 查看日志
|
||||
docker compose logs -f
|
||||
```
|
||||
|
||||
#### 模式二:生产部署(连接外部数据库和 Redis)
|
||||
|
||||
适用于已有数据库和 Redis 实例的场景,**不启动 postgres/redis 容器**,仅启动业务服务。
|
||||
|
||||
```bash
|
||||
# 1. 复制环境变量模板
|
||||
cp .env.prod.example .env.prod
|
||||
|
||||
# 2. 编辑 .env.prod,填入外部服务连接信息
|
||||
vim .env.prod
|
||||
|
||||
# 3. 构建并启动业务服务(仅 backend + web)
|
||||
docker compose -f docker-compose.prod.yml --env-file .env.prod up -d
|
||||
|
||||
# 4. 查看日志
|
||||
docker compose -f docker-compose.prod.yml logs -f
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 模式三:预构建部署(跳过前端构建)
|
||||
|
||||
适用于已有前端构建产物,**跳过 Node.js 构建步骤**的场景。将预构建的 Vue 静态文件放入 `docker/web/index/` 目录,直接构建 Nginx 镜像,节省部署时间和资源。
|
||||
|
||||
```bash
|
||||
# 1. 复制环境变量模板
|
||||
cp .env.prod.example .env.prod
|
||||
|
||||
# 2. 编辑 .env.prod,填入外部服务连接信息
|
||||
vim .env.prod
|
||||
|
||||
# 3. 准备预构建的前端静态文件(先手动构建 Vue 项目)
|
||||
cd web && pnpm run build --filter=@vben/web-ele && cd ..
|
||||
cp -r web/apps/web-ele/dist/* docker/web/index/
|
||||
|
||||
# 4. 构建并启动业务服务(跳过前端构建步骤)
|
||||
docker compose -f docker-compose.web-direct.yml --env-file .env.prod up -d
|
||||
|
||||
# 5. 查看日志
|
||||
docker compose -f docker-compose.web-direct.yml logs -f
|
||||
```
|
||||
|
||||
> **提示**:Web 服务的 Nginx 配置与 `docker-compose.prod.yml` 中完全一致,仅构建方式不同(直接使用 `docker/web/index/` 中的预构建文件,而非在 Docker 内执行 `pnpm build`)。
|
||||
|
||||
#### 服务架构
|
||||
|
||||
```text
|
||||
┌─────────────┐ ┌──────────────────────────────────┐
|
||||
│ Browser │ ───▶ │ Nginx (Port 80) │
|
||||
└─────────────┘ │ ├─ 静态文件 → Vue SPA │
|
||||
│ ├─ /basic-api/* → backend:8000 │
|
||||
│ └─ /ws/* → backend:8000 │
|
||||
└──────────┬───────────────────────┘
|
||||
│
|
||||
┌──────────────────────┼──────────────────────┐
|
||||
▼ ▼ ▼
|
||||
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
|
||||
│ PostgreSQL │ │ Redis │ │ Backend │
|
||||
│ :5432 │ │ :6379 │ │ :8000 │
|
||||
└─────────────┘ └──────────────┘ └──────────────┘
|
||||
```
|
||||
|
||||
> 生产模式下 PostgreSQL 和 Redis 为外部服务,不包含在 Docker Compose 中
|
||||
|
||||
#### 服务说明
|
||||
|
||||
| 服务名 | 镜像 | 端口 | 说明 |
|
||||
|--------|------|------|------|
|
||||
| **postgres** | postgres:16-alpine | 5432 | 数据库(仅全量部署) |
|
||||
| **redis** | redis:7-alpine | 6379 | 缓存(仅全量部署) |
|
||||
| **backend** | 自建 | 8000 | FastAPI(Uvicorn 4 workers) |
|
||||
| **web** | 自建 | **80** | Nginx 服务 Vue 前端 + 代理 API/WebSocket |
|
||||
| **uniapp** | 自建 | **90** | Nginx 服务 UniApp H5 移动端 + 代理 API/WebSocket |
|
||||
|
||||
#### 常用命令
|
||||
|
||||
> **提示**:以下命令中,全量部署通过 `docker compose` 执行;生产部署和预构建部署需加上对应参数。
|
||||
|
||||
| 操作 | 全量部署 | 生产部署 | 预构建部署 |
|
||||
|------|----------|----------|------------|
|
||||
| 构建并启动 | `docker compose up -d` | `docker compose -f docker-compose.prod.yml --env-file .env.prod up -d` | `docker compose -f docker-compose.web-direct.yml --env-file .env.prod up -d` |
|
||||
| 全部重建 | `docker compose up -d --build` | `docker compose -f docker-compose.prod.yml --env-file .env.prod up -d --build` | `docker compose -f docker-compose.web-direct.yml --env-file .env.prod up -d --build` |
|
||||
| 仅重建后端 | `docker compose up -d --build backend` | `docker compose -f docker-compose.prod.yml --env-file .env.prod up -d --build backend` | `docker compose -f docker-compose.web-direct.yml --env-file .env.prod up -d --build backend` |
|
||||
| 仅重建 Vue 前端 | `docker compose up -d --build web` | `docker compose -f docker-compose.prod.yml --env-file .env.prod up -d --build web` | `docker compose -f docker-compose.web-direct.yml --env-file .env.prod up -d --build web` |
|
||||
| 仅重建 UniApp 移动端 | `docker compose up -d --build uniapp` | `docker compose -f docker-compose.prod.yml --env-file .env.prod up -d --build uniapp` | `docker compose -f docker-compose.web-direct.yml --env-file .env.prod up -d --build uniapp` |
|
||||
| 查看日志 | `docker compose logs -f` | `docker compose -f docker-compose.prod.yml logs -f` | `docker compose -f docker-compose.web-direct.yml logs -f` |
|
||||
| 停止服务 | `docker compose down` | `docker compose -f docker-compose.prod.yml down` | `docker compose -f docker-compose.web-direct.yml down` |
|
||||
| 完全清理(删除数据卷) | `docker compose down -v` | `docker compose -f docker-compose.prod.yml down -v` | `docker compose -f docker-compose.web-direct.yml down -v` |
|
||||
| 查看服务状态 | `docker compose ps` | `docker compose ps -f docker-compose.prod.yml` | `docker compose ps -f docker-compose.web-direct.yml` |
|
||||
|
||||
如果使用生产部署频率较高,建议配置 shell 别名:
|
||||
|
||||
```bash
|
||||
# 添加至 ~/.zshrc 或 ~/.bashrc
|
||||
alias dc-prod="docker compose -f docker-compose.prod.yml --env-file .env.prod"
|
||||
|
||||
# 使用
|
||||
dc-prod up -d
|
||||
dc-prod up -d --build backend
|
||||
dc-prod logs -f
|
||||
```
|
||||
|
||||
#### 生产部署关键环境变量
|
||||
|
||||
| 变量 | 说明 | 默认值 |
|
||||
|------|------|--------|
|
||||
| `DB_HOST` | 外部数据库地址 | **必填** |
|
||||
| `DB_PORT` | 数据库端口 | `5432` |
|
||||
| `DB_USER` | 数据库用户 | **必填** |
|
||||
| `DB_PASSWORD` | 数据库密码 | **必填** |
|
||||
| `DB_NAME` | 数据库名 | `zq_platform` |
|
||||
| `DB_TYPE` | 数据库类型(postgresql/mysql/sqlserver) | `postgresql` |
|
||||
| `REDIS_HOST` | 外部 Redis 地址 | **必填** |
|
||||
| `REDIS_PORT` | Redis 端口 | `6379` |
|
||||
| `REDIS_PASSWORD` | Redis 密码 | `redis123` |
|
||||
| `JWT_SECRET_KEY` | JWT 签名密钥 | **必填** |
|
||||
| `BACKEND_PORT_MAPPING` | 后端端口映射 | `8000` |
|
||||
| `WEB_PORT` | Vue 前端端口 | `80` |
|
||||
| `UNIAPP_PORT` | UniApp H5 移动端端口 | `90` |
|
||||
|
||||
> **注意**:容器内 `localhost` 指向容器自身而非宿主机。如需连接宿主机上的数据库/Redis,请填写宿主机内网 IP 或使用 `host.docker.internal`(macOS 可用)。
|
||||
|
||||
##### 连接同主机上的其他 Docker 容器
|
||||
|
||||
如果 PostgreSQL / Redis 也是以 Docker 容器运行在同一台机器上,推荐让两个容器加入同一个自定义网络进行通信。
|
||||
|
||||
**方案 1:加入同一个自定义网络(推荐,生产级)**
|
||||
|
||||
这是最规范、稳定的做法,通过 Docker 内部 DNS 解析容器名,不依赖 IP。
|
||||
|
||||
```bash
|
||||
# 1. 创建自定义网络(如果尚未创建)
|
||||
docker network create zq-network
|
||||
|
||||
# 2. 将生产后端容器加入网络
|
||||
docker network connect zq-network zq-backend
|
||||
|
||||
# 3. 将数据库容器加入同一个网络
|
||||
docker network connect zq-network 1Panel-postgresql-01NQ
|
||||
```
|
||||
|
||||
加入后,在 `docker-compose.prod.yml` 中指定 `DB_HOST` 为数据库容器名(如 `1Panel-postgresql-01NQ`),并确保 `networks` 配置也使用了 `zq-network`:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
backend:
|
||||
networks:
|
||||
- zq-network
|
||||
|
||||
networks:
|
||||
zq-network:
|
||||
external: true
|
||||
```
|
||||
|
||||
#### 项目 Docker 文件结构
|
||||
|
||||
```
|
||||
docker/
|
||||
├── backend/
|
||||
│ ├── Dockerfile # 后端镜像构建(Python 3.12-slim)
|
||||
│ ├── entrypoint.sh # 启动入口(等待依赖、自动迁移、启动服务)
|
||||
│ └── wait-for-it.sh # 等待依赖服务就绪
|
||||
├── web/
|
||||
│ ├── Dockerfile # Vue 前端镜像构建(Node 20 → Nginx)
|
||||
│ ├── Dockerfile.direct # Vue 前端镜像构建(跳过 Node 构建,直接使用预构建文件)
|
||||
│ └── index/ # 预构建的 Vue 前端静态文件(用于 Dockerfile.direct)
|
||||
├── uniapp/
|
||||
│ ├── Dockerfile # UniApp H5 移动端镜像构建(Nginx)
|
||||
│ ├── h5/ # 预构建的 UniApp H5 静态文件
|
||||
│ └── conf.d/
|
||||
│ └── default.conf # 站点配置(API 反向代理 / WebSocket / 静态资源)
|
||||
└── nginx/
|
||||
├── nginx.conf # Nginx 主配置
|
||||
└── conf.d/
|
||||
└── default.conf # 站点配置(API 反向代理 / WebSocket / 静态资源)
|
||||
.dockerignore # 构建上下文忽略规则
|
||||
docker-compose.yml # 全量部署编排
|
||||
docker-compose.prod.yml # 生产部署编排(连接外部服务)
|
||||
docker-compose.web-direct.yml # 预构建部署编排(跳过前端构建,连接外部服务)
|
||||
.env.prod.example # 生产部署环境变量模板
|
||||
```
|
||||
|
||||
#### 安全注意事项
|
||||
|
||||
1. **生产部署前务必修改密钥**:
|
||||
- `JWT_SECRET_KEY` — JWT 签名密钥
|
||||
- `DB_PASSWORD` — 数据库密码
|
||||
- `REDIS_PASSWORD` — Redis 密码
|
||||
2. 默认使用 PostgreSQL,如需切换 MySQL 请修改 `docker-compose.yml` 中的 `DB_TYPE` 环境变量
|
||||
3. 文件存储默认使用 `local` 模式,如需 MinIO/OSS 可在 `.env` 中配置
|
||||
|
||||
|
||||
## 🏛 项目结构
|
||||
|
||||
```
|
||||
zq-platform/
|
||||
├── backend/ # 后端 Python 服务
|
||||
│ ├── app/ # 核心应用模块
|
||||
│ │ ├── base_model.py # 基础模型
|
||||
│ │ ├── base_schema.py # 通用 Schema
|
||||
│ │ ├── base_service.py # 基础服务
|
||||
│ │ ├── config.py # 系统配置
|
||||
│ │ ├── database.py # 数据库连接
|
||||
│ │ └── ...
|
||||
│ ├── core/ # 核心业务模块
|
||||
│ │ ├── auth/ # 认证模块
|
||||
│ │ ├── user/ # 用户管理
|
||||
│ │ ├── role/ # 角色管理
|
||||
│ │ ├── menu/ # 菜单管理
|
||||
│ │ ├── dept/ # 部门管理
|
||||
│ │ ├── permission/ # 权限管理
|
||||
│ │ ├── chat/ # 即时通讯
|
||||
│ │ ├── file_manager/ # 文件管理
|
||||
│ │ ├── message/ # 消息通知
|
||||
│ │ ├── oauth/ # 第三方登录
|
||||
│ │ ├── code_generator/ # 代码生成器
|
||||
│ │ ├── data_source/ # 数据源管理
|
||||
│ │ ├── system_config/ # 系统配置
|
||||
│ │ ├── ui_config/ # UI 配置
|
||||
│ │ ├── server_monitor/ # 服务监控
|
||||
│ │ ├── redis_monitor/ # Redis 监控
|
||||
│ │ ├── database_monitor/ # 数据库监控
|
||||
│ │ ├── redis_manager/ # Redis 管理
|
||||
│ │ ├── database_manager/ # 数据库管理
|
||||
│ │ ├── dingtalk_sync/ # 钉钉同步
|
||||
│ │ ├── feishu_sync/ # 飞书同步
|
||||
│ │ ├── wecom_sync/ # 企业微信同步
|
||||
│ │ ├── application/ # 应用管理
|
||||
│ │ ├── device/ # 设备管理
|
||||
│ │ ├── region/ # 区域管理
|
||||
│ │ ├── login_log/ # 登录日志
|
||||
│ │ ├── api_token/ # API 令牌
|
||||
│ │ ├── link_preview/ # 链接预览
|
||||
│ │ ├── dict/ # 数据字典
|
||||
│ │ ├── post/ # 岗位管理
|
||||
│ │ └── resource_scope/ # 资源权限
|
||||
│ ├── online_dev/ # 在线开发模块
|
||||
│ │ ├── form_manager/ # 表单管理
|
||||
│ │ ├── form_data_manager/ # 表单数据管理
|
||||
│ │ └── page_manager/ # 页面管理
|
||||
│ ├── scheduler/ # 定时任务
|
||||
│ ├── zq_demo/ # 示例模块
|
||||
│ ├── alembic/ # 数据库迁移
|
||||
│ ├── main.py # 应用入口
|
||||
│ └── requirements.txt # Python 依赖
|
||||
│
|
||||
├── web/ # 前端工程
|
||||
│ ├── apps/
|
||||
│ │ └── web-ele/ # Element Plus 版本应用
|
||||
│ │ └── src/
|
||||
│ │ ├── api/ # API 接口
|
||||
│ │ ├── components/ # 业务组件
|
||||
│ │ ├── views/ # 页面视图
|
||||
│ │ ├── router/ # 路由配置
|
||||
│ │ ├── store/ # 状态管理
|
||||
│ │ ├── locales/ # 国际化
|
||||
│ │ └── layouts/ # 布局组件
|
||||
│ ├── packages/ # 共享包
|
||||
│ │ ├── @core/ # 核心包 (UI 组件、工具库等)
|
||||
│ │ ├── effects/ # 业务逻辑
|
||||
│ │ ├── constants/ # 常量定义
|
||||
│ │ ├── hooks/ # 组合式函数
|
||||
│ │ ├── icons/ # 图标库
|
||||
│ │ ├── locales/ # 国际化
|
||||
│ │ ├── preferences/ # 偏好设置
|
||||
│ │ ├── request/ # HTTP 请求
|
||||
│ │ ├── stores/ # 状态管理
|
||||
│ │ ├── styles/ # 样式
|
||||
│ │ ├── types/ # TypeScript 类型
|
||||
│ │ └── utils/ # 工具函数
|
||||
│ └── package.json # 前端依赖
|
||||
│
|
||||
└── README.md # 项目文档
|
||||
```
|
||||
|
||||
## ✅ 环境要求
|
||||
|
||||
| 依赖 | 版本要求 |
|
||||
| ---------- | -------- |
|
||||
| Python | >= 3.12 |
|
||||
| Node.js | >= 20.10 |
|
||||
| pnpm | >= 9.12 |
|
||||
| PostgreSQL | >= 16 |
|
||||
| Redis | >= 6.0 |
|
||||
|
||||
## 🤝 贡献指南
|
||||
|
||||
欢迎提交 Issue 和 Pull Request 来帮助改进项目。
|
||||
|
||||
1. Fork 本仓库
|
||||
2. 创建您的特性分支 (`git checkout -b feature/amazing-feature`)
|
||||
3. 提交您的更改 (`git commit -m 'feat: 添加某个功能'`)
|
||||
4. 推送到分支 (`git push origin feature/amazing-feature`)
|
||||
5. 提交 Pull Request
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
本项目采用双重许可证结构:
|
||||
|
||||
- **核心许可**:[Apache License 2.0](LICENSE) — 标准 Apache 2.0 开源协议,允许自由使用、修改和再发布
|
||||
- **附加条款**:[ZQ-Platform Public License Supplemental Terms](LICENSE_SUPPLEMENTAL) — 包含署名("powered by ZQ-Platform")与商标使用的补充约定
|
||||
|
||||
使用本代码即表示您同意遵守以上两份文件中的所有条款。
|
||||
|
||||
## 📞 联系我们
|
||||
|
||||
- **官方网站**:<https://zq-platform.com/>
|
||||
- **开源仓库**:<https://github.com/jiangzhikj/zq-platform>
|
||||
- **完整版演示**:<https://demo.zq-platform.com/>
|
||||
- **开源版演示**:<https://opensource.zq-platform.com/>
|
||||
- **作者邮箱**:<jiangzhikj@outlook.com>
|
||||
- **问题反馈**:[GitHub Issues](https://github.com/jiangzhikj/zq-platform/issues)
|
||||
|
||||
Reference in New Issue
Block a user