签入版本
CI / lint (push) Canceled after 0s
CI / test (push) Canceled after 0s

This commit is contained in:
2026-09-16 12:03:43 +08:00
parent 665278e7cc
commit b8ed9b389b
6 changed files with 170 additions and 535 deletions
-25
View File
@@ -1,25 +0,0 @@
# 版本变更日志
本项目遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/) 规范。
## [v3.0.0] - 2026-08-14
### 架构重构
- 采用 `src/` 布局,引入 Poetry 依赖管理与项目打包
- 引入 DDD 分层:`domain/`(实体、值对象、领域事件、仓储接口)
- 配置迁移至 Pydantic Settings(`.env` 驱动)
- 表单校验由 WTForms 迁移至 Pydantic schemas
- 密码加密由 MD5 升级为 bcrypt(兼容旧 MD5 密码自动升级)
- 数据访问引入 Repository 模式与读写分离支持
- API 统一挂载 `/api/v1` 前缀
- 新增核心基础设施:异常体系、事件总线、缓存管理器、结构化日志、统一响应
### 增强
- 新增健康检查端点 `/api/v1/health`
- 新增优雅关闭、链路追踪 ID、操作日志、限流中间件
- 新增 pytest 测试骨架与 CI/CD 流水线
- 新增部署配置(nginx/supervisor/prometheus/grafana/kubernetes)
## [v2.7.0] - 历史版本
- 见 `document/版本更新说明.txt`
-38
View File
@@ -1,38 +0,0 @@
# 贡献指南
感谢您对 DjangoAdmin Tornado+EleVue 项目的关注!
## 开发环境
```bash
# 安装依赖
poetry install
# 启动服务(默认端口 8041)
poetry run python app.py
```
## 代码规范
- 运行 `poetry run flake8 src tests` 检查代码规范
- 运行 `poetry run mypy src` 做类型检查
- 运行 `poetry run ruff check --fix src tests` 自动格式化
- 提交前建议安装 pre-commit 钩子:`poetry run pre-commit install`
## 测试
```bash
# 单元测试
poetry run pytest tests/unit
# 全部测试
poetry run pytest
```
集成测试需要本地 MySQL 与 Redis 服务,未配置时自动跳过。
## 提交规范
- 提交信息使用中文,遵循语义化描述(feat/fix/refactor/docs/test/chore)
- 涉及新功能请同时补充测试
- 涉及 API 变更请同步更新 `document/api/swagger.yaml`
+121 -76
View File
@@ -75,17 +75,29 @@ DjangoAdmin 数据中台解决方案是一套面向企业级应用场景的一
## 📁 项目结构 ## 📁 项目结构
``` ```
├── app.py # 应用启动入口(python app.py)
├── generator.py # 代码生成器 CLI 入口
├── config.json # 代码生成器配置
├── pyproject.toml # Poetry 项目配置(依赖来源)
├── poetry.lock # 依赖锁定文件
├── requirements.txt # Python 依赖清单(纯文本备选)
├── alembic.ini # Alembic 迁移配置
├── Makefile # 常用命令快捷入口
├── Dockerfile # 镜像构建
├── docker-compose.yml # Docker 编排
├── .env # 环境变量配置
├── .env.example # 环境变量示例
├── src/ # 后端源码目录 ├── src/ # 后端源码目录
│ ├── main.py # 应用入口 │ ├── app.py # 应用工厂(create_app)
│ ├── bootstrap.py # 启动引导(参数解析、信号处理)
│ ├── api/ # API 路由层 │ ├── api/ # API 路由层
│ │ ├── __init__.py # 路由注册
│ │ ├── deps.py # 全局依赖
│ │ └── v1/ │ │ └── v1/
│ │ ├── router.py # 路由集中注册 │ │ ├── router.py # 路由集中注册(build_routes)
│ │ └── endpoints/ # 各模块端点定义 │ │ ├── auth.py # 登录/登出/验证码/令牌刷新
│ │ ├── auth.py # 登录/登出/验证码
│ │ ├── user.py # 用户管理 │ │ ├── user.py # 用户管理
│ │ ├── user_role.py # 用户角色分配
│ │ ├── role.py # 角色管理 │ │ ├── role.py # 角色管理
│ │ ├── role_menu.py # 角色菜单分配
│ │ ├── menu.py # 菜单管理 │ │ ├── menu.py # 菜单管理
│ │ ├── dept.py # 部门管理 │ │ ├── dept.py # 部门管理
│ │ ├── level.py # 职级管理 │ │ ├── level.py # 职级管理
@@ -106,83 +118,116 @@ DjangoAdmin 数据中台解决方案是一套面向企业级应用场景的一
│ │ ├── login_log.py # 登录日志 │ │ ├── login_log.py # 登录日志
│ │ ├── operation_log.py # 操作日志 │ │ ├── operation_log.py # 操作日志
│ │ ├── upload.py # 文件上传 │ │ ├── upload.py # 文件上传
│ │ └── generator.py # 代码生成器 │ │ ├── index.py # 首页菜单/用户信息
│ │ └── generator.py # 代码生成器 API
│ ├── core/ # 核心基础设施 │ ├── core/ # 核心基础设施
│ │ ├── config/ # 配置模块 │ │ ├── base_handler.py # 请求处理器基类(认证、异常、会话回收)
│ │ ├── app.py # 应用工厂 │ │ ├── base_model.py # 数据模型基类(审计字段、to_dict)
│ │ ├── database.py # 数据库引擎/会话管理 │ │ ├── base_repository.py # 仓储基类(CRUD、分页、软删除)
│ │ ├── redis_client.py # Redis 异步客户端 │ │ ├── base_schema.py # Pydantic Schema 基类
│ │ ├── jwt.py # 令牌处理 │ │ ├── base_service.py # 服务基类(模板方法 CRUD)
│ │ ├── password.py # 密码加密 │ │ ├── context.py # 请求级上下文(current_user_id 等 contextvars)
│ │ ├── response.py # 统一响应封装 │ │ ├── database.py # 数据库引擎/会话管理(读写分离)
│ │ ├── exceptions.py # 全局异常处理 │ │ ├── redis.py # Redis 客户端封装
│ │ ├── security.py # 安全工具 │ │ ├── jwt.py # JWT 签发/解析/黑名单/刷新
│ │ ├── access_decorators.py # 权限装饰器 │ │ ├── password.py # 双盐 bcrypt 密码加密
│ │ ├── base_model.py # 基础模型 │ │ ├── response.py # 统一响应封装(R.ok/R.failed)
│ │ ├── base_db.py # 数据库操作基类 │ │ ├── exceptions.py # 自定义异常体系
│ │ ├── base_repository.py # 仓储基类 │ │ ├── logger.py # 结构化日志配置
│ │ ├── base_service.py # 服务基类 │ │ ├── metrics.py # 指标采集
│ │ └── logger.py # 日志配置 │ │ └── tracer.py # 链路追踪
│ ├── modules/ # 业务模块(数据模型 + 仓储 + 服务) │ ├── config/ # 配置模块(Pydantic Settings)
│ │ ├── auth/ # 认证模块 │ │ ├── app.py # 应用配置(TORNADO_DEMO 等)
│ │ ├── system/ # 系统管理 │ │ ├── database.py # 数据库配置
│ │ ├── redis.py # Redis 配置
│ │ ├── auth.py # 认证配置(JWT)
│ │ ├── captcha.py # 验证码配置
│ │ ├── email.py # 邮件配置
│ │ └── logging.py # 日志配置
│ ├── constants/ # 常量定义
│ │ └── __init__.py # 通用常量与提示文案
│ ├── common/ # 公共组件
│ │ ├── middleware/ # 中间件/装饰器
│ │ │ ├── authentication.py # JWT 认证(login_required)
│ │ │ ├── cors.py # 跨域处理
│ │ │ ├── access_decorators.py # 权限校验 + 演示模式拦截
│ │ │ ├── operation_log.py # 操作日志装饰器
│ │ │ ├── login_log.py # 登录日志装饰器
│ │ │ ├── trace_id.py # 链路追踪 ID 注入
│ │ │ └── metrics.py # 请求指标中间件
│ │ ├── permission.py # 跨模块权限解析(Redis 缓存)
│ │ └── utils/ # 工具函数
│ │ ├── crypto.py # 密码加密门面
│ │ ├── captcha.py # 验证码生成与验证
│ │ ├── file.py # 文件操作(mkdir、魔术字节校验)
│ │ ├── rich_text.py # 富文本处理(XSS 清洗、路径穿越防护)
│ │ ├── ip.py # 客户端 IP 获取(代理透传)
│ │ ├── ip2region.py # IP 归属地离线查询
│ │ ├── dict_util.py # 字典 Redis 缓存读取
│ │ ├── helpers.py # 通用辅助(UA 解析、参数脱敏)
│ │ └── validators.py # 通用校验器
│ ├── modules/ # 业务模块(每个模块 5 文件)
│ │ ├── auth/ # 认证模块(登录/登出/验证码/令牌刷新)
│ │ ├── user/ # 用户管理
│ │ ├── user_role/ # 用户角色关联
│ │ ├── role/ # 角色管理
│ │ ├── role_menu/ # 角色菜单关联
│ │ ├── menu/ # 菜单管理(动态路由 + 权限节点)
│ │ ├── dept/ # 部门管理
│ │ ├── level/ # 职级管理
│ │ ├── position/ # 岗位管理
│ │ ├── dictionary/ # 字典模块 │ │ ├── dictionary/ # 字典模块
│ │ │ ├── dict/ # 字典管理
│ │ │ └── dict_item/ # 字典项管理
│ │ ├── configuration/ # 配置模块 │ │ ├── configuration/ # 配置模块
│ │ ├── article/ # 文章模块 │ │ │ ├── config/ # 配置管理
│ │ ├── category/ # 分类模块 │ │ │ └── config_item/ # 配置项管理
│ │ ├── city/ # 城市模块 │ │ ├── notice/ # 通知公告
│ │ ├── notice/ # 通知公告模块 │ │ ├── article/ # 文章管理
│ │ ├── link/ # 友情链接模块 │ │ ├── category/ # 分类管理
│ │ ├── param/ # 参数模块 │ │ ├── city/ # 城市管理(树形结构)
│ │ ├── job/ # 定时任务模块 │ │ ├── link/ # 友情链接
│ │ ├── job_log/ # 任务日志模块 │ │ ├── param/ # 参数管理
│ │ ├── file_template/ # 文件模板模块 │ │ ├── file_template/ # 文件模板
│ │ ├── login_log/ # 登录日志模块 │ │ ├── job/ # 定时任务(APScheduler)
│ │ ├── operation_log/ # 操作日志模块 │ │ ├── job_log/ # 任务执行日志
│ │ ├── upload/ # 文件上传模块 │ │ ├── login_log/ # 登录日志(IP 归属地解析)
│ │ ├── generator/ # 代码生成器模块 │ │ ├── operation_log/ # 操作日志(审计追踪)
│ │ └── example/ # 示例模块 │ │ ├── upload/ # 文件上传
│ ├── middleware/ # HTTP 中间件 │ │ ├── generator/ # 代码生成器
│ │ ├── cors.py # 跨域配置 │ │ └── example/ # 示例模块(开发参考)
│ │ ├── rate_limit.py # 请求限流 │ └── extensions/ # 扩展(可选组件)
│ │ ├── db_session.py # 请求级数据库会话管理 │ ├── sqlalchemy.py # SQLAlchemy 单例导出
│ │ ├── operation_log.py # 操作日志自动记录 │ ├── redis.py # Redis 单例导出
│ │ └── logger.py # 请求日志 │ ├── swagger.py # Swagger(占位)
│ ├── constants/ # 常量与枚举 │ └── sentry.py # Sentry(占位)
│ │ ├── constants.py # 业务常量
│ │ ├── enums.py # 枚举定义
│ │ └── pagination.py # 分页参数
│ └── utils/ # 工具函数
│ ├── request.py # 请求解析工具
│ ├── captcha/ # 验证码生成
│ ├── file/ # 文件处理
│ ├── ip/ # IP 归属地查询
│ └── perm_cache/ # 权限缓存
├── scripts/ # 运维脚本 ├── scripts/ # 运维脚本
│ ├── init_db.py # 数据库初始化 │ ├── seed_dict.py # 业务字典初始化(幂等)
│ ├── seed_dict.py # 字典数据初始化
│ ├── seed.py # 通用数据填充 │ ├── seed.py # 通用数据填充
│ ├── migrate_db.py # 跨库数据迁移工具 │ ├── init_db.py # 数据库初始化
│ └── demo_job_loop.py # 定时任务演示脚本 │ ├── migrate_db.py # 跨库数据迁移工具(MySQL→PG/MSSQL/SQLite/Oracle)
│ ├── migrate.py # 迁移辅助
│ ├── deploy.py # 部署脚本
│ ├── health_check.py # 健康检查
│ └── deploy.py # 部署脚本
├── tests/ # 测试目录 ├── tests/ # 测试目录
│ ├── contract/ # 契约快照测试
│ ├── unit/ # 单元测试 │ ├── unit/ # 单元测试
│ └── integration/ # 集成测试 │ │ ├── core/ # 核心模块测试(jwt、crypto、response、base_service、repository)
├── migrations/ # 数据库迁移 │ │ └── modules/ # 业务模块测试(schema、scheduler)
│ ├── alembic.ini # 迁移配置 │ ├── integration/ # 集成测试(需 MySQL + Redis)
│ ├── env.py # 迁移环境 │ │ ├── test_api.py # API 接口测试
│ └── versions/ # 迁移版本 │ │ ├── test_database.py # 数据库连接测试
├── deploy/ # 部署配置 │ │ └── test_redis.py # Redis 连接测试
│ ├── nginx.conf # Nginx 配置 │ └── fixtures/ # 测试夹具
│ └── supervisor.conf # Supervisor 配置 │ └── factories.py # 测试数据工厂
├── document/ # 项目文档 ├── alembic/ # Alembic 数据库迁移
├── docker-compose.yml # Docker 编排 │ └── versions/ # 迁移版本文件
├── Dockerfile # 镜像构建 └── document/ # 项目文档
├── Makefile # 常用命令快捷入口 ├── mysql/ # MySQL 初始化 SQL
├── alembic.ini # 迁移配置 ├── postgresql/ # PostgreSQL 初始化 SQL
├── requirements.txt # Python 依赖清单 ├── sqlserver/ # SQL Server 初始化 SQL
├── pytest.ini # 测试配置 ├── sqlite/ # SQLite 初始化 SQL
└── .env # 环境变量配置 └── sql/ # 通用 SQL 脚本
``` ```
## 👷 软件信息 ## 👷 软件信息
-45
View File
@@ -1,45 +0,0 @@
# 开发环境覆盖配置(docker compose up 时自动加载)
# 提供本地 MySQL 与 Redis 服务,并将源码热挂载
version: '3.8'
services:
# MySQL 数据库
mysql:
image: mysql:8.0
container_name: tornado_elevue_mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: djangoadmin.tornado.elevue
TZ: Asia/Shanghai
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./document/sql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
# Redis 缓存
redis:
image: redis:7
container_name: tornado_elevue_redis
restart: always
ports:
- "6379:6379"
# 后端服务(开发模式:源码热挂载 + 自动重载)
tornado_elevue:
build:
context: ./
dockerfile: Dockerfile
volumes:
- ./src:/data/apps/src
- ./uploads:/data/apps/uploads
- ./logs:/data/apps/logs
environment:
- TORNADO_DEBUG=True
depends_on:
- mysql
- redis
volumes:
mysql_data:
+18 -17
View File
@@ -1,28 +1,29 @@
version: '3.8' # +======================================================================
# | 模块: Docker Compose 配置
# | 说明: 应用服务容器编排
# +======================================================================
version: '3.7'
# 应用服务
services: services:
# 后端服务 # 后端服务
tornado_elevue: tornado_elevue:
image: tornado_elevue:latest image: tornado_elevue # 镜像名称
container_name: tornado_elevue container_name: tornado_elevue # 容器名称
build: build: # 构建镜像
context: ./ context: ./
dockerfile: Dockerfile dockerfile: Dockerfile
restart: always restart: always # 始终自动重启
network_mode: host # host 模式;ports 映射会被忽略,改 bridge 时需将 DB_HOST/REDIS_HOST 指向宿主机并启用端口映射
ports: ports:
- "8041:8041" - 8041:8041 # 端口映射(仅 bridge 模式生效)
environment:
- TORNADO_PORT=8041
- TORNADO_ENV=production
env_file:
- .env
volumes: volumes:
- ./uploads:/data/apps/uploads - ./uploads:/data/apps/uploads # 上传目录持久化
- ./logs:/data/apps/logs env_file:
command: python app.py - .env # 从 .env 注入环境变量
command: python app.py # 容器启动命令
logging: logging:
driver: "json-file" driver: "json-file"
options: options:
max-size: "500m" max-size: "500m" # 单个日志文件最大 500MB
max-file: "10" max-file: "10" # 最多保留 10 个日志文件
-303
View File
@@ -1,303 +0,0 @@
DjangoAdmin_Tornado_EleVue/
├── app.py # ★ 应用入口(极简版)
├── pyproject.toml # ★ 项目配置(Poetry迁移)
├── poetry.lock # ★ 依赖锁定文件
├── .env # 环境配置
├── .env.example # 环境变量示例
├── .gitignore
├── .flake8 # 代码规范
├── .pre-commit-config.yaml # Git钩子
├── .mypy.ini # ★ 新增:类型检查配置
├── Makefile # ★ 常用命令(增强版)
├── Dockerfile # ★ 多阶段构建(优化版)
├── docker-compose.yml # ★ 端口8041(增强版)
├── docker-compose.override.yml # ★ 新增:开发覆盖配置
├── alembic.ini # 数据库迁移
├── LICENSE
├── README.md
├── README.en.md
├── CHANGELOG.md # ★ 新增:版本变更日志
├── CONTRIBUTING.md # ★ 新增:贡献指南
│
├── src/ # ★★★ 主要源代码
│ ├── __init__.py
│ ├── app.py # ★ 应用工厂函数(增强版)
│ ├── bootstrap.py # ★ 新增:启动引导程序
│ │
│ ├── core/ # ★ 核心基础设施层(增强版)
│ │ ├── __init__.py
│ │ ├── base_handler.py # ★ 增强:添加健康检查、优雅关闭
│ │ ├── base_repository.py # ★ 增强:添加软删除、审计
│ │ ├── base_service.py # ★ 增强:添加事件发布
│ │ ├── base_module.py # ★ 新增:模块CRUD基类(统一通用逻辑)
│ │ ├── response.py # ★ 统一响应
│ │ ├── exceptions.py # ★ 自定义异常(细化分类)
│ │ ├── jwt.py # ★ JWT管理(增强)
│ │ ├── database.py # ★ 连接池(添加读写分离)
│ │ ├── redis.py # ★ Redis(添加缓存装饰器)
│ │ ├── logger.py # ★ 结构化日志
│ │ ├── session.py # ★ Session管理
│ │ ├── event_bus.py # ★ 新增:事件总线
│ │ ├── cache.py # ★ 新增:缓存管理器
│ │ ├── metrics.py # ★ 新增:指标收集
│ │ └── tracer.py # ★ 新增:链路追踪
│ │
│ ├── config/ # ★ 配置层(增强版)
│ │ ├── __init__.py
│ │ ├── settings.py # ★ Pydantic配置(细化分类)
│ │ ├── constants.py # ★ 常量定义
│ │ ├── messages.py # ★ 消息定义
│ │ └── logging.py # ★ 新增:日志配置独立
│ │
│ ├── domain/ # ★★★ 新增:领域层(DDD)
│ │ ├── __init__.py
│ │ ├── entities/ # ★ 实体对象
│ │ │ ├── __init__.py
│ │ │ ├── user.py
│ │ │ ├── role.py
│ │ │ └── menu.py
│ │ ├── value_objects/ # ★ 值对象
│ │ │ ├── __init__.py
│ │ │ ├── email.py
│ │ │ ├── phone.py
│ │ │ └── password.py # ★ 密码值对象(bcrypt)
│ │ ├── events/ # ★ 领域事件
│ │ │ ├── __init__.py
│ │ │ ├── user_events.py
│ │ │ └── auth_events.py
│ │ └── repositories/ # ★ 仓储接口
│ │ ├── __init__.py
│ │ ├── user_repository.py
│ │ └── role_repository.py
│ │
│ ├── modules/ # ★★★ 业务模块(重构版)
│ │ ├── __init__.py
│ │ │
│ │ ├── auth/ # 认证授权模块
│ │ │ ├── __init__.py
│ │ │ ├── handlers.py # ★ 请求处理器(继承BaseHandler)
│ │ │ ├── service.py # ★ 业务逻辑(继承BaseService)
│ │ │ ├── repository.py # ★ 数据访问(继承BaseRepository)
│ │ │ ├── models.py # ★ 数据模型
│ │ │ ├── schemas.py # ★ Pydantic模型
│ │ │ └── constants.py
│ │ │
│ │ ├── user/ # 用户管理模块
│ │ │ ├── __init__.py
│ │ │ ├── handlers.py # ★ 使用BaseModuleCRUD
│ │ │ ├── service.py # ★ 使用领域实体
│ │ │ ├── repository.py
│ │ │ ├── models.py
│ │ │ └── schemas.py
│ │ │
│ │ ├── role/ # 角色管理模块
│ │ │ ├── __init__.py
│ │ │ ├── handlers.py # ★ 使用BaseModuleCRUD
│ │ │ ├── service.py
│ │ │ ├── repository.py
│ │ │ ├── models.py
│ │ │ └── schemas.py
│ │ │
│ │ ├── menu/ # 菜单管理模块
│ │ │ ├── __init__.py
│ │ │ ├── handlers.py # ★ 使用BaseModuleCRUD
│ │ │ ├── service.py
│ │ │ ├── repository.py
│ │ │ ├── models.py
│ │ │ └── schemas.py
│ │ │
│ │ ├── permission/ # ★ 新增:权限管理模块
│ │ │ ├── __init__.py
│ │ │ ├── handlers.py # ★ 使用BaseModuleCRUD
│ │ │ ├── service.py
│ │ │ ├── repository.py
│ │ │ ├── models.py
│ │ │ └── schemas.py
│ │ │
│ │ ├── dept/ # 部门管理模块
│ │ │ ├── __init__.py
│ │ │ ├── handlers.py # ★ 使用BaseModuleCRUD
│ │ │ ├── service.py
│ │ │ ├── repository.py
│ │ │ ├── models.py
│ │ │ └── schemas.py
│ │ │
│ │ ├── dict/ # 字典管理模块
│ │ │ ├── __init__.py
│ │ │ ├── handlers.py # ★ 使用BaseModuleCRUD
│ │ │ ├── service.py
│ │ │ ├── repository.py
│ │ │ ├── models.py
│ │ │ └── schemas.py
│ │ │
│ │ └── ... # 其他模块(依此类推)
│ │
│ ├── common/ # ★ 公共模块
│ │ ├── __init__.py
│ │ │
│ │ ├── middleware/ # 中间件
│ │ │ ├── __init__.py
│ │ │ ├── authentication.py # ★ 认证(增强)
│ │ │ ├── permission.py # ★ 权限(增强)
│ │ │ ├── cors.py # CORS
│ │ │ ├── rate_limit.py # 限流
│ │ │ ├── operation_log.py # 操作日志
│ │ │ ├── trace_id.py # ★ 新增:链路追踪ID
│ │ │ └── metrics.py # ★ 新增:性能监控
│ │ │
│ │ ├── utils/ # 工具函数
│ │ │ ├── __init__.py
│ │ │ ├── captcha.py # 验证码
│ │ │ ├── crypto.py # ★ 加密工具(bcrypt)
│ │ │ ├── file.py # 文件操作
│ │ │ ├── image.py # 图片处理
│ │ │ ├── validators.py # 数据验证
│ │ │ ├── helpers.py # 辅助函数
│ │ │ └── fonts/
│ │ │ └── Vera.ttf
│ │ │
│ │ └── decorators/ # ★ 新增:装饰器
│ │ ├── __init__.py
│ │ ├── cache.py # 缓存装饰器
│ │ ├── retry.py # 重试装饰器
│ │ ├── timer.py # 性能计时
│ │ └── transaction.py # 事务装饰器
│ │
│ ├── extensions/ # ★ 扩展
│ │ ├── __init__.py
│ │ ├── sqlalchemy.py # ★ SQLAlchemy(增强审计)
│ │ ├── redis.py # ★ Redis(增强)
│ │ ├── session.py # Session
│ │ ├── swagger.py # ★ 新增:Swagger文档
│ │ └── sentry.py # ★ 新增:错误监控
│ │
│ └── api/ # ★ 新增:API版本管理
│ ├── __init__.py
│ ├── v1/ # API v1版本
│ │ ├── __init__.py
│ │ ├── auth.py
│ │ ├── users.py
│ │ └── ...
│ └── v2/ # API v2版本(预留)
│ └── __init__.py
│
├── tests/ # ★★★ 测试(大幅增强)
│ ├── __init__.py
│ ├── conftest.py # ★ pytest配置(增强)
│ ├── unit/ # 单元测试
│ │ ├── __init__.py
│ │ ├── core/
│ │ │ ├── test_cache.py
│ │ │ ├── test_jwt.py
│ │ │ ├── test_base_module.py # ★ 新增:测试BaseModuleCRUD
│ │ │ └── ...
│ │ ├── domain/ # ★ 领域层测试
│ │ │ ├── test_user_entity.py
│ │ │ └── test_password_value.py
│ │ └── modules/
│ │ ├── test_auth.py
│ │ ├── test_user.py
│ │ └── ...
│ ├── integration/ # 集成测试
│ │ ├── __init__.py
│ │ ├── test_api.py
│ │ ├── test_database.py
│ │ └── test_redis.py
│ ├── e2e/ # ★ 新增:端到端测试
│ │ ├── __init__.py
│ │ ├── test_user_flow.py
│ │ └── test_auth_flow.py
│ ├── performance/ # ★ 新增:性能测试
│ │ ├── __init__.py
│ │ ├── test_load.py
│ │ └── test_stress.py
│ ├── fixtures/ # 测试数据
│ │ ├── __init__.py
│ │ ├── users.json
│ │ ├── data.sql
│ │ └── factories.py # ★ 新增:工厂模式
│ └── reports/ # ★ 新增:测试报告
│ └── .keep
│
├── scripts/ # ★★★ 运维脚本(增强版)
│ ├── __init__.py
│ ├── init_db.py # 数据库初始化
│ ├── seed.py # 测试数据填充
│ ├── migrate.py # 数据库迁移
│ ├── deploy.py # 部署脚本
│ ├── health_check.py # ★ 新增:健康检查脚本
│ ├── backup.py # ★ 新增:数据库备份
│ └── monitor.py # ★ 新增:监控脚本
│
├── alembic/ # 数据库迁移
│ ├── env.py # ★ 自动检测模型(增强)
│ ├── script.py.mako
│ └── versions/
│ └── .keep
│
├── logs/ # 日志目录
│ ├── .keep
│ ├── app.log
│ ├── error.log
│ └── access.log
│
├── uploads/ # 上传文件
│ ├── demo/
│ ├── images/
│ │ ├── user/
│ │ ├── article/
│ │ └── ...
│ ├── temp/
│ └── level.xlsx
│
├── static/ # 静态文件
├── templates/ # 模板文件
│ └── errors/ # ★ 新增:错误页面
│ ├── 404.html
│ └── 500.html
│
├── document/ # 文档
│ ├── sql/ # ★ 数据库脚本
│ │ ├── init.sql
│ │ └── data.sql
│ ├── adr/ # ★ 新增:架构决策记录
│ │ ├── 001-use-poetry.md
│ │ ├── 002-event-driven.md
│ │ └── ...
│ ├── api/ # ★ 新增:API文档
│ │ └── swagger.yaml
│ ├── djangoadmin.tornado.elevue.sql
│ ├── 开发笔记.txt
│ └── 版本更新说明.txt
│
├── deploy/ # ★★★ 部署配置(增强版)
│ ├── nginx/
│ │ ├── nginx.conf
│ │ └── ssl/ # ★ 新增:SSL证书目录
│ │ ├── cert.pem
│ │ └── key.pem
│ ├── supervisor/
│ │ └── supervisor.conf
│ ├── prometheus/ # ★ 新增:监控配置
│ │ └── prometheus.yml
│ ├── grafana/ # ★ 新增:可视化配置
│ │ └── dashboards/
│ │ └── app.json
│ ├── elk/ # ★ 新增:日志收集
│ │ ├── elasticsearch.yml
│ │ └── logstash.conf
│ └── kubernetes/ # ★ 新增:K8s部署(可选)
│ ├── deployment.yaml
│ ├── service.yaml
│ └── ingress.yaml
│
└── .github/ # ★ 新增:GitHub CI/CD
├── workflows/
│ ├── ci.yml # ★ CI流水线
│ ├── cd.yml # ★ CD流水线
│ └── security-scan.yml # ★ 安全扫描
└── ISSUE_TEMPLATE/
├── bug_report.md
└── feature_request.md
重置为纯净结构,可 python scripts/init_db.py(按模型建空表)再 python scripts/seed.py(创建 admin)