diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 64cbf00..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -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` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 1d196f1..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -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` diff --git a/README.md b/README.md index f006d9e..a751b19 100644 --- a/README.md +++ b/README.md @@ -75,114 +75,159 @@ DjangoAdmin 数据中台解决方案是一套面向企业级应用场景的一 ## 📁 项目结构 ``` -├── src/ # 后端源码目录 -│ ├── main.py # 应用入口 -│ ├── api/ # API 路由层 -│ │ ├── __init__.py # 路由注册 -│ │ ├── deps.py # 全局依赖 -│ │ └── v1/ -│ │ ├── router.py # 路由集中注册 -│ │ └── endpoints/ # 各模块端点定义 -│ │ ├── auth.py # 登录/登出/验证码 -│ │ ├── user.py # 用户管理 -│ │ ├── role.py # 角色管理 -│ │ ├── menu.py # 菜单管理 -│ │ ├── dept.py # 部门管理 -│ │ ├── level.py # 职级管理 -│ │ ├── position.py # 岗位管理 -│ │ ├── dict.py # 字典管理 -│ │ ├── dict_item.py # 字典项管理 -│ │ ├── config.py # 配置管理 -│ │ ├── config_item.py # 配置项管理 -│ │ ├── notice.py # 通知公告 -│ │ ├── article.py # 文章管理 -│ │ ├── category.py # 分类管理 -│ │ ├── city.py # 城市管理 -│ │ ├── link.py # 友情链接 -│ │ ├── param.py # 参数管理 -│ │ ├── job.py # 定时任务 -│ │ ├── job_log.py # 任务日志 -│ │ ├── file_template.py # 文件模板 -│ │ ├── login_log.py # 登录日志 -│ │ ├── operation_log.py # 操作日志 -│ │ ├── upload.py # 文件上传 -│ │ └── generator.py # 代码生成器 -│ ├── core/ # 核心基础设施 -│ │ ├── config/ # 配置模块 -│ │ ├── app.py # 应用工厂 -│ │ ├── database.py # 数据库引擎/会话管理 -│ │ ├── redis_client.py # Redis 异步客户端 -│ │ ├── jwt.py # 令牌处理 -│ │ ├── password.py # 密码加密 -│ │ ├── response.py # 统一响应封装 -│ │ ├── exceptions.py # 全局异常处理 -│ │ ├── security.py # 安全工具 -│ │ ├── access_decorators.py # 权限装饰器 -│ │ ├── base_model.py # 基础模型 -│ │ ├── base_db.py # 数据库操作基类 -│ │ ├── base_repository.py # 仓储基类 -│ │ ├── base_service.py # 服务基类 -│ │ └── logger.py # 日志配置 -│ ├── modules/ # 业务模块(数据模型 + 仓储 + 服务) -│ │ ├── auth/ # 认证模块 -│ │ ├── system/ # 系统管理 -│ │ ├── dictionary/ # 字典模块 -│ │ ├── configuration/ # 配置模块 -│ │ ├── article/ # 文章模块 -│ │ ├── category/ # 分类模块 -│ │ ├── city/ # 城市模块 -│ │ ├── notice/ # 通知公告模块 -│ │ ├── link/ # 友情链接模块 -│ │ ├── param/ # 参数模块 -│ │ ├── job/ # 定时任务模块 -│ │ ├── job_log/ # 任务日志模块 -│ │ ├── file_template/ # 文件模板模块 -│ │ ├── login_log/ # 登录日志模块 -│ │ ├── operation_log/ # 操作日志模块 -│ │ ├── upload/ # 文件上传模块 -│ │ ├── generator/ # 代码生成器模块 -│ │ └── example/ # 示例模块 -│ ├── middleware/ # HTTP 中间件 -│ │ ├── cors.py # 跨域配置 -│ │ ├── rate_limit.py # 请求限流 -│ │ ├── db_session.py # 请求级数据库会话管理 -│ │ ├── operation_log.py # 操作日志自动记录 -│ │ └── logger.py # 请求日志 -│ ├── constants/ # 常量与枚举 -│ │ ├── constants.py # 业务常量 -│ │ ├── enums.py # 枚举定义 -│ │ └── pagination.py # 分页参数 -│ └── utils/ # 工具函数 -│ ├── request.py # 请求解析工具 -│ ├── captcha/ # 验证码生成 -│ ├── file/ # 文件处理 -│ ├── ip/ # IP 归属地查询 -│ └── perm_cache/ # 权限缓存 -├── scripts/ # 运维脚本 -│ ├── init_db.py # 数据库初始化 -│ ├── seed_dict.py # 字典数据初始化 -│ ├── seed.py # 通用数据填充 -│ ├── migrate_db.py # 跨库数据迁移工具 -│ └── demo_job_loop.py # 定时任务演示脚本 -├── tests/ # 测试目录 -│ ├── contract/ # 契约快照测试 -│ ├── unit/ # 单元测试 -│ └── integration/ # 集成测试 -├── migrations/ # 数据库迁移 -│ ├── alembic.ini # 迁移配置 -│ ├── env.py # 迁移环境 -│ └── versions/ # 迁移版本 -├── deploy/ # 部署配置 -│ ├── nginx.conf # Nginx 配置 -│ └── supervisor.conf # Supervisor 配置 -├── document/ # 项目文档 -├── docker-compose.yml # Docker 编排 -├── Dockerfile # 镜像构建 +├── app.py # 应用启动入口(python app.py) +├── generator.py # 代码生成器 CLI 入口 +├── config.json # 代码生成器配置 +├── pyproject.toml # Poetry 项目配置(依赖来源) +├── poetry.lock # 依赖锁定文件 +├── requirements.txt # Python 依赖清单(纯文本备选) +├── alembic.ini # Alembic 迁移配置 ├── Makefile # 常用命令快捷入口 -├── alembic.ini # 迁移配置 -├── requirements.txt # Python 依赖清单 -├── pytest.ini # 测试配置 -└── .env # 环境变量配置 +├── Dockerfile # 镜像构建 +├── docker-compose.yml # Docker 编排 +├── .env # 环境变量配置 +├── .env.example # 环境变量示例 +├── src/ # 后端源码目录 +│ ├── app.py # 应用工厂(create_app) +│ ├── bootstrap.py # 启动引导(参数解析、信号处理) +│ ├── api/ # API 路由层 +│ │ └── v1/ +│ │ ├── router.py # 路由集中注册(build_routes) +│ │ ├── auth.py # 登录/登出/验证码/令牌刷新 +│ │ ├── user.py # 用户管理 +│ │ ├── user_role.py # 用户角色分配 +│ │ ├── role.py # 角色管理 +│ │ ├── role_menu.py # 角色菜单分配 +│ │ ├── menu.py # 菜单管理 +│ │ ├── dept.py # 部门管理 +│ │ ├── level.py # 职级管理 +│ │ ├── position.py # 岗位管理 +│ │ ├── dict.py # 字典管理 +│ │ ├── dict_item.py # 字典项管理 +│ │ ├── config.py # 配置管理 +│ │ ├── config_item.py # 配置项管理 +│ │ ├── notice.py # 通知公告 +│ │ ├── article.py # 文章管理 +│ │ ├── category.py # 分类管理 +│ │ ├── city.py # 城市管理 +│ │ ├── link.py # 友情链接 +│ │ ├── param.py # 参数管理 +│ │ ├── job.py # 定时任务 +│ │ ├── job_log.py # 任务日志 +│ │ ├── file_template.py # 文件模板 +│ │ ├── login_log.py # 登录日志 +│ │ ├── operation_log.py # 操作日志 +│ │ ├── upload.py # 文件上传 +│ │ ├── index.py # 首页菜单/用户信息 +│ │ └── generator.py # 代码生成器 API +│ ├── core/ # 核心基础设施 +│ │ ├── base_handler.py # 请求处理器基类(认证、异常、会话回收) +│ │ ├── base_model.py # 数据模型基类(审计字段、to_dict) +│ │ ├── base_repository.py # 仓储基类(CRUD、分页、软删除) +│ │ ├── base_schema.py # Pydantic Schema 基类 +│ │ ├── base_service.py # 服务基类(模板方法 CRUD) +│ │ ├── context.py # 请求级上下文(current_user_id 等 contextvars) +│ │ ├── database.py # 数据库引擎/会话管理(读写分离) +│ │ ├── redis.py # Redis 客户端封装 +│ │ ├── jwt.py # JWT 签发/解析/黑名单/刷新 +│ │ ├── password.py # 双盐 bcrypt 密码加密 +│ │ ├── response.py # 统一响应封装(R.ok/R.failed) +│ │ ├── exceptions.py # 自定义异常体系 +│ │ ├── logger.py # 结构化日志配置 +│ │ ├── metrics.py # 指标采集 +│ │ └── tracer.py # 链路追踪 +│ ├── config/ # 配置模块(Pydantic Settings) +│ │ ├── app.py # 应用配置(TORNADO_DEMO 等) +│ │ ├── 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/ # 字典模块 +│ │ │ ├── dict/ # 字典管理 +│ │ │ └── dict_item/ # 字典项管理 +│ │ ├── configuration/ # 配置模块 +│ │ │ ├── config/ # 配置管理 +│ │ │ └── config_item/ # 配置项管理 +│ │ ├── notice/ # 通知公告 +│ │ ├── article/ # 文章管理 +│ │ ├── category/ # 分类管理 +│ │ ├── city/ # 城市管理(树形结构) +│ │ ├── link/ # 友情链接 +│ │ ├── param/ # 参数管理 +│ │ ├── file_template/ # 文件模板 +│ │ ├── job/ # 定时任务(APScheduler) +│ │ ├── job_log/ # 任务执行日志 +│ │ ├── login_log/ # 登录日志(IP 归属地解析) +│ │ ├── operation_log/ # 操作日志(审计追踪) +│ │ ├── upload/ # 文件上传 +│ │ ├── generator/ # 代码生成器 +│ │ └── example/ # 示例模块(开发参考) +│ └── extensions/ # 扩展(可选组件) +│ ├── sqlalchemy.py # SQLAlchemy 单例导出 +│ ├── redis.py # Redis 单例导出 +│ ├── swagger.py # Swagger(占位) +│ └── sentry.py # Sentry(占位) +├── scripts/ # 运维脚本 +│ ├── seed_dict.py # 业务字典初始化(幂等) +│ ├── seed.py # 通用数据填充 +│ ├── init_db.py # 数据库初始化 +│ ├── migrate_db.py # 跨库数据迁移工具(MySQL→PG/MSSQL/SQLite/Oracle) +│ ├── migrate.py # 迁移辅助 +│ ├── deploy.py # 部署脚本 +│ ├── health_check.py # 健康检查 +│ └── deploy.py # 部署脚本 +├── tests/ # 测试目录 +│ ├── unit/ # 单元测试 +│ │ ├── core/ # 核心模块测试(jwt、crypto、response、base_service、repository) +│ │ └── modules/ # 业务模块测试(schema、scheduler) +│ ├── integration/ # 集成测试(需 MySQL + Redis) +│ │ ├── test_api.py # API 接口测试 +│ │ ├── test_database.py # 数据库连接测试 +│ │ └── test_redis.py # Redis 连接测试 +│ └── fixtures/ # 测试夹具 +│ └── factories.py # 测试数据工厂 +├── alembic/ # Alembic 数据库迁移 +│ └── versions/ # 迁移版本文件 +└── document/ # 项目文档 + ├── mysql/ # MySQL 初始化 SQL + ├── postgresql/ # PostgreSQL 初始化 SQL + ├── sqlserver/ # SQL Server 初始化 SQL + ├── sqlite/ # SQLite 初始化 SQL + └── sql/ # 通用 SQL 脚本 ``` ## 👷 软件信息 diff --git a/docker-compose.override.yml b/docker-compose.override.yml deleted file mode 100644 index f1e9a83..0000000 --- a/docker-compose.override.yml +++ /dev/null @@ -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: diff --git a/docker-compose.yml b/docker-compose.yml index 6722bbc..78336c8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,28 +1,29 @@ -version: '3.8' +# +====================================================================== +# | 模块: Docker Compose 配置 +# | 说明: 应用服务容器编排 +# +====================================================================== + +version: '3.7' -# 应用服务 services: # 后端服务 tornado_elevue: - image: tornado_elevue:latest - container_name: tornado_elevue - build: + image: tornado_elevue # 镜像名称 + container_name: tornado_elevue # 容器名称 + build: # 构建镜像 context: ./ dockerfile: Dockerfile - restart: always + restart: always # 始终自动重启 + network_mode: host # host 模式;ports 映射会被忽略,改 bridge 时需将 DB_HOST/REDIS_HOST 指向宿主机并启用端口映射 ports: - - "8041:8041" - environment: - - TORNADO_PORT=8041 - - TORNADO_ENV=production - env_file: - - .env + - 8041:8041 # 端口映射(仅 bridge 模式生效) volumes: - - ./uploads:/data/apps/uploads - - ./logs:/data/apps/logs - command: python app.py + - ./uploads:/data/apps/uploads # 上传目录持久化 + env_file: + - .env # 从 .env 注入环境变量 + command: python app.py # 容器启动命令 logging: driver: "json-file" options: - max-size: "500m" - max-file: "10" + max-size: "500m" # 单个日志文件最大 500MB + max-file: "10" # 最多保留 10 个日志文件 \ No newline at end of file diff --git a/项目重构结构.txt b/项目重构结构.txt deleted file mode 100644 index abaa3ad..0000000 --- a/项目重构结构.txt +++ /dev/null @@ -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) \ No newline at end of file