# Dash-FastAPI-Admin-labeling **Repository Path**: bujiasisuo/dash-fastapi-admin-labeling ## Basic Information - **Project Name**: Dash-FastAPI-Admin-labeling - **Description**: 基于Dash+FastAPI纯Python开发的一个通用中后台管理系统 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: https://dfadmin.insistence.tech/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 243 - **Created**: 2026-04-05 - **Last Updated**: 2026-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

logo

Dash-FastAPI-Admin v2.1.1

基于Dash+FastAPI前后端分离的纯Python快速开发框架

--- ## 目录 - [平台简介](#平台简介) - [技术栈](#技术栈) - [架构模式](#架构模式) - [项目结构](#项目结构) - [功能模块清单](#功能模块清单) - [核心业务流程](#核心业务流程) - [Git 变更记录](#git-变更记录) - [快速开始](#快速开始) - [演示图](#演示图) - [交流与赞助](#交流与赞助) --- ## 平台简介 Dash-FastAPI-Admin 是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 - 前端采用 Dash、feffery-antd-components、feffery-utils-components - 后端采用 FastAPI、SQLAlchemy、MySQL/PostgreSQL、Redis、OAuth2 & JWT - 权限认证使用 OAuth2 & JWT,支持多终端认证系统 - 支持加载动态权限菜单,多方式轻松权限控制 - 特别鸣谢:[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue)、[feffery-antd-components](https://github.com/CNFeffery/feffery-antd-components)、[feffery-utils-components](https://github.com/CNFeffery/feffery-utils-components) --- ## 技术栈 ### 后端技术 | 技术名称 | 版本 | 用途说明 | |---------|------|---------| | FastAPI | 0.115.0 | 高性能异步 Web 框架,提供 RESTful API | | SQLAlchemy | 2.0.31 (asyncio) | 异步 ORM 框架,数据库操作与模型映射 | | PyMySQL / asyncmy | 1.1.1 / 0.2.9 | MySQL 异步数据库驱动 | | asyncpg / psycopg2 | 0.30.0 / 2.9.10 | PostgreSQL 异步数据库驱动(可选) | | Redis | 5.0.7 | 缓存中间件,用于 Token 管理、字典缓存、会话管理 | | APScheduler | 3.10.4 | 定时任务调度框架 | | PyJWT | 2.8.0 (crypto) | JWT 令牌生成与验证 | | Pydantic | (内置于FastAPI) | 数据校验与序列化 | | Uvicorn | 0.30.1 | ASGI 异步服务器 | | Loguru | 0.7.2 | 结构化日志记录 | | Pandas | 2.2.2 | 数据导出处理 | | Pillow | 10.4.0 | 图片处理(验证码、头像裁剪) | ### 前端技术 | 技术名称 | 版本 | 用途说明 | |---------|------|---------| | Dash | 2.18.2 | 基于 Plotly 的 Python Web 框架,构建交互式 UI | | feffery-antd-components (fac) | 0.3.10 | Ant Design 风格的 Dash 组件库,提供丰富 UI 组件 | | feffery-utils-components (fuc) | 0.2.0rc24 | Dash 工具组件库,提供裁剪、Markdown 等能力 | | feffery-antd-charts | 0.1.0rc5 | 基于 AntV 的图表组件,用于监控面板可视化 | | feffery-markdown-components | 0.2.10 | Markdown 渲染组件 | | Flask | (内置于Dash) | Dash 底层 Web 框架 | | Flask-Compress | 1.15 | HTTP 响应压缩(支持 Brotli) | | Cachebox | 4.2.3 | 高性能 LRU/TTL 缓存管理器 | | Waitress | 3.0.0 | 生产环境 WSGI 服务器 | | ECharts | (JS) | 缓存监控模块图表渲染 | | JSEncrypt | (JS) | RSA 加密,用于密码安全传输 | --- ## 架构模式 ### 后端架构:三层分层模式 (Controller → Service → DAO) ``` ┌─────────────────────────────────────────────────────────┐ │ FastAPI Application │ │ ┌──────────┐ ┌────────────┐ ┌──────────────────────┐ │ │ │Middleware │ │ Exception │ │ Sub-Applications │ │ │ │ (CORS, │ │ Handler │ │ (StaticFiles) │ │ │ │ GZip) │ │ │ │ │ │ │ └──────────┘ └────────────┘ └──────────────────────┘ │ ├─────────────────────────────────────────────────────────┤ │ Annotation / Aspect │ │ ┌──────────────┐ ┌──────────────┐ ┌───────────────┐ │ │ │Log Annotation│ │ Data Scope │ │Interface Auth │ │ │ │ (日志注解) │ │ (数据权限) │ │ (接口鉴权) │ │ │ └──────────────┘ └──────────────┘ └───────────────┘ │ ├─────────────────────────────────────────────────────────┤ │ Controller 层 (路由) │ │ loginController | userController | roleController ... │ │ 接收 HTTP 请求,参数校验,调用 Service,返回响应 │ ├─────────────────────────────────────────────────────────┤ │ Service 层 (业务逻辑) │ │ LoginService | UserService | RoleService ... │ │ 业务规则处理,组合调用 DAO,事务管理 │ ├─────────────────────────────────────────────────────────┤ │ DAO 层 (数据访问) │ │ login_dao | user_dao | role_dao ... │ │ SQLAlchemy 异步查询,数据库 CRUD 操作 │ ├─────────────────────────────────────────────────────────┤ │ Entity 层 (数据模型) │ │ ┌─────────────────┐ ┌─────────────────────┐ │ │ │ DO (Data Object)│ │ VO (Value Object) │ │ │ │ 数据库表映射 │ │ 请求/响应数据传输 │ │ │ └─────────────────┘ └─────────────────────┘ │ ├─────────────────────────────────────────────────────────┤ │ Infrastructure (基础设施) │ │ ┌────────┐ ┌────────┐ ┌───────────┐ ┌───────────┐ │ │ │ MySQL │ │ Redis │ │APScheduler│ │ Uvicorn │ │ │ │PostgreSQL│ │ │ │ │ │ │ │ │ └────────┘ └────────┘ └───────────┘ └───────────┘ │ └─────────────────────────────────────────────────────────┘ ``` ### 前端架构:Dash 回调驱动模式 ``` ┌─────────────────────────────────────────────────────────┐ │ Dash Application │ ├─────────────────────────────────────────────────────────┤ │ Views 层 (页面组件) │ │ login | dashboard | system/* | monitor/* | tool/* │ │ 定义页面布局结构,组装 Dash 组件 │ ├─────────────────────────────────────────────────────────┤ │ Callbacks 层 (交互逻辑) │ │ login_c | system_c/* | monitor_c/* | layout_c/* │ │ 注册 Dash 回调函数,处理用户交互事件 │ ├─────────────────────────────────────────────────────────┤ │ API 层 (接口调用) │ │ login | system/* | monitor/* | sms/* │ │ 封装 HTTP 请求函数,与后端 API 通信 │ ├─────────────────────────────────────────────────────────┤ │ Components 层 (自定义组件) │ │ ApiSelect | ApiRadioGroup | ManuallyUpload │ │ 基于字典数据的可复用业务组件 │ ├─────────────────────────────────────────────────────────┤ │ Store 层 (客户端存储) │ │ 基于 dcc.Store 的客户端数据缓存 │ ├─────────────────────────────────────────────────────────┤ │ Utils 层 (工具方法) │ │ cache_util | permission_util | dict_util | request │ │ 缓存管理、权限校验、字典工具、HTTP 请求封装 │ └─────────────────────────────────────────────────────────┘ ``` --- ## 项目结构 ``` dash-fastapi-admin-labeling/ ├── dash-fastapi-backend/ # 后端服务 │ ├── app.py # Uvicorn 启动入口 │ ├── server.py # FastAPI 应用初始化、路由注册、生命周期管理 │ ├── config/ # 配置层 │ │ ├── env.py # Pydantic 环境配置(App/JWT/DB/Redis) │ │ ├── database.py # SQLAlchemy 引擎与会话工厂 │ │ ├── get_db.py # 数据库会话依赖注入 │ │ ├── get_redis.py # Redis 连接池管理 │ │ ├── get_scheduler.py # APScheduler 调度器管理 │ │ ├── constant.py # 全局常量 │ │ └── enums.py # 枚举定义 │ ├── module_admin/ # 核心管理模块 │ │ ├── controller/ # 控制器层(17个路由模块) │ │ ├── service/ # 服务层(18个业务服务) │ │ ├── dao/ # 数据访问层(13个DAO) │ │ ├── entity/ │ │ │ ├── do/ # 数据对象(ORM模型,11个) │ │ │ └── vo/ # 值对象(请求/响应DTO,16个) │ │ ├── annotation/ # 注解(日志、Pydantic) │ │ └── aspect/ # 切面(数据权限、接口鉴权) │ ├── module_labeling/ # 语音标注业务模块 │ │ ├── controller/ # 标注业务控制器层(5个:project/task/workspace/review/statistics) │ │ ├── service/ # 标注业���服务层 │ │ ├── dao/ # 标注业务数据访问层 │ │ └── entity/ │ │ ├── do/ # 数据对象(project_do/task_do/statistics_do) │ │ └── vo/ # 值对象(project_vo/task_vo/statistics_vo/common_vo) │ ├── module_task/ # 定时任务模块 │ ├── utils/ # 工具类(分页、密码、日志、响应等) │ ├── exceptions/ # 全局异常处理 │ ├── middlewares/ # 中间件(CORS、GZip) │ ├── sub_applications/ # 子应用(静态文件服务) │ ├── sql/ # 数据库初始化脚本 │ │ ├── dash-fastapi.sql # MySQL 建表脚本 │ │ ├── dash-fastapi-pg.sql # PostgreSQL 建表脚本 │ │ └── labeling-init.sql # 标注模块初始化脚本(建表+菜单+角色+字典) │ ├── .env.dev # 开发环境配置 │ └── .env.prod # 生产环境配置 │ ├── dash-fastapi-frontend/ # 前端服务 │ ├── app.py # Dash 应用布局入口 │ ├── server.py # Flask/Dash 服务初始化 │ ├── wsgi.py # 生产环境 WSGI 入口(Waitress) │ ├── api/ # API 请求层 │ │ ├── login.py # 登录相关接口 │ │ ├── system/ # 系统管理接口(user/role/menu/dept等) │ │ ├── monitor/ # 监控接口(cache/job/online等) │ │ ├── sms/ # 短信接口 │ │ └── labeling/ # 标注管理接口(project/task/workspace/review/statistics) │ ├── callbacks/ # 回调层(交互逻辑) │ │ ├── app_c.py # 全局应用回调 │ │ ├── router_c.py # 路由回调 │ │ ├── login_c.py # 登录回调 │ │ ├── layout_c/ # 布局回调(头部、侧边栏) │ │ ├── system_c/ # 系统管理回调 │ │ ├── monitor_c/ # 监控回调 │ │ ├── sms_c/ # 短信回调 │ │ └── labeling_c/ # 标注管理回调(project/task/workspace/review/statistics) │ ├── views/ # 视图层(页面组件) │ │ ├── login.py # 登录页 │ │ ├── dashboard/ # 首页仪表盘 │ │ ├── layout/ # 整体布局(头部、侧边栏、内容区) │ │ ├── system/ # 系统管理页面 │ │ ├── monitor/ # 监控页面 │ │ ├── tool/ # 系统工具页面 │ │ ├── sms/ # 短信管理页面 │ │ └── labeling/ # 标注管理页面(project/task/workspace/review/statistics) │ ├── components/ # 自定义组件 │ │ ├── ApiSelect/ # 字典驱动下拉选择 │ │ ├── ApiRadioGroup/ # 字典驱动单选按钮组 │ │ └── ManuallyUpload/ # 手动上传组件 │ ├── store/ # 客户端存储定义 │ ├── utils/ # 工具类 │ ├── config/ # 前端配置 │ ├── assets/ # 静态资源(CSS/JS/图片) │ ├── .env.dev # 开发环境配置 │ └── .env.prod # 生产环境配置 │ ├── requirements.txt # MySQL 版依赖 ├── requirements-pg.txt # PostgreSQL 版依赖 ├── LICENSE # MIT 许可证 └── demo-pictures/ # 演示截图 ``` --- ## 功能模块清单 ### 一、系统管理 | 模块名称 | 功能说明 | 关联业务流程 | 后端文件 | 前端文件 | |---------|---------|-------------|---------|---------| | 用户管理 | 系统用户配置,支持增删改查、批量导入、分配角色、个人资料管理 | 用户登录、权限分配 | user_controller / user_service / user_dao / user_do / user_vo | views/system/user/ callbacks/system_c/user_c/ api/system/user | | 角色管理 | 角色权限分配、数据范围权限划分、分配用户 | 权限控制、数据权限 | role_controller / role_service / role_dao / role_do / role_vo | views/system/role/ callbacks/system_c/role_c/ api/system/role | | 菜单管理 | 系统菜单配置、操作权限、按钮权限标识管理 | 动态路由、权限控制 | menu_controller / menu_service / menu_dao / menu_do / menu_vo | views/system/menu/ callbacks/system_c/menu_c/ api/system/menu | | 部门管理 | 组织机构(公司、部门、小组)配置,树形结构 | 数据权限、用户归属 | dept_controller / dept_service / dept_dao / dept_do / dept_vo | views/system/dept/ callbacks/system_c/dept_c api/system/dept | | 岗位管理 | 系统用户所属担任职务配置 | 用户管理 | post_controler / post_service / post_dao / post_do / post_vo | views/system/post/ callbacks/system_c/post_c api/system/post | | 字典管理 | 系统常用固定数据维护(类型+数据) | 全模块字典引用 | dict_controller / dict_service / dict_dao / dict_do / dict_vo | views/system/dict/ callbacks/system_c/dict_c/ api/system/dict/ | | 参数管理 | 系统动态配置常用参数(如验证码开关) | 系统配置 | config_controller / config_service / config_dao / config_do / config_vo | views/system/config/ callbacks/system_c/config_c api/system/config | | 通知公告 | 系统通知公告信息发布维护(引入富文本编辑器) | 消息通知 | notice_controller / notice_service / notice_dao / notice_do / notice_vo | views/system/notice/ callbacks/system_c/notice_c api/system/notice | ### 二、系统监控 | 模块名称 | 功能说明 | 关联业务流程 | 后端文件 | 前端文件 | |---------|---------|-------------|---------|---------| | 在线用户 | 当前活跃用户状态监控,支持强制退出 | 安全管理 | online_controller / online_service | views/monitor/online/ callbacks/monitor_c/online_c api/monitor/online | | 定时任务 | 在线管理(添加/修改/删除)定时任务,含执行日志 | 任务调度 | job_controller / job_service / job_dao / job_do / job_vo | views/monitor/job/ callbacks/monitor_c/job_c/ api/monitor/job | | 服务监控 | 监视当前系统 CPU、内存、磁盘、堆栈等信息 | 运维监控 | server_controller / server_service / server_vo | views/monitor/server/ api/monitor/server | | 缓存监控 | Redis 缓存信息查询、命令统计、ECharts 可视化 | 运维监控 | cache_controller / cache_service / cache_vo | views/monitor/cache/ callbacks/monitor_c/cache_c/ api/monitor/cache | ### 三、日志管理 | 模块名称 | 功能说明 | 关联业务流程 | 后端文件 | 前端文件 | |---------|---------|-------------|---------|---------| | 操作日志 | 系统正常/异常操作日志记录与查询,支持导出 | 审计追踪 | log_controller / log_service / log_dao / log_do / log_vo | views/monitor/operlog/ callbacks/monitor_c/operlog_c api/monitor/operlog | | 登录日志 | 系统登录日志记录查询(含登录异常),支持导出、账号解锁 | 安全审计 | log_controller / log_service / log_dao / log_do / log_vo | views/monitor/logininfor/ callbacks/monitor_c/logininfor_c api/monitor/logininfor | ### 四、认证与安全 | 模块名称 | 功能说明 | 关联业务流程 | 后端文件 | 前端文件 | |---------|---------|-------------|---------|---------| | 用户登录 | 账号密码登录、验证码校验、JWT Token 生成 | 系统入口 | login_controller / login_service / login_dao / login_vo | views/login callbacks/login_c api/login | | 用户注册 | 新用户自助注册 | 用户管理 | login_controller / login_service | views/register callbacks/register_c api/register | | 忘记密码 | 短信验证码重置密码 | 安全管理 | login_controller / login_service | views/forget callbacks/forget_c api/forget | | 验证码 | 图片验证码生成与校验 | 登录安全 | captcha_controller / captcha_service | (集成在登录页) | | 接口鉴权 | 基于 OAuth2 Bearer JWT 的接口权限校验 | 全局安全 | aspect/interface_auth | - | | 数据权限 | 五种内置数据权限策略(全部/自定义/部门/部门及以下/仅本人) | 数据安全 | aspect/data_scope | - | ### 五、通用功能与工具 | 模块名称 | 功能说明 | 关联业务流程 | 后端文件 | 前端文件 | |---------|---------|-------------|---------|---------| | 文件上传/下载 | 通用文件上传与下载接口 | 头像、附件管理 | common_controller / common_service | components/ManuallyUpload/ | | 系统接口 | 根据业务代码自动生成 API 接口文档(Swagger/ReDoc) | 开发调试 | (FastAPI 内置) | views/tool/swagger/ | | 短信管理 | 短信消息收发与管理 | 消息通知 | sms_controller / sms_service / sms_dao / sms_do / sms_vo | views/sms/message/ callbacks/sms_c/ api/sms/ | ### 六、语音标注管理(module_labeling) | 模块名称 | 功能说明 | 关联业务流程 | 后端文件 | 前端文件 | |---------|---------|-------------|---------|---------| | 项目管理 | 标注项目全生命周期管理,上传压缩包并解析 TextGrid | 项目创建 → 解析 → 分配 → 完成 → 归档 | project_controller / project_service / project_dao / project_do / project_vo | views/labeling/project/ callbacks/labeling_c/project_c/ api/labeling/project | | 任务管理 | 解析后的标注任务单元管理,批量分配标注/检验人员 | 任务分配 → 标注 → 检验 → 通过/驳回 | task_controller / task_service / task_dao / task_do / task_vo | views/labeling/task/ callbacks/labeling_c/task_c/ api/labeling/task | | 标注工作台 | 标注人员核心工作界面,音频播放+文本编辑 | 听音频 → 对照修正转写文本 → 提交 | workspace_controller / workspace_service | views/labeling/workspace/ callbacks/labeling_c/workspace_c/ api/labeling/workspace | | 检验工作台 | 检验人员审核标注结果,原文vs标注对比 | 逐条审核 → 通过/驳回 | review_controller / review_service | views/labeling/review/ callbacks/labeling_c/review_c/ api/labeling/review | | 统计考核 | 工作量统计、质量分析、绩效考核报表 | 数据汇总 → 图表展示 → 导出 Excel | statistics_controller / statistics_service / statistics_dao / statistics_do / statistics_vo | views/labeling/statistics/ callbacks/labeling_c/statistics_c/ api/labeling/statistics | | 数据导出 | 项目完成后导出修正后的 TextGrid + 统计报告 | 生成 TextGrid → 打包下载 | export_controller / export_service | (集成在项目管理页面) | ### 各模块首次提交与关键变更 | 模块 | 首次提交 | 关键变更 | |------|---------|---------| | 项目基础框架 | `335ef6c` 2023-05-29 初始提交 | `fa3b440` 架构调整, `f9380c6` v2.0.0后端重构, `8bb7369` v2.0.0前端重构 | | 用户管理 | `d2b3e6c` 2023-05-30 | `87aaaae` 批量导入, `a99fcb0` 分配角色, `6faffea` 个人资料 | | 角色管理 | `292dfdb` 2023-06-12 | `c37d86e` 数据权限, `a99fcb0` 分配用户 | | 菜单管理 | `ded72b7` 2023-06-10 | `16b0baf` 按钮权限控制, `f913a04` 引入字典 | | 部门管理 | `10c2297` 2023-06-03 | `b0015d3` 引入数据权限 | | 岗位管理 | `237c31d` 2023-06-02 | `cf8cbce` fac 0.3.x 表单重构 | | 字典管理 | `e1dbd6a` 2023-07-13 | `e881842` 全局字典缓存, `1e3affc` 字典管理器, `3c0d1fb` 重构缓存逻辑 | | 参数管理 | `7c9ab70` 2023-08-31 | `1447764` 引入字典 | | 通知公告 | `0093740` 2023-08-09 | `dd20d61` 富文本编辑器组件化 | | 操作日志 | `07975af` 2023-07-12 | `27708d1` 前端模块, `d2bca41` 导出增加查询参数 | | 登录日志 | `bc33bb5` 2023-07-13 | `2396658` 导出增加查询参数 | | 在线用户 | `2c54a67` 2023-08-12 | `e2cab7d` 分页查询 | | 定时任务 | `1eb4beb` 2023-08-22 | `93962c4` 调度日志, `d39dff2` 异步函数支持, `1640049` AsyncIOScheduler | | 服务监控 | `cff4e49` 2023-08-14 | `42ec8a1` 修复 cpu_num 赋值 | | 缓存监控 | `cff4e49` 2023-08-14 | `1205ec4` 缓存列表, `7b82325` 刷新与清除 | | 认证模块 | `dee58f4` 2023-08-31 OAuth2 | `54bd6ac` 密码错误限制, `9dc84d7` IP黑名单 | | 数据权限 | `c37d86e` 2023-10-04 | - | | PostgreSQL支持 | `704e6ea` 2024-10-22 | - | | 短信管理 | `24a7dcf` 2026-03-24 | - | | 语音标注管理(Phase1) | 2026-04-05 | Phase 1 基础设施:ORM 模型、Pydantic VO、TextGrid 解析器、SQL 初始化脚本、模块骨架 | --- ## 核心业务流程 ### 流程一:用户登录认证 ``` 用户浏览器 前端 (Dash) 后端 (FastAPI) Redis MySQL | | | | | |-- 访问登录页 ----------->| | | | | |-- GET /captchaImage -------->| | | | | |-- 生成验证码+UUID ------->| | | | | 存入Redis(UUID:code) | | | |<-- 返回验证码图片+UUID -------| | | |<-- 显示登录表单+验证码 ---| | | | | | | | | |-- 输入账号/密码/验证码 -->| | | | | |-- POST /login -------------->| | | | | |-- 校验验证码(Redis) ----->| | | | |-- 查询用户+校验密码 ------|----------------->| | | |-- 检查错误次数(Redis) --->| | | | |-- 生成JWT Token | | | | |-- 存入Redis(Token) ----->| | | |<-- 返回Token ----------------| | | | | | | | | |-- GET /getInfo (Token) ----->| | | | | |-- 解析JWT,获取用户信息 ---|----------------->| | |<-- 返回用户+角色+权限 --------| | | | | | | | | |-- GET /getRouters (Token) -->| | | | | |-- 查询用户菜单 ----------|----------------->| | |<-- 返回动态路由菜单 ----------| | | |<-- 渲染首页+侧边栏菜单 --| | | | ``` 异常处理路径: - 验证码错误 → 返回错误提示,刷新验证码 - 密码错误次数超限 → 锁定账号,需管理员解锁 - Token 过期 → Redis 中 Token 失效,前端跳转登录页 - IP 黑名单 → 直接拒绝登录请求 ### 流程二:RBAC 权限控制 ``` ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌───────────┐ │ 用户 │────>│ 角色 │────>│ 菜单 │────>│ 按钮权限 │ │ (User) │ N:N │ (Role) │ N:N │ (Menu) │ │ (perms) │ └─────────┘ └────┬────┘ └─────────┘ └───────────┘ │ v ┌─────────────┐ │ 数据权限 │ │ (DataScope) │ ├─────────────┤ │ 1.全部数据 │ │ 2.自定义部门 │ │ 3.本部门数据 │ │ 4.本部门及以下│ │ 5.仅本人数据 │ └─────────────┘ 请求鉴权流程: HTTP Request --> interface_auth.py (解析Token,提取权限标识) --> 比对接口所需权限 vs 用户拥有权限 --> 通过: 继续执行 --> 拒绝: 抛出 PermissionException --> data_scope.py (注入数据范围SQL条件) ``` ### 流程三:定时任务调度 ``` ┌──────────┐ ┌───────────────┐ ┌──────────────┐ ┌──────────────┐ │ 管理界面 │───>│ job_controller │───>│ job_service │───>│ APScheduler │ │ (前端) │ │ (CRUD接口) │ │ (业务逻辑) │ │ (调度引擎) │ └──────────┘ └───────────────┘ └──────┬───────┘ └──────┬───────┘ │ │ 新增/修改任务 ──────────>│ │ │── 解析cron表达式 -->│ │── 注册/更新任务 --->│ │ │ │ 定时触发 <----| │ │ │ ┌───────────────┤ │ │ 执行目标函数 │ │ │ (支持同步/异步) │ │ └───────┬───────┘ │ │ │<-- 记录执行日志 ----| │── 写入job_log表 -->│ MySQL ``` ### 流程四:数据导出 ``` 用户操作 前端回调 API请求层 后端Service 数据库 | | | | | |-- 点击导出 -->| | | | | |-- 收集查询参数 --->| | | | | |-- GET /export ---->| | | | | |-- 查询数据 ------->| | | | |<-- 返回结果集 -----| | | | |-- Pandas转Excel | | | |<-- 返回文件流 ------| | | |<-- 触发浏览器下载 --| | | |<-- 保存文件 --| | | | ``` ### 流程五:字典缓存与引用 ``` 系统启动 --> RedisUtil.init_sys_dict() --> 从MySQL加载全部字典数据 --> 写入Redis | 前端组件 (ApiSelect/ApiRadioGroup) | |-- 回调触发 --> dict_util.py (本地LRU/TTL缓存) | | |-- 缓存命中 --> 直接返回 | | |-- 缓存未命中 --> API请求后端 | | |-- 从Redis读取 <------------| | |<-- 返回字典数据 |<-- 渲染下拉选项/单选按钮 ``` --- ## Git 变更记录 ### 版本发布时间线 | 版本 | 发布日期 | 提交哈希 | 关键变更 | |------|---------|---------|---------| | v1.0.0 | 2023-09-04 | `2899ff3` | 初始发布,完成基础管理系统全部功能 | | v1.0.1 | 2023-09-12 | `42f1884` | 新增用户分配角色、角色分配用户功能 | | v1.0.2 | 2023-09-12 | `853360d` | 新增忘记密码功能 | | v1.0.3 | 2023-09-13 | `7691b94` | 修复类型注解异常 | | v1.0.4 | 2023-09-16 | `8f87d80` | 新增首页模板、限制同账号同时登录 | | v1.0.5 | 2023-09-21 | `6301420` | 重构前端回调(flexible callback signatures)、表单动态回写 | | v1.0.6 | 2023-10-04 | `a3c7c94` | 新增数据权限功能(五种策略)、标签页右键菜单 | | v1.0.7 | 2023-10-28 | `c4f6e41` | 新增缓存列表模块、自定义权限异常 | | v1.0.8 | 2023-11-04 | `ab0bd8f` | 修复用户导出等 bug | | v1.0.9 | 2023-12-19 | `7e04e00` | fac 升级至 0.2.11,组件化富文本编辑器和头像裁剪 | | v1.0.10 | 2024-01-31 | `cfc412b` | 替换 aioredis 为 redis,表单校验优化 | | v1.1.0 | 2024-02-04 | `30e44aa` | 日志管理新增字段排序、cron 表达式优化 | | v1.2.0 | 2024-02-06 | `30dd792` | 多环境配置文件支持(.env.dev/.env.prod) | | v1.2.1 | 2024-02-23 | `e0c7f0b` | 新增按角色校验接口权限 | | v1.3.0 | 2024-02-27 | `f955945` | 重构动态页面参数传递 | | v1.3.1 | 2024-03-07 | `9e2f8e6` | 新增 IP 黑名单校验 | | v1.4.0 | 2024-04-02 | `d6bf0e3` | 新增配置开关(同时登录/IP查询/SQL日志) | | v1.4.1 | 2024-04-29 | `e574d1b` | 修复菜单/部门停用时角色信息异常 | | v1.4.2 | 2024-06-28 | `dd95054` | 修复创建时间记录异常 | | v2.0.0 | 2024-09-30 | `8719ced` | 全面重构前后端,升级 FastAPI 0.115.0、fac 0.3.x、Dash 2.18,重构回调/字典/路由 | | v2.0.1 | 2024-10-13 | `5b380a4` | 修复非 Chrome 浏览器拦截、waitress 代理 IP 问题 | | v2.1.0 | 2024-10-22 | `bafc3cb` | 新增 PostgreSQL 数据库支持、列表查询排序优化 | | v2.1.1 | 2024-11-12 | `afc9928` | 定时任务支持异步函数、改用 AsyncIOScheduler | | v2.2.0 | 2026-04-05 | - | 新增语音标注管理模块全栈实现(后端5控制器+3服务+3DAO、前端5页面+5回调+5API),修复代码缺陷 | ### 提交统计 项目共计 **449** 次提交(2023-05-29 至 2026-03-24),提交类型分布: | 类型 | 数量 | 说明 | |------|------|------| | feat | ~130 | 新功能开发 | | fix | ~75 | Bug 修复 | | perf | ~70 | 性能优化 | | refactor | ~65 | 代码重构 | | style | ~35 | 代码风格调整 | | chore | ~35 | 依赖更新、配置调整 | | docs | ~30 | 文档更新 | | merge | ~9 | 版本合并 | ### 全量提交记录(按时间倒序,精选关键提交)
v2.1.1 (2024-11-12) | 哈希 | 日期 | 类型 | 说明 | 影响文件数 | |------|------|------|------|----------| | `345d2b3` | 2024-11-12 | chore | 升级版本至2.1.1 | 4 | | `1640049` | 2024-11-07 | refactor | 定时任务改用AsyncIOScheduler和AsyncIOExecutor | 1 | | `d39dff2` | 2024-11-06 | feat | 定时任务新增支持调用异步函数 | 3 | | `f7d8ca2` | 2024-11-05 | chore | 更新项目依赖 | 2 | | `3212e62` | 2024-10-31 | style | 修复书写错误 | 1 |
v2.1.0 (2024-10-22) | 哈希 | 日期 | 类型 | 说明 | 影响文件数 | |------|------|------|------|----------| | `989750a` | 2024-10-22 | chore | 升级版本至2.1.0 | 4 | | `03a6908` | 2024-10-22 | perf | 优化列表查询排序 | 6 | | `704e6ea` | 2024-10-22 | feat | 新增对PostgreSQL数据库的支持 | 18 |
v2.0.1 (2024-10-13) | 哈希 | 日期 | 类型 | 说明 | 影响文件数 | |------|------|------|------|----------| | `3079c19` | 2024-10-13 | chore | 升级版本至2.0.1 | 4 | | `60a186f` | 2024-10-08 | perf | 前端日志记录自动排除password类字段 | 2 | | `25ff1d3` | 2024-10-08 | fix | 修复异常拦截非Chrome内核浏览器请求的问题 | 1 | | `212a963` | 2024-10-08 | fix | 修复waitress 3.0.0版本获取代理IP异常的问题 | 1 |
v2.0.0 (2024-09-30) — 重大重构版本 | 哈希 | 日期 | 类型 | 说明 | 影响文件数 | |------|------|------|------|----------| | `42ec8a1` | 2024-09-30 | fix | 修复cpu_num赋值错误 | 1 | | `bc6e908` | 2024-09-30 | perf | 退出系统时自动清除当前用户的缓存信息 | 3 | | `ebafada` | 2024-09-30 | refactor | 重构utils/tree_tool.py和utils/common.py | 6+ | | `5b13840` | 2024-09-30 | feat | 新增缓存配置 | - | | `22a2461` | 2024-09-29 | refactor | 基于fastapi0.115.0新特性重构查询参数接收方式 | - | | `50644ea` | 2024-09-28 | feat | 新增TTL缓存管理器 | - | | `3c0d1fb` | 2024-09-28 | refactor | 重构字典缓存逻辑,减少内存消耗 | - | | `8a540fe` | 2024-09-25 | refactor | 重构路由加载逻辑 | - | | `194d142` | 2024-09-25 | refactor | 重构项目配置 | - | | `95eeee3` | 2024-09-24 | refactor | 重构登录、忘记密码、注册页面 | - | | `1755c44` | 2024-09-21 | feat | 新增用户注册功能 | - | | `287fe6f` | 2024-09-21 | feat | 登录页面新增记住我功能 | - | | `357ff86` | 2024-09-20 | feat | 登录页面新增回车键登录 | - | | `e6a6958` | 2024-09-20 | refactor | 重构登录回调逻辑 | - | | `6cdf067` | 2024-09-05 | refactor | 基于全局异常处理重构api请求,实现类axios拦截器 | - | | `b511be5` | 2024-09-05 | feat | 基于dash2.18新增全局异常处理 | - | | `04218b6` | 2024-09-04 | feat | 新增手动上传组件 | - | | `f9380c6` | 2024-08-28 | feat | 初始化2.0.0版本后端 | - | | `8bb7369` | 2024-09-01 | feat | 初始化2.0.0版本前端 | - |
v1.x 系列 (2023-05-29 ~ 2024-06-28) | 哈希 | 日期 | 类型 | 说明 | |------|------|------|------| | `335ef6c` | 2023-05-29 | feat | 初始提交,完成项目基本框架 | | `d2b3e6c` | 2023-05-30 | feat | 新增用户管理模块 | | `237c31d` | 2023-06-02 | feat | 新增岗位管理模块 | | `10c2297` | 2023-06-03 | feat | 新增部门列表 | | `fa3870f` | 2023-06-10 | feat | 完成菜单管理模块 | | `292dfdb` | 2023-06-12 | feat | 新增角色管理模块 | | `950d2c0` | 2023-06-11 | feat | 新增自定义异常全局检测token | | `d26fd55` | 2023-07-11 | feat | 后端新增校验接口权限依赖注入 | | `07975af` | 2023-07-12 | feat | 新增日志装饰器、日志管理模块 | | `cc86bcf` | 2023-07-15 | feat | 新增字典数据管理 | | `6faffea` | 2023-07-21 | feat | 新增个人资料管理模块(cropper.js) | | `0093740` | 2023-08-09 | feat | 新增通知公告管理模块(wangeditor) | | `2c54a67` | 2023-08-12 | feat | 新增在线用户监控模块 | | `cff4e49` | 2023-08-14 | feat | 新增服务监控和缓存监控模块 | | `1eb4beb` | 2023-08-22 | feat | 新增定时任务模块 | | `dee58f4` | 2023-08-31 | feat | 新增OAuth2身份验证,融合JWT | | `7c9ab70` | 2023-08-31 | feat | 新增系统参数设置模块 | | `c37d86e` | 2023-10-04 | feat | 新增数据权限功能(五种策略) | | `1205ec4` | 2023-10-26 | feat | 新增缓存列表模块 | | `2e21a96` | 2024-02-06 | feat | 多环境配置文件支持 | | `9dc84d7` | 2024-03-07 | feat | 账号密码登录新增IP黑名单校验 | | `3961309` | 2024-04-23 | feat | 新增数据库连接池配置 | | `704e6ea` | 2024-10-22 | feat | 新增PostgreSQL数据库支持 |
--- ## 快速开始 ### 环境要求 | 依赖 | 版本要求 | |------|---------| | Python | >= 3.9 | | MySQL | >= 5.7(或 PostgreSQL >= 12) | | Redis | >= 5.0 | | Node.js | 不需要(纯 Python 项目) | ### 安装步骤 ```bash # 1. 克隆项目 git clone https://gitee.com/insistence2022/dash-fastapi-admin.git cd dash-fastapi-admin # 2. 安装依赖 # MySQL 版本 pip3 install -r requirements.txt # PostgreSQL 版本 pip3 install -r requirements-pg.txt # 3. 创建数据库并导入初始数据 # MySQL: 创建数据库 dash-fastapi,执行 sql/dash-fastapi.sql # PostgreSQL: 创建数据库 dash-fastapi,执行 sql/dash-fastapi-pg.sql ``` ### 配置说明 **后端配置**(`dash-fastapi-backend/.env.dev`): | 配置项 | 说明 | 默认值 | |-------|------|-------| | APP_PORT | 后端服务端口 | 9099 | | DB_TYPE | 数据库类型 | mysql | | DB_HOST | 数据库地址 | 127.0.0.1 | | DB_PORT | 数据库端口 | 3306 | | DB_DATABASE | 数据库名称 | dash-fastapi | | REDIS_HOST | Redis 地址 | 127.0.0.1 | | REDIS_PORT | Redis 端口 | 6379 | | JWT_EXPIRE_MINUTES | Token 过期时间(分) | 1440 | **前端配置**(`dash-fastapi-frontend/.env.dev`): | 配置项 | 说明 | 默认值 | |-------|------|-------| | APP_PORT | 前端服务端口 | 8088 | | APP_BASE_URL | 后端API地址 | http://127.0.0.1:8000 | ### 启动命令 ```bash # 开发模式 # 启动后端(端口 9099) cd dash-fastapi-backend python3 app.py --env=dev # 启动前端(端口 8088) cd dash-fastapi-frontend python3 app.py --env=dev ``` ### 生产部署 推荐使用 Nginx 反向代理部署: ```bash # 启动后端 cd dash-fastapi-backend python3 app.py --env=prod # 启动前端(使用 Waitress WSGI 服务器) cd dash-fastapi-frontend python3 wsgi.py --env=prod ``` **Nginx 配置参考**: ```nginx server { location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8088/; } location /prod-api { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:9099/; rewrite ^/prod-api/(.*)$ /$1 break; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ``` ### 访问系统 ``` 浏览器访问:http://127.0.0.1:8088 默认账号:admin 默认密码:admin123 ``` --- ## 演示图
## 在线体验 - 账号:admin - 密码:admin123 - 演示地址:[dfadmin管理系统](https://dfadmin.insistence.tech) --- ## 交流与赞助 如果有对本项目及FastAPI感兴趣的朋友,欢迎加入知识星球一起交流学习。如果你觉得这个项目帮助到了你,你可以请作者喝杯咖啡表示鼓励。
zanzhu_wx zanzhu_zfb
zsxq dashzsxq
wxcode