.PHONY: help init keys up down logs restart build rebuild backend frontend clean

help:
	@echo "Available commands:"
	@echo "  make init      - 复制 .env.example 到 .env（如不存在）"
	@echo "  make keys      - 生成 SECRET_KEY 和 FERNET_KEY 并写入 .env"
	@echo "  make up        - 启动所有服务（首次会自动 build）"
	@echo "  make down      - 停止所有服务"
	@echo "  make logs      - 跟踪查看 backend 日志"
	@echo "  make restart   - 重启所有服务"
	@echo "  make build     - 构建镜像"
	@echo "  make rebuild   - 强制重新构建（无缓存）"
	@echo "  make clean     - 停止服务并清理 volumes（会删除数据！）"

init:
	@if [ ! -f .env ]; then cp .env.example .env && echo "[ok] .env created"; else echo "[skip] .env already exists"; fi

keys:
	@if grep -q "please-change-me" .env 2>/dev/null; then \
		echo "Generating SECRET_KEY..."; \
		sed -i "s|^SECRET_KEY=.*|SECRET_KEY=$$(openssl rand -hex 32)|" .env; \
		echo "Generating FERNET_KEY..."; \
		sed -i "s|^FERNET_KEY=.*|FERNET_KEY=$$(python3 -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')|" .env; \
		echo "[ok] keys generated"; \
	else \
		echo "[skip] .env already has real keys"; \
	fi

up:
	docker compose up -d --build
	@echo "[ok] services started. Frontend: http://localhost:5173  Backend: http://localhost:8000"

down:
	docker compose down

logs:
	docker compose logs -f backend

restart:
	docker compose restart

build:
	docker compose build

rebuild:
	docker compose build --no-cache

clean:
	docker compose down -v
	@echo "[warn] volumes removed - all backup metadata and local backups deleted!"
