.PHONY: test forecast variance control-cycle exchange-forecast optimization portfolio-report

test:
	python3 -m unittest discover -s tests -p 'test_*.py'
	python3 tools/validate.py

forecast:
	python3 tools/cost_model.py data/demand/platform-audit-storage.json data/providers/object-storage.json

variance:
	@test -n "$(ACTUAL)" || { echo 'ACTUAL=data/actuals/YYYY-MM.json is required' >&2; exit 2; }
	python3 tools/variance.py data/forecasts/platform-audit-storage-scaleway-base-2026-08.json $(ACTUAL)

control-cycle:
	@test -n "$(FORECAST)" -a -n "$(ACTUAL)" || { echo 'FORECAST=... ACTUAL=... are required' >&2; exit 2; }
	python3 tools/control_cycle.py $(FORECAST) $(ACTUAL)

exchange-forecast:
	python3 tools/financial_exchange.py forecast data/forecasts/platform-audit-storage-scaleway-base-2026-08.json

optimization:
	python3 tools/optimization.py $(CASE)

portfolio-report:
	python3 tools/portfolio_report.py .
