-
+
👀 访问统计
@@ -482,56 +478,37 @@
-
-
-
-
-
-
-
-
-
+ 帮助文档
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-📊 GitHub 数据统计(作者:@1014TaoTao)
-
-
-
-
+
-📘 项目介绍
-Fastapi-Vue3-Admin 是一套 完全开源、高度模块化、技术先进的现代化快速开发平台,旨在帮助开发者高效搭建高质量的企业级中后台系统。该项目采用 前后端分离架构,融合 Python 后端框架 FastAPI 和前端主流框架 Vue3,实现多端统一开发,提供了一站式开箱即用的开发体验。
+📘 项目介绍(作者:@1014TaoTao)
+Fastapi-Vue3-Admin 是一套 完全开源、高度模块化、技术先进的现代化快速开发平台,旨在帮助开发者高效搭建高质量的企业级中后台系统。该项目采用 前后端分离架构,融合 Python 后端框架 FastAPI 和前端主流框架 Vue3 实现多端统一开发,提供了一站式开箱即用的开发体验。
设计初心: 以模块化、松耦合为核心,追求丰富的功能模块、简洁易用的接口、详尽的开发文档和便捷的维护方式。通过统一框架和组件,降低技术选型成本,遵循开发规范和设计模式,构建强大的代码分层模型,搭配完善的本地中文化支持,专为团队和企业开发场景量身定制。
@@ -546,7 +523,7 @@
└─ README.md # 中文文档
-✨ 核心亮点
+✨ 核心亮点
@@ -561,7 +538,7 @@
| 🌐 全栈整合 |
-前后端分离,融合 Python (FastAPI) + Vue3 |
+前后端分离,融合 Python (FastAPI) + Vue3 多端开发 |
| 🧱 模块化设计 |
@@ -594,7 +571,7 @@
-🛠️ 技术栈概览
+🛠️ 技术栈概览
-📌 内置模块
+📌 内置模块
@@ -687,23 +664,18 @@
| 接口管理、文档管理 |
项目接口文档 |
-
-| App 端 |
-首页、工作台、个人中心 |
-移动端应用管理 |
-
-🍪 演示环境
+🍪 演示环境
-👷 安装和使用
-版本说明
+👷 安装和使用
+版本说明
-获取代码
+获取代码
# 克隆代码到本地
git clone https://gitee.com/tao__tao/fastapi_vue3_admin.git
或
git clone https://github.com/1014TaoTao/fastapi_vue3_admin.git
-本地后端启动
+本地后端启动
# 进入后端工程目录
cd backend
# 安装依赖
@@ -773,7 +745,7 @@ python3 main.py revision "初始化迁移" --env=dev(不加默认为de
python3 main.py upgrade --env=dev(不加默认为dev)
-本地前端启动
+本地前端启动
# 进入前端工程目录
cd frontend
# 安装依赖
@@ -784,10 +756,9 @@ npm run dev
npm run build
-本地访问地址
+本地访问地址
# 复制脚本 `fastapi_vue3_amdin/start.sh` 脚本文件到服务器, 并赋予执行权限
chmod +x start.sh
# 执行脚本
-https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/docs/start.sh
-# 访问地址
-# 前端访问: `http://公网地址:80`,
-# 接口访问: `http://公网地址:8001/api/v1/docs`,
-# 登录 `admin/123456` 或 `demo/123456`
+./start.sh
# 查看镜像:
docsker images -a
# 查看容器:
@@ -814,15 +781,20 @@ docsker compose down
docker rmi <镜像名>
# 删除容器
docker rm <容器名>
+# 后端配置文件目录
+fastapi_vue3_amdin/backend/env/.env.prod.py
+# 前端配置文件目录
+fastapi_vue3_amdin/frontend/vite.config.ts
+和
+fastapi_vue3_amdin/frontend/.env.production
+# 部署文件目录
+fastapi_vue3_amdin/docker-compose.yaml
+和
+fastapi_vue3_amdin/devops/devops/nginx/nginx.conf
+
-
-- 部署问题排查:
-- 后端配置文件
fastapi_vue3_amdin/backend/env/.env.prod.py
-- 前端配置文件
fastapi_vue3_amdin/frontend/vite.config.ts 和 fastapi_vue3_amdin/frontend/.env.production
-- 部署文件
fastapi_vue3_amdin/docker-compose.yaml 和 fastapi_vue3_amdin/devops/devops/nginx/nginx.conf
-
-🔧 模块展示
+🔧 模块展示
登陆 |
@@ -852,16 +824,10 @@ docker rm <容器名>
在线文档 |
字典管理 |
-
- app登陆 |
- app首页 |
- app工作台 |
- app个人中心 |
-
-🙏 特别鸣谢
+🙏 特别鸣谢
感谢以下项目的贡献和支持,使本项目得以顺利完成:
-🎨 社区
+🎨 社区
+
❤️ Star 支持我
如果你喜欢这个项目,请给我一个 ⭐️ Star 支持一下吧!非常感谢!
-👀 访问统计
+👀 访问统计

-
-
-
diff --git a/frontend/public/site/resources/header.gif b/frontend/public/site/resources/header.gif
deleted file mode 100644
index f0f925ad..00000000
Binary files a/frontend/public/site/resources/header.gif and /dev/null differ
diff --git a/frontend/public/site/resources/logo.png b/frontend/public/site/resources/logo.png
new file mode 100644
index 00000000..c3e72ce0
Binary files /dev/null and b/frontend/public/site/resources/logo.png differ
diff --git a/frontend/public/site/search/search_index.json b/frontend/public/site/search/search_index.json
index 95d5592a..0b310aae 100644
--- a/frontend/public/site/search/search_index.json
+++ b/frontend/public/site/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en"],"separator":"[\\s\\u200b\\u3000\\-\u3001\u3002\uff0c\uff0e\uff1f\uff01\uff1b]+","pipeline":["stemmer"]},"docs":[{"location":"index.html","title":"\u5e2e\u52a9\u6587\u6863","text":""},{"location":"index.html#github-1014taotao","title":"\ud83d\udcca GitHub \u6570\u636e\u7edf\u8ba1\uff08\u4f5c\u8005\uff1a@1014TaoTao\uff09","text":""},{"location":"index.html#_1","title":"\ud83d\udcd8 \u9879\u76ee\u4ecb\u7ecd","text":"Fastapi-Vue3-Admin \u662f\u4e00\u5957 \u5b8c\u5168\u5f00\u6e90\u3001\u9ad8\u5ea6\u6a21\u5757\u5316\u3001\u6280\u672f\u5148\u8fdb\u7684\u73b0\u4ee3\u5316\u5feb\u901f\u5f00\u53d1\u5e73\u53f0\uff0c\u65e8\u5728\u5e2e\u52a9\u5f00\u53d1\u8005\u9ad8\u6548\u642d\u5efa\u9ad8\u8d28\u91cf\u7684\u4f01\u4e1a\u7ea7\u4e2d\u540e\u53f0\u7cfb\u7edf\u3002\u8be5\u9879\u76ee\u91c7\u7528 \u524d\u540e\u7aef\u5206\u79bb\u67b6\u6784\uff0c\u878d\u5408 Python \u540e\u7aef\u6846\u67b6 FastAPI \u548c\u524d\u7aef\u4e3b\u6d41\u6846\u67b6 Vue3\uff0c\u5b9e\u73b0\u591a\u7aef\u7edf\u4e00\u5f00\u53d1\uff0c\u63d0\u4f9b\u4e86\u4e00\u7ad9\u5f0f\u5f00\u7bb1\u5373\u7528\u7684\u5f00\u53d1\u4f53\u9a8c\u3002
\u8bbe\u8ba1\u521d\u5fc3: \u4ee5\u6a21\u5757\u5316\u3001\u677e\u8026\u5408\u4e3a\u6838\u5fc3\uff0c\u8ffd\u6c42\u4e30\u5bcc\u7684\u529f\u80fd\u6a21\u5757\u3001\u7b80\u6d01\u6613\u7528\u7684\u63a5\u53e3\u3001\u8be6\u5c3d\u7684\u5f00\u53d1\u6587\u6863\u548c\u4fbf\u6377\u7684\u7ef4\u62a4\u65b9\u5f0f\u3002\u901a\u8fc7\u7edf\u4e00\u6846\u67b6\u548c\u7ec4\u4ef6\uff0c\u964d\u4f4e\u6280\u672f\u9009\u578b\u6210\u672c\uff0c\u9075\u5faa\u5f00\u53d1\u89c4\u8303\u548c\u8bbe\u8ba1\u6a21\u5f0f\uff0c\u6784\u5efa\u5f3a\u5927\u7684\u4ee3\u7801\u5206\u5c42\u6a21\u578b\uff0c\u642d\u914d\u5b8c\u5584\u7684\u672c\u5730\u4e2d\u6587\u5316\u652f\u6301\uff0c\u4e13\u4e3a\u56e2\u961f\u548c\u4f01\u4e1a\u5f00\u53d1\u573a\u666f\u91cf\u8eab\u5b9a\u5236\u3002
fastapi_vue3_admin\n\u251c\u2500 backend # \u540e\u7aef\u5de5\u7a0b\n\u251c\u2500 frontend # \u524d\u7aef\u5de5\u7a0b\n\u251c\u2500 devops # \u90e8\u7f72\u5de5\u7a0b\n\u251c\u2500 docker-compose.yaml # \u90e8\u7f72\u6587\u4ef6\n\u251c\u2500 start.sh # \u4e00\u952e\u90e8\u7f72\u811a\u672c\n\u251c\u2500 LICENSE # \u8bb8\u53ef\u534f\u8bae\n|\u2500 README.en.md # \u82f1\u6587\u6587\u6863\n\u2514\u2500 README.md # \u4e2d\u6587\u6587\u6863\n
"},{"location":"index.html#_2","title":"\u2728 \u6838\u5fc3\u4eae\u70b9","text":"\u7279\u6027 \u63cf\u8ff0 \ud83d\udd2d \u5feb\u901f\u5f00\u53d1 \u4e00\u5957\u5b8c\u5168\u5f00\u6e90\u7684\u73b0\u4ee3\u5316\u5feb\u901f\u5f00\u53d1\u5e73\u53f0\uff0c\u65e8\u5728\u5e2e\u52a9\u5f00\u53d1\u8005\u9ad8\u6548\u642d\u5efa\u9ad8\u8d28\u91cf\u7684\u4e2d\u540e\u53f0\u7cfb\u7edf\u3002 \ud83c\udf10 \u5168\u6808\u6574\u5408 \u524d\u540e\u7aef\u5206\u79bb\uff0c\u878d\u5408 Python (FastAPI) + Vue3 \ud83e\uddf1 \u6a21\u5757\u5316\u8bbe\u8ba1 \u7cfb\u7edf\u529f\u80fd\u9ad8\u5ea6\u89e3\u8026\uff0c\u4fbf\u4e8e\u6269\u5c55\u548c\u7ef4\u62a4 \u26a1\ufe0f \u9ad8\u6027\u80fd\u5f02\u6b65 \u4f7f\u7528 FastAPI \u5f02\u6b65\u6846\u67b6 + Redis \u7f13\u5b58\u4f18\u5316\u63a5\u53e3\u54cd\u5e94\u901f\u5ea6 \ud83d\udd12 \u5b89\u5168\u8ba4\u8bc1 \u652f\u6301 JWT OAuth2 \u8ba4\u8bc1\u673a\u5236\uff0c\u4fdd\u969c\u7cfb\u7edf\u5b89\u5168 \ud83d\udcca \u6743\u9650\u7ba1\u7406 RBAC \u6a21\u578b\u5b9e\u73b0\u83dc\u5355\u3001\u6309\u94ae\u3001\u6570\u636e\u7ea7\u522b\u7684\u7ec6\u7c92\u5ea6\u6743\u9650\u63a7\u5236 \ud83d\ude80 \u5feb\u901f\u90e8\u7f72 \u652f\u6301 Docker/Docker Compose/Nginx \u4e00\u952e\u90e8\u7f72 \ud83d\udcc4 \u5f00\u53d1\u53cb\u597d \u63d0\u4f9b\u5b8c\u5584\u7684\u4e2d\u6587\u6587\u6863 + \u4e2d\u6587\u5316\u754c\u9762 + \u53ef\u89c6\u5316\u5de5\u5177\u94fe\uff0c\u964d\u4f4e\u5b66\u4e60\u6210\u672c \ud83d\ude80 \u5feb\u901f\u63a5\u5165 \u57fa\u4e8e Vue3\u3001Vite5\u3001Pinia\u3001Ant Design Vue \u7b49\u4e3b\u6d41\u524d\u7aef\u6280\u672f\u6808\uff0c\u5f00\u7bb1\u5373\u7528\u3002"},{"location":"index.html#_3","title":"\ud83d\udee0\ufe0f \u6280\u672f\u6808\u6982\u89c8","text":"\u7c7b\u578b \u6280\u672f\u9009\u578b \u63cf\u8ff0 \u540e\u7aef\u6846\u67b6 FastAPI / Uvicorn / Pydantic 2.0 / Alembic \u73b0\u4ee3\u3001\u9ad8\u6027\u80fd\u7684\u5f02\u6b65\u6846\u67b6\uff0c\u5f3a\u5236\u7c7b\u578b\u7ea6\u675f\uff0c\u6570\u636e\u8fc1\u79fb\u3002 ORM SQLAlchemy 2.0 \u5f3a\u5927\u7684 ORM \u5e93\u3002 \u5b9a\u65f6\u4efb\u52a1 APScheduler \u8f7b\u677e\u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1\u3002 \u6743\u9650\u8ba4\u8bc1 PyJWT \u5b9e\u73b0 JWT \u8ba4\u8bc1\u3002 \u524d\u7aef\u6846\u67b6 Vue3 / Vite5 / Pinia / TypeScript \u5feb\u901f\u5f00\u53d1 Vue3 \u5e94\u7528\u3002 UI \u5e93 Ant Design Vue \u5feb\u901f\u5f00\u53d1\u7f8e\u89c2\u7684 UI \u7ec4\u4ef6\u3002 \u6570\u636e\u5e93 MySQL / MongoDB \u5f3a\u5927\u7684\u6570\u636e\u5e93\u3002 \u7f13\u5b58 Redis \u5f3a\u5927\u7684\u7f13\u5b58\u6570\u636e\u5e93\u3002 \u6587\u6863 Swagger / Redoc \u81ea\u52a8\u751f\u6210 API \u6587\u6863\u3002 \u90e8\u7f72 Docker / Nginx / Docker Compose \u5feb\u901f\u90e8\u7f72\u9879\u76ee\u3002"},{"location":"index.html#_4","title":"\ud83d\udccc \u5185\u7f6e\u6a21\u5757","text":"\u6a21\u5757\u540d \u5b50\u6a21\u5757\u540d \u63cf\u8ff0 \u4eea\u8868\u76d8 \u5de5\u4f5c\u53f0 \u3001\u5206\u6790\u9875 \u5e38\u7528\u529f\u80fd\u5165\u53e3 \u7cfb\u7edf\u7ba1\u7406 \u5305\u542b\u83dc\u5355\u3001\u90e8\u95e8\u3001\u5c97\u4f4d\u3001\u89d2\u8272\u3001\u7528\u6237\u3001\u65e5\u5fd7\u3001\u914d\u7f6e\u3001\u516c\u544a\u3001\u5b57\u5178\u3001\u4efb\u52a1\u7b49\u5b50\u6a21\u5757 \u7cfb\u7edf\u4e3b\u529f\u80fd \u76d1\u63a7\u7ba1\u7406 \u5728\u7ebf\u7528\u6237\u3001\u670d\u52a1\u5668\u76d1\u63a7\u3001\u7f13\u5b58\u76d1\u63a7 \u7cfb\u7edf\u76d1\u63a7\u7ba1\u7406\u529f\u80fd \u516c\u5171\u7ba1\u7406 \u63a5\u53e3\u7ba1\u7406\u3001\u6587\u6863\u7ba1\u7406 \u9879\u76ee\u63a5\u53e3\u6587\u6863 App \u7aef \u9996\u9875\u3001\u5de5\u4f5c\u53f0\u3001\u4e2a\u4eba\u4e2d\u5fc3 \u79fb\u52a8\u7aef\u5e94\u7528\u7ba1\u7406"},{"location":"index.html#_5","title":"\ud83c\udf6a \u6f14\u793a\u73af\u5883","text":" - \u6f14\u793a\u5730\u5740\uff1ahttp://service.fastapiadmin.com
- \u7ba1\u7406\u5458\u8d26\u53f7\uff1a
admin \u5bc6\u7801\uff1a123456 - \u6f14\u793a\u8d26\u53f7\uff1a
demo \u5bc6\u7801\uff1a123456
"},{"location":"index.html#_6","title":"\ud83d\udc77 \u5b89\u88c5\u548c\u4f7f\u7528","text":""},{"location":"index.html#_7","title":"\u7248\u672c\u8bf4\u660e","text":"\u7c7b\u578b \u6280\u672f\u6808 \u7248\u672c \u540e\u7aef Python 3.10\uff08\u5927\u4e8e3.10\u7684\u7248\u672c, \u4f1a\u6709\u517c\u5bb9\u95ee\u9898, \u5c06\u6765\u5347\u7ea7\uff0c\u6682\u65f6\u4e0d\u8003\u8651\u5347\u7ea7\uff09 \u540e\u7aef FastAPI 0.109 \u524d\u7aef Node.js >= 20.0\uff08\u63a8\u8350\u4f7f\u7528\u6700\u65b0\u7248\uff09 \u524d\u7aef npm 16.14 \u524d\u7aef Vue3 3.3 \u6570\u636e\u5e93 MySQL 8.0 \uff08\u63a8\u8350\u4f7f\u7528\u6700\u65b0\u7248\uff09 \u4e2d\u95f4\u4ef6 Redis 7.0 \uff08\u63a8\u8350\u4f7f\u7528\u6700\u65b0\u7248\uff09"},{"location":"index.html#_8","title":"\u83b7\u53d6\u4ee3\u7801","text":"# \u514b\u9686\u4ee3\u7801\u5230\u672c\u5730\ngit clone https://gitee.com/tao__tao/fastapi_vue3_admin.git\n\u6216\ngit clone https://github.com/1014TaoTao/fastapi_vue3_admin.git\n
"},{"location":"index.html#_9","title":"\u672c\u5730\u540e\u7aef\u542f\u52a8","text":"# \u8fdb\u5165\u540e\u7aef\u5de5\u7a0b\u76ee\u5f55\ncd backend\n# \u5b89\u88c5\u4f9d\u8d56\npip3 install -r requirements.txt\n# \u542f\u52a8\u540e\u7aef\u670d\u52a1\npython3 main.py run \n\u6216 \npython3 main.py run--env=dev \n# \u751f\u6210\u8fc1\u79fb\u6587\u4ef6\npython3 main.py revision \"\u521d\u59cb\u5316\u8fc1\u79fb\" --env=dev(\u4e0d\u52a0\u9ed8\u8ba4\u4e3adev)\n# \u5e94\u7528\u8fc1\u79fb\npython3 main.py upgrade --env=dev(\u4e0d\u52a0\u9ed8\u8ba4\u4e3adev)\n
"},{"location":"index.html#_10","title":"\u672c\u5730\u524d\u7aef\u542f\u52a8","text":"# \u8fdb\u5165\u524d\u7aef\u5de5\u7a0b\u76ee\u5f55\ncd frontend\n# \u5b89\u88c5\u4f9d\u8d56\nnpm install\n# \u542f\u52a8\u524d\u7aef\u670d\u52a1\nnpm run dev\n# \u6784\u5efa\u524d\u7aef, \u751f\u6210 `frontend/dist` \u76ee\u5f55\nnpm run build\n
"},{"location":"index.html#_11","title":"\u672c\u5730\u8bbf\u95ee\u5730\u5740","text":" - \u524d\u7aef\u5730\u5740: http://127.0.0.1:5180
- \u5c0f\u7a0b\u5e8f\u5730\u5740: http://127.0.0.1:5181
- \u63a5\u53e3\u5730\u5740: http://127.0.0.1:8001/api/v1/docs
- \u7ba1\u7406\u5458\u8d26\u53f7\uff1a
admin \u5bc6\u7801\uff1a123456 - \u6f14\u793a\u8d26\u53f7\uff1a
demo \u5bc6\u7801\uff1a123456
"},{"location":"index.html#docker","title":"docker \u90e8\u7f72","text":"# \u590d\u5236\u811a\u672c `fastapi_vue3_amdin/start.sh` \u811a\u672c\u6587\u4ef6\u5230\u670d\u52a1\u5668, \u5e76\u8d4b\u4e88\u6267\u884c\u6743\u9650\nchmod +x start.sh\n# \u6267\u884c\u811a\u672c\nhttps://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/docs/start.sh\n# \u8bbf\u95ee\u5730\u5740\n# \u524d\u7aef\u8bbf\u95ee: `http://\u516c\u7f51\u5730\u5740:80`, \n# \u63a5\u53e3\u8bbf\u95ee: `http://\u516c\u7f51\u5730\u5740:8001/api/v1/docs`\uff0c \n# \u767b\u5f55 `admin/123456` \u6216 `demo/123456`\n# \u67e5\u770b\u955c\u50cf:\ndocsker images -a\n# \u67e5\u770b\u5bb9\u5668:\ndocsker compose ps\n# \u67e5\u770b\u65e5\u5fd7\ndocker logs -f <\u5bb9\u5668\u540d>\n# \u670d\u52a1\u505c\u6b62\ndocsker compose down\n# \u5220\u9664\u955c\u50cf\ndocker rmi <\u955c\u50cf\u540d>\n# \u5220\u9664\u5bb9\u5668\ndocker rm <\u5bb9\u5668\u540d>\n
- \u90e8\u7f72\u95ee\u9898\u6392\u67e5:
- \u540e\u7aef\u914d\u7f6e\u6587\u4ef6
fastapi_vue3_amdin/backend/env/.env.prod.py - \u524d\u7aef\u914d\u7f6e\u6587\u4ef6
fastapi_vue3_amdin/frontend/vite.config.ts \u548c fastapi_vue3_amdin/frontend/.env.production - \u90e8\u7f72\u6587\u4ef6
fastapi_vue3_amdin/docker-compose.yaml \u548c fastapi_vue3_amdin/devops/devops/nginx/nginx.conf
"},{"location":"index.html#_12","title":"\ud83d\udd27 \u6a21\u5757\u5c55\u793a","text":"\u767b\u9646 \u4eea\u8868\u76d8 \u83dc\u5355\u7ba1\u7406 \u90e8\u95e8\u7ba1\u7406 \u5c97\u4f4d\u7ba1\u7406 \u89d2\u8272\u7ba1\u7406 \u7528\u6237\u7ba1\u7406 \u65e5\u5fd7\u7ba1\u7406 \u914d\u7f6e\u7ba1\u7406 \u5728\u7ebf\u7528\u6237\u7ba1\u7406 \u670d\u52a1\u5668\u76d1\u63a7 \u7f13\u5b58\u76d1\u63a7 \u4efb\u52a1\u7ba1\u7406 \u63a5\u53e3\u7ba1\u7406 \u6587\u6863\u7ba1\u7406 \u4e2a\u4eba\u4fe1\u606f \u5728\u7ebf\u6587\u6863 \u5b57\u5178\u7ba1\u7406 app\u767b\u9646 app\u9996\u9875 app\u5de5\u4f5c\u53f0 app\u4e2a\u4eba\u4e2d\u5fc3"},{"location":"index.html#_13","title":"\ud83d\ude4f \u7279\u522b\u9e23\u8c22","text":"\u611f\u8c22\u4ee5\u4e0b\u9879\u76ee\u7684\u8d21\u732e\u548c\u652f\u6301\uff0c\u4f7f\u672c\u9879\u76ee\u5f97\u4ee5\u987a\u5229\u5b8c\u6210\uff1a
- FastAPI \u9879\u76ee
- Vue3 \u9879\u76ee
- KInit \u9879\u76ee
- Fastapi-Vue3-Admin \u9879\u76ee
- Vue-FastAPI-Admin \u9879\u76ee
- RuoYi-Vue3-FastAPI \u9879\u76ee
- APScheduler \u9879\u76ee
- Vite \u9879\u76ee
"},{"location":"index.html#_14","title":"\ud83c\udfa8 \u793e\u533a","text":""},{"location":"index.html#star","title":"\u2764\ufe0f Star \u652f\u6301\u6211","text":"\u5982\u679c\u4f60\u559c\u6b22\u8fd9\u4e2a\u9879\u76ee\uff0c\u8bf7\u7ed9\u6211\u4e00\u4e2a \u2b50\ufe0f Star \u652f\u6301\u4e00\u4e0b\u5427\uff01\u975e\u5e38\u611f\u8c22\uff01
"},{"location":"index.html#_15","title":"\ud83d\udc40 \u8bbf\u95ee\u7edf\u8ba1","text":""}]}
\ No newline at end of file
+{"config":{"lang":["en"],"separator":"[\\s\\u200b\\u3000\\-\u3001\u3002\uff0c\uff0e\uff1f\uff01\uff1b]+","pipeline":["stemmer"]},"docs":[{"location":"index.html","title":"\u5e2e\u52a9\u6587\u6863","text":"Fastapi-Vue3-Admin v1.0.0 \u4e00\u5957\u73b0\u4ee3\u3001\u5f00\u6e90\u3001\u5168\u6808\u878d\u5408\u7684\u4e2d\u540e\u53f0\u5feb\u901f\u5f00\u53d1\u5e73\u53f0\uff0c\u7ed9\u4e2a\u2b50\ufe0f\u652f\u6301\u4e00\u4e0b"},{"location":"index.html#1014taotao","title":"\ud83d\udcd8 \u9879\u76ee\u4ecb\u7ecd\uff08\u4f5c\u8005\uff1a@1014TaoTao\uff09","text":"Fastapi-Vue3-Admin \u662f\u4e00\u5957 \u5b8c\u5168\u5f00\u6e90\u3001\u9ad8\u5ea6\u6a21\u5757\u5316\u3001\u6280\u672f\u5148\u8fdb\u7684\u73b0\u4ee3\u5316\u5feb\u901f\u5f00\u53d1\u5e73\u53f0\uff0c\u65e8\u5728\u5e2e\u52a9\u5f00\u53d1\u8005\u9ad8\u6548\u642d\u5efa\u9ad8\u8d28\u91cf\u7684\u4f01\u4e1a\u7ea7\u4e2d\u540e\u53f0\u7cfb\u7edf\u3002\u8be5\u9879\u76ee\u91c7\u7528 \u524d\u540e\u7aef\u5206\u79bb\u67b6\u6784\uff0c\u878d\u5408 Python \u540e\u7aef\u6846\u67b6 FastAPI \u548c\u524d\u7aef\u4e3b\u6d41\u6846\u67b6 Vue3 \u5b9e\u73b0\u591a\u7aef\u7edf\u4e00\u5f00\u53d1\uff0c\u63d0\u4f9b\u4e86\u4e00\u7ad9\u5f0f\u5f00\u7bb1\u5373\u7528\u7684\u5f00\u53d1\u4f53\u9a8c\u3002
\u8bbe\u8ba1\u521d\u5fc3: \u4ee5\u6a21\u5757\u5316\u3001\u677e\u8026\u5408\u4e3a\u6838\u5fc3\uff0c\u8ffd\u6c42\u4e30\u5bcc\u7684\u529f\u80fd\u6a21\u5757\u3001\u7b80\u6d01\u6613\u7528\u7684\u63a5\u53e3\u3001\u8be6\u5c3d\u7684\u5f00\u53d1\u6587\u6863\u548c\u4fbf\u6377\u7684\u7ef4\u62a4\u65b9\u5f0f\u3002\u901a\u8fc7\u7edf\u4e00\u6846\u67b6\u548c\u7ec4\u4ef6\uff0c\u964d\u4f4e\u6280\u672f\u9009\u578b\u6210\u672c\uff0c\u9075\u5faa\u5f00\u53d1\u89c4\u8303\u548c\u8bbe\u8ba1\u6a21\u5f0f\uff0c\u6784\u5efa\u5f3a\u5927\u7684\u4ee3\u7801\u5206\u5c42\u6a21\u578b\uff0c\u642d\u914d\u5b8c\u5584\u7684\u672c\u5730\u4e2d\u6587\u5316\u652f\u6301\uff0c\u4e13\u4e3a\u56e2\u961f\u548c\u4f01\u4e1a\u5f00\u53d1\u573a\u666f\u91cf\u8eab\u5b9a\u5236\u3002
fastapi_vue3_admin\n\u251c\u2500 backend # \u540e\u7aef\u5de5\u7a0b\n\u251c\u2500 frontend # \u524d\u7aef\u5de5\u7a0b\n\u251c\u2500 devops # \u90e8\u7f72\u5de5\u7a0b\n\u251c\u2500 docker-compose.yaml # \u90e8\u7f72\u6587\u4ef6\n\u251c\u2500 start.sh # \u4e00\u952e\u90e8\u7f72\u811a\u672c\n\u251c\u2500 LICENSE # \u8bb8\u53ef\u534f\u8bae\n|\u2500 README.en.md # \u82f1\u6587\u6587\u6863\n\u2514\u2500 README.md # \u4e2d\u6587\u6587\u6863\n
"},{"location":"index.html#_1","title":"\u2728 \u6838\u5fc3\u4eae\u70b9","text":"\u7279\u6027 \u63cf\u8ff0 \ud83d\udd2d \u5feb\u901f\u5f00\u53d1 \u4e00\u5957\u5b8c\u5168\u5f00\u6e90\u7684\u73b0\u4ee3\u5316\u5feb\u901f\u5f00\u53d1\u5e73\u53f0\uff0c\u65e8\u5728\u5e2e\u52a9\u5f00\u53d1\u8005\u9ad8\u6548\u642d\u5efa\u9ad8\u8d28\u91cf\u7684\u4e2d\u540e\u53f0\u7cfb\u7edf\u3002 \ud83c\udf10 \u5168\u6808\u6574\u5408 \u524d\u540e\u7aef\u5206\u79bb\uff0c\u878d\u5408 Python (FastAPI) + Vue3 \u591a\u7aef\u5f00\u53d1 \ud83e\uddf1 \u6a21\u5757\u5316\u8bbe\u8ba1 \u7cfb\u7edf\u529f\u80fd\u9ad8\u5ea6\u89e3\u8026\uff0c\u4fbf\u4e8e\u6269\u5c55\u548c\u7ef4\u62a4 \u26a1\ufe0f \u9ad8\u6027\u80fd\u5f02\u6b65 \u4f7f\u7528 FastAPI \u5f02\u6b65\u6846\u67b6 + Redis \u7f13\u5b58\u4f18\u5316\u63a5\u53e3\u54cd\u5e94\u901f\u5ea6 \ud83d\udd12 \u5b89\u5168\u8ba4\u8bc1 \u652f\u6301 JWT OAuth2 \u8ba4\u8bc1\u673a\u5236\uff0c\u4fdd\u969c\u7cfb\u7edf\u5b89\u5168 \ud83d\udcca \u6743\u9650\u7ba1\u7406 RBAC \u6a21\u578b\u5b9e\u73b0\u83dc\u5355\u3001\u6309\u94ae\u3001\u6570\u636e\u7ea7\u522b\u7684\u7ec6\u7c92\u5ea6\u6743\u9650\u63a7\u5236 \ud83d\ude80 \u5feb\u901f\u90e8\u7f72 \u652f\u6301 Docker/Docker Compose/Nginx \u4e00\u952e\u90e8\u7f72 \ud83d\udcc4 \u5f00\u53d1\u53cb\u597d \u63d0\u4f9b\u5b8c\u5584\u7684\u4e2d\u6587\u6587\u6863 + \u4e2d\u6587\u5316\u754c\u9762 + \u53ef\u89c6\u5316\u5de5\u5177\u94fe\uff0c\u964d\u4f4e\u5b66\u4e60\u6210\u672c \ud83d\ude80 \u5feb\u901f\u63a5\u5165 \u57fa\u4e8e Vue3\u3001Vite5\u3001Pinia\u3001Ant Design Vue \u7b49\u4e3b\u6d41\u524d\u7aef\u6280\u672f\u6808\uff0c\u5f00\u7bb1\u5373\u7528\u3002"},{"location":"index.html#_2","title":"\ud83d\udee0\ufe0f \u6280\u672f\u6808\u6982\u89c8","text":"\u7c7b\u578b \u6280\u672f\u9009\u578b \u63cf\u8ff0 \u540e\u7aef\u6846\u67b6 FastAPI / Uvicorn / Pydantic 2.0 / Alembic \u73b0\u4ee3\u3001\u9ad8\u6027\u80fd\u7684\u5f02\u6b65\u6846\u67b6\uff0c\u5f3a\u5236\u7c7b\u578b\u7ea6\u675f\uff0c\u6570\u636e\u8fc1\u79fb\u3002 ORM SQLAlchemy 2.0 \u5f3a\u5927\u7684 ORM \u5e93\u3002 \u5b9a\u65f6\u4efb\u52a1 APScheduler \u8f7b\u677e\u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1\u3002 \u6743\u9650\u8ba4\u8bc1 PyJWT \u5b9e\u73b0 JWT \u8ba4\u8bc1\u3002 \u524d\u7aef\u6846\u67b6 Vue3 / Vite5 / Pinia / TypeScript \u5feb\u901f\u5f00\u53d1 Vue3 \u5e94\u7528\u3002 UI \u5e93 Ant Design Vue \u5feb\u901f\u5f00\u53d1\u7f8e\u89c2\u7684 UI \u7ec4\u4ef6\u3002 \u6570\u636e\u5e93 MySQL / MongoDB \u5f3a\u5927\u7684\u6570\u636e\u5e93\u3002 \u7f13\u5b58 Redis \u5f3a\u5927\u7684\u7f13\u5b58\u6570\u636e\u5e93\u3002 \u6587\u6863 Swagger / Redoc \u81ea\u52a8\u751f\u6210 API \u6587\u6863\u3002 \u90e8\u7f72 Docker / Nginx / Docker Compose \u5feb\u901f\u90e8\u7f72\u9879\u76ee\u3002"},{"location":"index.html#_3","title":"\ud83d\udccc \u5185\u7f6e\u6a21\u5757","text":"\u6a21\u5757\u540d \u5b50\u6a21\u5757\u540d \u63cf\u8ff0 \u4eea\u8868\u76d8 \u5de5\u4f5c\u53f0 \u3001\u5206\u6790\u9875 \u5e38\u7528\u529f\u80fd\u5165\u53e3 \u7cfb\u7edf\u7ba1\u7406 \u5305\u542b\u83dc\u5355\u3001\u90e8\u95e8\u3001\u5c97\u4f4d\u3001\u89d2\u8272\u3001\u7528\u6237\u3001\u65e5\u5fd7\u3001\u914d\u7f6e\u3001\u516c\u544a\u3001\u5b57\u5178\u3001\u4efb\u52a1\u7b49\u5b50\u6a21\u5757 \u7cfb\u7edf\u4e3b\u529f\u80fd \u76d1\u63a7\u7ba1\u7406 \u5728\u7ebf\u7528\u6237\u3001\u670d\u52a1\u5668\u76d1\u63a7\u3001\u7f13\u5b58\u76d1\u63a7 \u7cfb\u7edf\u76d1\u63a7\u7ba1\u7406\u529f\u80fd \u516c\u5171\u7ba1\u7406 \u63a5\u53e3\u7ba1\u7406\u3001\u6587\u6863\u7ba1\u7406 \u9879\u76ee\u63a5\u53e3\u6587\u6863"},{"location":"index.html#_4","title":"\ud83c\udf6a \u6f14\u793a\u73af\u5883","text":" - \u6f14\u793a\u5730\u5740\uff1ahttp://service.fastapiadmin.com
- \u7ba1\u7406\u5458\u8d26\u53f7\uff1a
admin \u5bc6\u7801\uff1a123456 - \u6f14\u793a\u8d26\u53f7\uff1a
demo \u5bc6\u7801\uff1a123456
"},{"location":"index.html#_5","title":"\ud83d\udc77 \u5b89\u88c5\u548c\u4f7f\u7528","text":""},{"location":"index.html#_6","title":"\u7248\u672c\u8bf4\u660e","text":"\u7c7b\u578b \u6280\u672f\u6808 \u7248\u672c \u540e\u7aef Python 3.10\uff08\u5927\u4e8e3.10\u7684\u7248\u672c, \u4f1a\u6709\u517c\u5bb9\u95ee\u9898, \u5c06\u6765\u5347\u7ea7\uff0c\u6682\u65f6\u4e0d\u8003\u8651\u5347\u7ea7\uff09 \u540e\u7aef FastAPI 0.109 \u524d\u7aef Node.js >= 20.0\uff08\u63a8\u8350\u4f7f\u7528\u6700\u65b0\u7248\uff09 \u524d\u7aef npm 16.14 \u524d\u7aef Vue3 3.3 \u6570\u636e\u5e93 MySQL 8.0 \uff08\u63a8\u8350\u4f7f\u7528\u6700\u65b0\u7248\uff09 \u4e2d\u95f4\u4ef6 Redis 7.0 \uff08\u63a8\u8350\u4f7f\u7528\u6700\u65b0\u7248\uff09"},{"location":"index.html#_7","title":"\u83b7\u53d6\u4ee3\u7801","text":"# \u514b\u9686\u4ee3\u7801\u5230\u672c\u5730\ngit clone https://gitee.com/tao__tao/fastapi_vue3_admin.git\n\u6216\ngit clone https://github.com/1014TaoTao/fastapi_vue3_admin.git\n
"},{"location":"index.html#_8","title":"\u672c\u5730\u540e\u7aef\u542f\u52a8","text":"# \u8fdb\u5165\u540e\u7aef\u5de5\u7a0b\u76ee\u5f55\ncd backend\n# \u5b89\u88c5\u4f9d\u8d56\npip3 install -r requirements.txt\n# \u542f\u52a8\u540e\u7aef\u670d\u52a1\npython3 main.py run \n\u6216 \npython3 main.py run--env=dev \n# \u751f\u6210\u8fc1\u79fb\u6587\u4ef6\npython3 main.py revision \"\u521d\u59cb\u5316\u8fc1\u79fb\" --env=dev(\u4e0d\u52a0\u9ed8\u8ba4\u4e3adev)\n# \u5e94\u7528\u8fc1\u79fb\npython3 main.py upgrade --env=dev(\u4e0d\u52a0\u9ed8\u8ba4\u4e3adev)\n
"},{"location":"index.html#_9","title":"\u672c\u5730\u524d\u7aef\u542f\u52a8","text":"# \u8fdb\u5165\u524d\u7aef\u5de5\u7a0b\u76ee\u5f55\ncd frontend\n# \u5b89\u88c5\u4f9d\u8d56\nnpm install\n# \u542f\u52a8\u524d\u7aef\u670d\u52a1\nnpm run dev\n# \u6784\u5efa\u524d\u7aef, \u751f\u6210 `frontend/dist` \u76ee\u5f55\nnpm run build\n
"},{"location":"index.html#_10","title":"\u672c\u5730\u8bbf\u95ee\u5730\u5740","text":" - \u524d\u7aef\u5730\u5740: http://127.0.0.1:5180
- \u63a5\u53e3\u5730\u5740: http://127.0.0.1:8001/api/v1/docs
- \u7ba1\u7406\u5458\u8d26\u53f7\uff1a
admin \u5bc6\u7801\uff1a123456 - \u6f14\u793a\u8d26\u53f7\uff1a
demo \u5bc6\u7801\uff1a123456
"},{"location":"index.html#docker","title":"docker \u90e8\u7f72","text":"# \u590d\u5236\u811a\u672c `fastapi_vue3_amdin/start.sh` \u811a\u672c\u6587\u4ef6\u5230\u670d\u52a1\u5668, \u5e76\u8d4b\u4e88\u6267\u884c\u6743\u9650\nchmod +x start.sh\n# \u6267\u884c\u811a\u672c\n./start.sh\n# \u67e5\u770b\u955c\u50cf:\ndocsker images -a\n# \u67e5\u770b\u5bb9\u5668:\ndocsker compose ps\n# \u67e5\u770b\u65e5\u5fd7\ndocker logs -f <\u5bb9\u5668\u540d>\n# \u670d\u52a1\u505c\u6b62\ndocsker compose down\n# \u5220\u9664\u955c\u50cf\ndocker rmi <\u955c\u50cf\u540d>\n# \u5220\u9664\u5bb9\u5668\ndocker rm <\u5bb9\u5668\u540d>\n# \u540e\u7aef\u914d\u7f6e\u6587\u4ef6\u76ee\u5f55\nfastapi_vue3_amdin/backend/env/.env.prod.py\n# \u524d\u7aef\u914d\u7f6e\u6587\u4ef6\u76ee\u5f55\nfastapi_vue3_amdin/frontend/vite.config.ts\n\u548c \nfastapi_vue3_amdin/frontend/.env.production\n# \u90e8\u7f72\u6587\u4ef6\u76ee\u5f55 \nfastapi_vue3_amdin/docker-compose.yaml\n\u548c \nfastapi_vue3_amdin/devops/devops/nginx/nginx.conf\n\n
"},{"location":"index.html#_11","title":"\ud83d\udd27 \u6a21\u5757\u5c55\u793a","text":"\u767b\u9646 \u4eea\u8868\u76d8 \u83dc\u5355\u7ba1\u7406 \u90e8\u95e8\u7ba1\u7406 \u5c97\u4f4d\u7ba1\u7406 \u89d2\u8272\u7ba1\u7406 \u7528\u6237\u7ba1\u7406 \u65e5\u5fd7\u7ba1\u7406 \u914d\u7f6e\u7ba1\u7406 \u5728\u7ebf\u7528\u6237\u7ba1\u7406 \u670d\u52a1\u5668\u76d1\u63a7 \u7f13\u5b58\u76d1\u63a7 \u4efb\u52a1\u7ba1\u7406 \u63a5\u53e3\u7ba1\u7406 \u6587\u6863\u7ba1\u7406 \u4e2a\u4eba\u4fe1\u606f \u5728\u7ebf\u6587\u6863 \u5b57\u5178\u7ba1\u7406"},{"location":"index.html#_12","title":"\ud83d\ude4f \u7279\u522b\u9e23\u8c22","text":"\u611f\u8c22\u4ee5\u4e0b\u9879\u76ee\u7684\u8d21\u732e\u548c\u652f\u6301\uff0c\u4f7f\u672c\u9879\u76ee\u5f97\u4ee5\u987a\u5229\u5b8c\u6210\uff1a
- FastAPI \u9879\u76ee
- Vue3 \u9879\u76ee
- KInit \u9879\u76ee
- Fastapi-Vue3-Admin \u9879\u76ee
- Vue-FastAPI-Admin \u9879\u76ee
- RuoYi-Vue3-FastAPI \u9879\u76ee
- APScheduler \u9879\u76ee
- Vite \u9879\u76ee
"},{"location":"index.html#_13","title":"\ud83c\udfa8 \u793e\u533a","text":""},{"location":"index.html#star","title":"\u2764\ufe0f Star \u652f\u6301\u6211","text":"\u5982\u679c\u4f60\u559c\u6b22\u8fd9\u4e2a\u9879\u76ee\uff0c\u8bf7\u7ed9\u6211\u4e00\u4e2a \u2b50\ufe0f Star \u652f\u6301\u4e00\u4e0b\u5427\uff01\u975e\u5e38\u611f\u8c22\uff01
"},{"location":"index.html#_14","title":"\ud83d\udc40 \u8bbf\u95ee\u7edf\u8ba1","text":""}]}
\ No newline at end of file
diff --git a/frontend/public/site/sitemap.xml.gz b/frontend/public/site/sitemap.xml.gz
index 8a1ed9a5..d9aeaa20 100644
Binary files a/frontend/public/site/sitemap.xml.gz and b/frontend/public/site/sitemap.xml.gz differ