Files
meida_backend/Makefile
T
xsl da0314fd08 chore: bootstrap repo tooling, dependency and quality gates
uv-managed PEP 621 project with ruff, mypy (strict on packages/domain and
packages/llm), pytest with coverage, and import-linter contracts that
mechanically enforce the dependency rules of 架构文档 §4.2 -- including the
two forbidden edges (compliance and identity must not depend on business
domains). CI, pre-commit and a detect-secrets baseline gate every push;
.env is gitignored before anything is ever staged.
2026-08-14 00:26:39 +08:00

77 lines
2.4 KiB
Makefile
Executable File

.DEFAULT_GOAL := help
SHELL := /bin/bash
UV := $(shell command -v uv 2>/dev/null)
COMPOSE := docker compose -f deploy/docker-compose.dev.yml
ifdef UV
RUN := uv run
else
RUN := .venv/bin/python -m
endif
.PHONY: help install lint fmt typecheck importlint test test-unit migrate makemigration up down dev worker smoke secrets clean
help: ## Show this help
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-16s\033[0m %s\n", $$1, $$2}'
install: ## Create the venv and install runtime + dev dependencies
ifdef UV
uv sync --extra dev
uv run pre-commit install || true
else
python3 -m venv .venv
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -e ".[dev]"
.venv/bin/pre-commit install || true
endif
lint: ## ruff check + ruff format --check
uv run ruff check .
uv run ruff format --check .
fmt: ## Auto-fix lint issues and format
uv run ruff check --fix .
uv run ruff format .
typecheck: ## mypy strict on packages/domain + packages/llm, normal elsewhere (§16.2)
uv run mypy packages/domain packages/llm
uv run mypy apps packages/shared packages/identity packages/billing packages/task packages/agent packages/compliance
importlint: ## Enforce the dependency rules of 架构文档 §4.2
uv run lint-imports
test: lint typecheck importlint test-unit ## Full local quality gate (mirrors CI)
test-unit: ## pytest with coverage
uv run pytest
secrets: ## Scan the working tree for committed credentials
uv run detect-secrets scan --baseline .secrets.baseline
migrate: ## Apply Alembic migrations to $$DATABASE_URL
uv run alembic upgrade head
makemigration: ## Autogenerate a migration: make makemigration m="add xxx"
uv run alembic revision --autogenerate -m "$(m)"
up: ## Start PostgreSQL(pgvector) + Redis for local development
$(COMPOSE) up -d postgres redis
$(COMPOSE) ps
down: ## Stop the local stack (keeps volumes)
$(COMPOSE) down
dev: ## Run the API with autoreload
uv run uvicorn apps.api.main:app --host 0.0.0.0 --port 8000 --reload
worker: ## Run a Celery worker consuming the cpu/io queues
uv run celery -A apps.worker.celery_app.celery_app worker -Q cpu,io -l info
smoke: ## End-to-end proof: compose + migrate + API + real DeepSeek call
bash scripts/smoke.sh
clean: ## Remove caches and build artefacts
rm -rf .pytest_cache .mypy_cache .ruff_cache .coverage htmlcov dist build
find . -type d -name __pycache__ -prune -exec rm -rf {} +