.PHONY: start stop restart status logs clean install help

# ERP AI Assistant Makefile

# 默认目标
.DEFAULT_GOAL := help

# 帮助信息
help:
	@echo "ERP AI Assistant - 管理命令"
	@echo ""
	@echo "使用方法: make [命令]"
	@echo ""
	@echo "可用命令:"
	@echo "  start     启动项目（后端 + 前端）"
	@echo "  stop      停止项目"
	@echo "  restart   重启项目"
	@echo "  status    查看服务状态"
	@echo "  logs      查看日志（后端和前端）"
	@echo "  logs-backend  查看后端日志"
	@echo "  logs-frontend 查看前端日志"
	@echo "  install   安装所有依赖"
	@echo "  clean     清理日志和临时文件"
	@echo "  test      运行测试"
	@echo ""

# 启动项目
start:
	@./start.sh

# 停止项目
stop:
	@./stop.sh

# 重启项目
restart:
	@./restart.sh

# 查看状态
status:
	@./status.sh

# 查看所有日志
logs:
	@echo "查看后端和前端日志 (按 Ctrl+C 退出)..."
	@tail -f logs/backend.log logs/frontend.log

# 查看后端日志
logs-backend:
	@echo "查看后端日志 (按 Ctrl+C 退出)..."
	@tail -f logs/backend.log

# 查看前端日志
logs-frontend:
	@echo "查看前端日志 (按 Ctrl+C 退出)..."
	@tail -f logs/frontend.log

# 安装依赖
install:
	@echo "安装后端依赖..."
	cd backend && python3 -m venv venv && . venv/bin/activate && pip install -r requirements.txt
	@echo "安装前端依赖..."
	cd frontend && npm install
	@echo "✅ 依赖安装完成"

# 清理
clean:
	@echo "清理日志和临时文件..."
	rm -rf logs/*.log logs/pids.txt
	find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
	find . -type f -name "*.pyc" -delete
	find . -type d -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true
	find . -type d -name "node_modules" -prune -o -type d -name ".cache" -exec rm -rf {} + 2>/dev/null || true
	@echo "✅ 清理完成"

# 运行测试
test:
	@echo "运行后端测试..."
	cd backend && . venv/bin/activate && pytest tests/ -v --cov=app
	@echo "✅ 测试完成"

# 开发模式（前台运行，方便调试）
dev:
	@echo "开发模式启动..."
	@echo "后端日志将输出到此终端"
	@./stop.sh
	@cd backend && . venv/bin/activate && python -m app.main & BACKEND_PID=$$!; \
	cd ../frontend && npm run dev & FRONTEND_PID=$$!; \
	echo ""; \
	echo "服务已启动:"; \
	echo "  前端: http://localhost:5173"; \
	echo "  后端: http://localhost:8000"; \
	echo ""; \
	echo "PID: 后端=$$BACKEND_PID, 前端=$$FRONTEND_PID"; \
	echo "按 Ctrl+C 停止所有服务..."; \
	trap "kill $$BACKEND_PID $$FRONTEND_PID 2>/dev/null; exit" INT TERM; \
	wait