.PHONY: help install dev-install test clean build run docker-build docker-run deploy

# 默认目标
help:
	@echo "Questions MCP Server - 可用命令:"
	@echo ""
	@echo "  make install        - 安装生产环境依赖"
	@echo "  make dev-install    - 安装开发环境依赖"
	@echo "  make test           - 运行测试"
	@echo "  make clean          - 清理构建文件"
	@echo "  make build          - 构建 Python 包"
	@echo "  make run            - 运行服务"
	@echo "  make docker-build   - 构建 Docker 镜像"
	@echo "  make docker-run     - 使用 Docker Compose 运行"
	@echo "  make docker-stop    - 停止 Docker 服务"
	@echo "  make deploy         - 完整部署流程"
	@echo ""

# 安装生产环境依赖
install:
	@echo "安装生产环境依赖..."
	pip install -r requirements.txt

# 安装开发环境依赖
dev-install:
	@echo "安装开发环境依赖..."
	pip install -r requirements.txt
	pip install pytest pytest-asyncio black flake8

# 运行测试
test:
	@echo "运行测试..."
	pytest tests/ -v

# 清理构建文件
clean:
	@echo "清理构建文件..."
	rm -rf build/
	rm -rf dist/
	rm -rf *.egg-info
	find . -type d -name __pycache__ -exec rm -rf {} +
	find . -type f -name "*.pyc" -delete
	find . -type f -name "*.pyo" -delete

# 构建 Python 包
build: clean
	@echo "构建 Python 包..."
	python -m build
	@echo "构建完成! 文件位于 dist/ 目录"

# 运行服务
run:
	@echo "启动 Questions MCP Server..."
	python -m src.main

# 构建 Docker 镜像
docker-build:
	@echo "构建 Docker 镜像..."
	docker build -t questions-mcp-server:latest .

# 使用 Docker Compose 运行
docker-run:
	@echo "使用 Docker Compose 启动服务..."
	docker-compose up -d
	@echo "服务已启动，查看日志: docker-compose logs -f"

# 停止 Docker 服务
docker-stop:
	@echo "停止 Docker 服务..."
	docker-compose down

# 完整部署流程
deploy:
	@echo "开始完整部署流程..."
	@echo "1. 创建虚拟环境（如果不存在）..."
	@test -d .venv || python3 -m venv .venv
	@echo "2. 激活虚拟环境并安装依赖..."
	@. .venv/bin/activate && pip install -r requirements.txt
	@echo "3. 创建必要的目录..."
	@mkdir -p data/chroma data/backups logs
	@echo "4. 检查环境变量..."
	@test -f .env || (cp .env.example .env && echo "请配置 .env 文件")
	@echo "部署完成! 运行 'make run' 启动服务"

# 格式化代码
format:
	@echo "格式化代码..."
	black src/ tests/

# 代码检查
lint:
	@echo "运行代码检查..."
	flake8 src/ tests/ --max-line-length=100

# 初始化数据目录
init-dirs:
	@echo "创建数据目录..."
	@mkdir -p data/chroma data/backups logs
	@echo "目录创建完成"

# 查看日志
logs:
	@echo "查看应用日志..."
	@tail -f logs/app.log

# 备份数据
backup:
	@echo "备份数据..."
	@mkdir -p data/backups
	@cp data/questions.db data/backups/questions_$$(date +%Y%m%d_%H%M%S).db || true
	@tar -czf data/backups/chroma_$$(date +%Y%m%d_%H%M%S).tar.gz data/chroma/ || true
	@echo "备份完成"
