SHELL := /bin/bash
PY ?= .venv/bin/python
SLUG := studio-contenu-de-marque
REGION ?= europe-west1
-include .env
export
PROJECT ?= $(GOOGLE_CLOUD_PROJECT)

.DEFAULT_GOAL := help
help: ## Liste les commandes
	@grep -E '^[a-z0-9-]+:.*## ' $(MAKEFILE_LIST) | awk -F':.*## ' '{printf "  make %-13s %s\n", $$1, $$2}'

setup: ## Crée .venv et installe les dépendances
	@test -d .venv || python3 -m venv .venv
	@.venv/bin/pip install -q -r requirements.txt
	@test -f .env || cp .env.example .env
	@command -v ffmpeg >/dev/null || echo "Attention : ffmpeg absent (nécessaire pour la vidéo)."
	@echo "Prêt. Renseignez .env puis : make test"

test: ## Tests sans clé ni réseau
	@$(PY) -m pytest -q tests

campagne: ## Génère une campagne complète depuis briefs/ondee.json (≈ 0,72 $)
	@$(PY) -m studio campagne

recomposer: ## Repose texte et logo sur les fonds existants (aucun appel IA)
	@$(PY) -m studio recomposer

linkedin: ## Exporte le kit LinkedIn (exige les visuels approuvés)
	@$(PY) -m studio linkedin

run: ## Ouvre la galerie de validation sur http://127.0.0.1:8000
	@$(PY) -m studio galerie

e2e: ## Test réel : kit, 4 formats, QC, vidéo Veo, export LinkedIn (≈ 0,80 $)
	@$(PY) -m studio e2e --dossier sorties/e2e

e2e-vertex: ## Même chaîne sur Vertex AI, sans vidéo (identifiants ADC)
	@GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_LOCATION=global $(PY) -m studio e2e --dossier sorties/e2e-vertex --sans-video

clean: ## Supprime les artefacts locaux (sorties, caches)
	@rm -rf sorties/ .pytest_cache __pycache__ */__pycache__
	@echo "Artefacts supprimés."

reset: clean ## clean + supprime .venv (garde .env)
	@rm -rf .venv
	@echo "Environnement supprimé (.env conservé)."

cloud-up: ## Rien à créer : Vertex AI est appelé à la demande
	@echo "Aucune ressource à créer : les modèles Vertex AI sont appelés à la demande (make e2e-vertex)."

cloud-status: ## Liste les ressources étiquetées formation-lab=$(SLUG)
	@test -n "$(PROJECT)" || { echo "PROJECT non défini (GOOGLE_CLOUD_PROJECT dans .env)."; exit 0; }
	@gcloud storage buckets list --project "$(PROJECT)" --filter="labels.formation-lab=$(SLUG)" --format="value(name)"
	@gcloud run services list --project "$(PROJECT)" --region "$(REGION)" --filter="metadata.labels.formation-lab=$(SLUG)" --format="value(metadata.name)"

cloud-down: ## Vérifie qu'aucune ressource du lab ne subsiste (échoue sinon)
	@test -n "$(PROJECT)" || { echo "PROJECT non défini : rien à vérifier."; exit 0; }
	@restes=$$($(MAKE) -s cloud-status) || { echo "Vérification impossible (gcloud en erreur)."; exit 1; }; \
	if [ -n "$$restes" ]; then echo "Ressources restantes :"; echo "$$restes"; exit 1; fi; \
	echo "Aucune ressource formation-lab=$(SLUG) dans le projet."
