# Makefile · plantilla EC0744 · reproducibilidad mínima
# Uso:
#   make all          → corre todo el pipeline
#   make clean        → borra outputs · NO data raw
#   make audit        → empaqueta los audit logs para H3
#   make check        → verifica que el repo está limpio antes del submit

R := Rscript --vanilla
PY := python3
DATE := $(shell date +%Y-%m-%d)

# ────────────────────────────────────────────────────────────────────
# Pipeline principal · ajustá nombres a tu proyecto
# ────────────────────────────────────────────────────────────────────

all: data/processed/panel.rds output/tab_did.tex output/fig_eventstudy.pdf output/fig_bacon.pdf docs/sessionInfo.txt

data/processed/panel.rds: code/01_clean.R data/raw/*.csv
	$(R) code/01_clean.R

output/tab_did.tex: code/02_did_primario.R data/processed/panel.rds
	$(R) code/02_did_primario.R

output/fig_eventstudy.pdf: code/02_did_primario.R data/processed/panel.rds
	$(R) code/02_did_primario.R

# Cross-check con ≥2 estimadores · regla dura H3
output/tab_crosscheck.tex: code/03_did_crosscheck.R data/processed/panel.rds
	$(R) code/03_did_crosscheck.R

# Goodman-Bacon decomposition · diagnóstico obligatorio si DiD
output/fig_bacon.pdf: code/04_bacon_decomp.R data/processed/panel.rds
	$(R) code/04_bacon_decomp.R

# Placebos + sensitivity
output/tab_placebos.tex: code/05_placebos.R data/processed/panel.rds
	$(R) code/05_placebos.R

# ────────────────────────────────────────────────────────────────────
# Reproducibilidad
# ────────────────────────────────────────────────────────────────────

docs/sessionInfo.txt:
	$(R) -e 'sink("docs/sessionInfo.txt"); print(sessionInfo()); sink()'

# Para Python: alternativa
# docs/requirements.txt:
# 	$(PY) -m pip freeze > docs/requirements.txt

# ────────────────────────────────────────────────────────────────────
# Audits para entrega H3
# ────────────────────────────────────────────────────────────────────

audit: audit/L4-pair-programming.md audit/decisions.md audit/errors-IA.md audit/AIAS-report.md
	@echo "✓ Audit logs presentes"
	@echo "  L4 pair programming: $$(wc -l < audit/L4-pair-programming.md) líneas"
	@echo "  Decisiones:          $$(wc -l < audit/decisions.md) líneas"
	@echo "  Errores IA detectados: $$(grep -c '^##' audit/errors-IA.md)"
	@echo "  AIAS report:         $$(test -f audit/AIAS-report.md && echo ✓ || echo ✗)"

# ────────────────────────────────────────────────────────────────────
# Pre-submit check · regla del aula H3
# ────────────────────────────────────────────────────────────────────

check: audit
	@echo "Verificaciones pre-submit H3:"
	@test -f docs/PAP_moderado.md && echo "  ✓ PAP presente" || (echo "  ✗ falta PAP_moderado.md"; exit 1)
	@test -f output/tab_did.tex && echo "  ✓ estimador primario" || (echo "  ✗ falta tabla DiD"; exit 1)
	@test -f output/tab_crosscheck.tex && echo "  ✓ cross-check ≥1" || (echo "  ✗ falta cross-check"; exit 1)
	@test -f docs/sessionInfo.txt && echo "  ✓ sessionInfo" || (echo "  ✗ falta sessionInfo"; exit 1)
	@grep -q '^\[ERROR_IA\]' audit/L4-pair-programming.md && echo "  ✓ ≥1 error IA documentado" || (echo "  ✗ falta etiqueta [ERROR_IA] en audit L4"; exit 1)
	@echo ""
	@echo "Todo listo. git add . && git commit && git push antes de las 23:59 del sábado."

# ────────────────────────────────────────────────────────────────────
# Limpieza · NO borra data/raw ni audit
# ────────────────────────────────────────────────────────────────────

clean:
	rm -rf output/*.tex output/*.pdf output/*.png
	rm -f data/processed/*.rds
	@echo "✓ Output limpio · data/raw y audit/ intactos"

.PHONY: all audit check clean
