【结构】 - src/core/:database/response/jwt/password/security/redis_client/mail/scheduler - src/common/:base_model/base_db/forms(base_form+fields)/constants/utils - src/models_registry.py:模型聚合器(Flask-Migrate 全量表识别) 【绞杀者 shim】extensions/、utils/、application/constants|forms|models 打兼容转发 【兼容修复】应用工厂抽取至 application/factory.py(P2 前置,P1 已完成) 【基线修复】application/models(25) + middleware(7) 原被嵌套 .gitignore(*) 误排除出版本库,已补入(base_model/base_db 现为 shim,原版在 src/common/) 【登记既有缺陷】 1. flask db CLI 因 .env FLASK_VERSION 与 --version 冲突报错 → Makefile 已加 FLASK_SKIP_DOTENV=1 2. 本机 Redis 未设密码但 REDIS_AUTH=True,/captcha 报 AUTH 错误(环境问题) 【验收】22 模型表全量识别;src/ flake8 零告警;pytest 5 passed;应用启动; /login 表单校验、/user/page 鉴权拦截冒烟正常 Co-Authored-By: Claude <noreply@anthropic.com>
75 lines
2.7 KiB
Makefile
75 lines
2.7 KiB
Makefile
# ============================================================
|
||
# DjangoAdmin Flask+EleVue 常用命令集
|
||
# 用法:make help / make lint / make test / ...
|
||
# ============================================================
|
||
|
||
PYTHON ?= python
|
||
PIP ?= $(PYTHON) -m pip
|
||
FLASK ?= $(PYTHON) -m flask
|
||
|
||
# 说明:.env 中 FLASK_VERSION=v2.8.0 会被 Flask CLI 误解析为 --version 布尔标志,
|
||
# 导致 flask db 系列命令报错。故 db-* 目标显式跳过 CLI 自动加载 .env
|
||
# (config/__init__.py 会自行加载 .env,应用配置不受影响)。
|
||
FLASK_ENV_PREFIX := FLASK_SKIP_DOTENV=1 FLASK_APP=app.py
|
||
|
||
.PHONY: help install install-dev dev lint format type-check test test-cov \
|
||
db-migrate db-upgrade db-downgrade docker-up docker-down clean
|
||
|
||
help: ## 显示全部命令帮助
|
||
@grep -E '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) | sort | \
|
||
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
|
||
|
||
# ---- 依赖 ----
|
||
install: ## 安装生产依赖
|
||
$(PIP) install -r requirements.txt
|
||
|
||
install-dev: ## 安装开发依赖(含生产依赖 + 测试/规范工具)
|
||
$(PIP) install -r requirements-dev.txt
|
||
|
||
# ---- 运行 ----
|
||
dev: ## 启动开发服务器(127.0.0.1:8021)
|
||
$(PYTHON) app.py
|
||
|
||
# ---- 代码质量 ----
|
||
lint: ## 静态检查(flake8 + black + isort)
|
||
flake8 application utils extensions config src tests scripts
|
||
black --check --line-length 120 application utils extensions config src tests scripts
|
||
isort --check-only application utils extensions config src tests scripts
|
||
|
||
format: ## 自动格式化(black + isort)
|
||
black --line-length 120 application utils extensions config src tests scripts
|
||
isort application utils extensions config src tests scripts
|
||
|
||
type-check: ## 类型检查(mypy)
|
||
mypy application src
|
||
|
||
# ---- 测试 ----
|
||
test: ## 运行全部测试
|
||
pytest
|
||
|
||
test-cov: ## 带覆盖率运行测试
|
||
pytest --cov=application --cov-report=term-missing
|
||
|
||
# ---- 数据库迁移 ----
|
||
db-migrate: ## 生成迁移脚本(模型变更后)
|
||
$(FLASK_ENV_PREFIX) $(FLASK) db migrate
|
||
|
||
db-upgrade: ## 应用迁移到最新
|
||
$(FLASK_ENV_PREFIX) $(FLASK) db upgrade
|
||
|
||
db-downgrade: ## 回滚一次迁移
|
||
$(FLASK_ENV_PREFIX) $(FLASK) db downgrade
|
||
|
||
# ---- Docker ----
|
||
docker-up: ## 启动 Docker 服务
|
||
cd docker && docker-compose up -d
|
||
|
||
docker-down: ## 停止 Docker 服务
|
||
cd docker && docker-compose down
|
||
|
||
# ---- 清理 ----
|
||
clean: ## 清理缓存与临时文件
|
||
find . -type d -name __pycache__ -not -path "*/ui/*" -exec rm -rf {} +
|
||
find . -type f -name "*.pyc" -not -path "*/ui/*" -delete
|
||
rm -rf .pytest_cache .mypy_cache
|