Files
meijiaka-zy/python-api/Makefile
T
小鱼开发 e262134148 refactor: 移除 KlingAI 和 MiniMax 相关代码
删除内容:
- KlingAI Provider、MiniMax Provider
- Kling 视频/图片/TTS/语音克隆/形象克隆 Service 和 Scheduler Handler
- 已废弃的 TTSService、VoiceCloneService
- config 中 KLINGAI_*/MINIMAX_* 配置项
- ai_models.yaml 中 klingai 平台和模型配置
- docker-compose 中相关环境变量
- .env.example 中相关配置示例
- deploy-test.sh 中相关检查
- Makefile 中 klingai 语义检查排除规则
- KlingTaskStatus 枚举

修改内容:
- model_router.py 移除 KlingAI 平台分支
- voice.py 重写,修复批量合成/文件保存中 service 未定义的 Bug
- vidu_service.py 移除 MiniMax 相关注释
- script_handler.py 更新注释
2026-05-02 23:16:14 +08:00

145 lines
4.5 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 美家卡智影 API - 常用命令
# ==========================
.PHONY: help install dev install-hooks update-lock lint format test security clean docker
help: ## 显示帮助信息
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
# ========== 依赖管理 ==========
install: ## 安装生产依赖(使用 lock 文件)
uv pip sync requirements.lock
dev: ## 安装开发依赖(包含 dev extras)
uv pip install -e ".[dev]"
pre-commit install
install-hooks: ## 安装 Git pre-commit 钩子
pre-commit install
update-lock: ## 更新 requirements.lock(修改 pyproject.toml 后执行)
uv pip compile pyproject.toml -o requirements.lock --upgrade
update-lock-no-upgrade: ## 重新生成 lock 文件(不升级版本)
uv pip compile pyproject.toml -o requirements.lock
# ========== 代码质量 ==========
lint: ## 运行代码检查 (ruff + mypy)
ruff check app/
mypy app/
format: ## 格式化代码 (black + ruff)
black app/
ruff check --fix app/
format-check: ## 检查代码格式(不修改)
black --check app/
ruff check app/
# ========== 测试 ==========
test: ## 运行测试
pytest -v
test-cov: ## 运行测试并生成覆盖率报告
pytest --cov=app --cov-report=html --cov-report=term
# ========== 安全扫描 ==========
security: ## 运行安全扫描 (bandit + pip-audit)
@echo "🔍 运行 Bandit 安全扫描..."
bandit -r app/ -c pyproject.toml
@echo "🔍 运行依赖漏洞扫描..."
pip-audit
# ========== 开发服务器 ==========
run: ## 启动开发服务器
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
scheduler: ## 启动 Async Engine Scheduler
python -m app.scheduler.main
# ========== Docker ==========
# ⚠️ 注意:db + redis 是共享基础设施(另一个项目管理),
# 当前项目只管理 api + scheduler,禁止用 docker-compose down。
docker: ## 构建 Docker 镜像
docker build -t meijiaka-api:latest .
docker-run: ## 启动 api + scheduler(共享 db/redis,不动基础设施)
docker-compose -p meijiaka-zj up -d
docker-rebuild: ## 强制重建 api + scheduler(代码更新后使用)
docker-compose -p meijiaka-zj up -d --build --force-recreate api scheduler
docker-stop: ## 停止 api + scheduler(保留 db/redis
docker-compose -p meijiaka-zj down
docker-rm: ## 删除 api + scheduler 容器(保留 db/redis
docker-compose -p meijiaka-zj rm -f
docker-logs: ## 查看 Docker 日志
docker-compose logs -f
docker-logs-api: ## 查看 api 日志
docker-compose logs -f api
docker-logs-scheduler: ## 查看 scheduler 日志
docker-compose logs -f scheduler
# ========== 清理 ==========
clean: ## 清理缓存文件
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find . -type f -name "*.pyc" -delete 2>/dev/null || true
find . -type d -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true
find . -type d -name ".mypy_cache" -exec rm -rf {} + 2>/dev/null || true
rm -rf htmlcov/ .coverage 2>/dev/null || true
# ========== 语义层防护网 ==========
lint-semantic: ## 语义层禁词检查(防止供应商术语泄漏到业务层)
@echo "🔍 检查 Layer 3+ 是否泄漏供应商术语..."
@# API 层禁止 element_id 作为字段/参数名
@errs=$$(grep -rn 'element_id' app/api --include='*.py' \
| grep -v 'provider_element_id' \
| grep -v '__pycache__' \
| grep -v '#' \
| grep -v '".*element_id.*"' \
| grep -v "'.*element_id.*'"); \
if [ -n "$$errs" ]; then \
echo "$$errs"; \
echo "❌ API 层发现 element_id(应使用 provider_element_id 或 human_id"; \
exit 1; \
fi
@# Scheduler 层禁止 task_id 作为内部变量/Redis key(读取 Provider 返回除外)
@errs=$$(grep -rn '\btask_id\b' app/scheduler --include='*.py' \
| grep -v 'job_id' \
| grep -v '__pycache__' \
| grep -v '\.get("task_id")' \
| grep -v 'result.get("task_id")' \
| grep -v 'task_type' \
| grep -v '"task_id"' \
| grep -v "'task_id'"); \
if [ -n "$$errs" ]; then \
echo "$$errs"; \
echo "❌ Scheduler 层发现 task_id(应使用 job_id"; \
exit 1; \
fi
@# Scheduler 层 Redis key 必须使用 job: 而非 task:
@errs=$$(grep -rn 'redis.*task:' app/scheduler --include='*.py' \
| grep -v '__pycache__'); \
if [ -n "$$errs" ]; then \
echo "$$errs"; \
echo "❌ Scheduler Redis key 使用 task:(应使用 job:"; \
exit 1; \
fi
@echo "✅ 语义层检查通过"
# ========== CI 检查 ==========
ci: format-check lint lint-semantic test security ## 运行所有 CI 检查