# AIOps 智能运维平台 - Makefile
# 使用方式: make help
.PHONY: help install dev build build-ui build-api build-binary status stop restart logs lint clean \
        docker-up docker-down docker-build docker-logs

help:
	@echo "AIOps 智能运维平台 - 可用命令:"
	@echo ""
	@echo "  本地开发:"
	@echo "    make install    - 安装前后端依赖"
	@echo "    make dev        - 启动开发环境（前后端）"
	@echo "    make build      - 构建生产环境（前后端）"
	@echo "    make build-ui   - 仅构建前端"
	@echo "    make build-api  - 仅构建后端"
	@echo "    make status     - 查看服务状态"
	@echo "    make stop       - 停止所有服务"
	@echo "    make restart    - 重启所有服务"
	@echo "    make logs       - 查看实时日志"
	@echo "    make lint       - 代码检查"
	@echo "    make clean      - 清理构建产物"
	@echo ""
	@echo "  Docker 部署:"
	@echo "    make docker-up     - 构建并启动所有容器"
	@echo "    make docker-down   - 停止并移除所有容器"
	@echo "    make docker-build  - 重新构建镜像（不启动）"
	@echo "    make docker-logs   - 查看容器日志"
	@echo "    make docker-embed  - 单容器部署（embed 模式，前后端合一）"
	@echo ""
	@echo "  二进制部署:"
	@echo "    make build-binary  - 编译单二进制（前端嵌入后端）"

# ==================== 本地开发 ====================
install:
	@echo "安装后端依赖..."
	cd backend && go mod download
	@echo "安装前端依赖..."
	cd frontend && npm install

dev:
	./run.sh start

build-ui:
	@echo "构建前端..."
	cd frontend && npm run build

build-api:
	@echo "构建后端..."
	cd backend && CGO_ENABLED=1 go build -o aiops .

build: build-api build-ui

status:
	./run.sh status

stop:
	./run.sh stop

restart:
	./run.sh restart

logs:
	@tail -f backend/logs/server.log frontend/logs/dev.log 2>/dev/null || echo "日志文件不存在"

lint:
	@echo "检查后端代码..."
	cd backend && go vet ./...
	@echo "检查前端代码..."
	cd frontend && npm run lint 2>/dev/null || echo "前端 lint 未配置，跳过"

clean:
	@echo "清理构建产物..."
	rm -f backend/aiops backend/aiops-server
	rm -rf frontend/dist
	rm -f backend/logs/*.log frontend/logs/*.log
	@echo "清理完成"

# ==================== Docker 部署（双容器：前端 nginx + 后端） ====================
docker-up:
	docker-compose up -d --build

docker-down:
	docker-compose down

docker-build:
	docker-compose build

docker-logs:
	docker-compose logs -f

# ==================== 二进制部署（embed 模式） ====================
build-binary: build-ui
	@echo "构建单二进制（前端嵌入后端）..."
	@rm -rf backend/static
	@mkdir -p backend/static
	@cp -r frontend/dist/* backend/static/
	cd backend && CGO_ENABLED=1 go build -ldflags="-s -w" -o ../aiops .
	@echo "✓ 二进制已生成: ./aiops"
	@echo "  部署: scp aiops deploy/binary/install.sh root@<server>:/tmp/ && ssh root@<server> 'cd /tmp && bash install.sh install'"
