# SOC Chat Clone - Local Docker Commands (lightweight)
# 基础设施用 Azure 云服务，本地只运行 LangGraph Server + Frontend
# ====================================================================
# make dev       - 开发模式（热重载）
# make prod      - 生产模式
# make down      - 停止
# make logs      - 查看日志

.PHONY: dev prod down logs clean status setup check-env build-dev build-prod restart-backend restart-frontend

# ─── Environment ─────────────────────────────────────────────────
check-env:
	@if [ ! -f langgraph/.env ]; then \
		echo "ERROR: langgraph/.env not found."; \
		echo "  Run: make setup"; \
		exit 1; \
	fi

setup:
	@if [ ! -f langgraph/.env ]; then \
		cp langgraph/.env.docker.example langgraph/.env; \
		echo "Created langgraph/.env — 请检查并填入 GOOGLE_API_KEY 等缺失值"; \
	else \
		echo "langgraph/.env already exists, skipping."; \
	fi

# ─── Development ─────────────────────────────────────────────────
dev: check-env
	docker compose --profile dev up --build

dev-d: check-env
	docker compose --profile dev up --build -d

build-dev:
	docker compose --profile dev build

# ─── Production ──────────────────────────────────────────────────
prod: check-env
	docker compose --profile prod up --build

prod-d: check-env
	docker compose --profile prod up --build -d

build-prod:
	docker compose --profile prod build

# ─── Lifecycle ───────────────────────────────────────────────────
down:
	docker compose --profile dev --profile prod down

clean:
	docker compose --profile dev --profile prod down --rmi local
	@echo "All containers stopped and images removed."

restart-backend:
	docker compose restart langgraph-dev 2>/dev/null || docker compose restart langgraph-prod 2>/dev/null

restart-frontend:
	docker compose restart frontend-dev 2>/dev/null || docker compose restart frontend-prod 2>/dev/null

# ─── Observability ───────────────────────────────────────────────
logs:
	docker compose --profile dev --profile prod logs -f

logs-backend:
	docker compose logs -f langgraph-dev langgraph-prod 2>/dev/null

logs-frontend:
	docker compose logs -f frontend-dev frontend-prod 2>/dev/null

status:
	@echo "=== Container Status ==="
	@docker compose --profile dev --profile prod ps
	@echo ""
	@echo "=== Endpoints ==="
	@echo "  Frontend (dev):  http://localhost:5173"
	@echo "  Frontend (prod): http://localhost:3000"
	@echo "  LangGraph API:   http://localhost:2024"
	@echo ""
	@echo "=== Azure Cloud Services ==="
	@echo "  PostgreSQL: dataope.postgres.database.azure.com"
	@echo "  Redis:      oper.redis.cache.windows.net:6380"
	@echo "  Blob:       authdatablol.blob.core.windows.net"
	@echo "  Service Bus: databus.servicebus.windows.net"
