.PHONY: help install up down sample reindex migrate sql test clean-cache \ dev-data dev-logic dev-presentation # Autodetekcja narzędzia compose: nowe "docker compose" albo stare "docker-compose". COMPOSE := $(shell if docker compose version >/dev/null 2>&1; then echo "docker compose"; \ elif command -v docker-compose >/dev/null 2>&1; then echo "docker-compose"; fi) # Python aktywnego środowiska (venv). Nadpisz: make install PY=python3.12 PY ?= python help: @echo "install - zainstaluj zależności WSZYSTKICH warstw do aktywnego venv" @echo "sample - wygeneruj przykładowe pliki .xlsx" @echo "dev-data - uruchom warstwę danych lokalnie (:8002)" @echo "dev-logic - uruchom warstwę logiczną lokalnie (:8001)" @echo "dev-presentation - uruchom warstwę prezentacji lokalnie (:8000)" @echo "test - testy warstwy logicznej (silnik efemeryd)" @echo "clean-cache - wyczyść regenerowalny cache warstwy danych" @echo "reindex - zbuduj cache + indeks warstwy bazodanowej" @echo "migrate - ETL: Excel -> SQL" @echo "up / down - uruchom / zatrzymaj cały stos (Docker; wykryto: $(COMPOSE))" @echo "sql - Docker z warstwą SQL (DATA_PROVIDER=sql)" @echo "" @echo "Szybki start lokalny (bez Dockera), w 3 terminalach:" @echo " make install" @echo " make sample # opcjonalnie: dane przykładowe" @echo " make dev-data # terminal 1" @echo " make dev-logic # terminal 2" @echo " make dev-presentation # terminal 3 -> http://localhost:8000" # --- instalacja zależności do aktywnego środowiska --- install: $(PY) -m pip install \ -r services/data/requirements.txt \ -r services/logic/requirements.txt \ -r services/presentation/requirements.txt @echo "OK. Zależności warstw zainstalowane. (Silnik AGPL 'engine-swisseph' instaluje się osobno.)" sample: cd services/data && $(PY) scripts/make_sample_data.py reindex: cd services/data && $(PY) -m app.ingest.build_index migrate: cd services/data && $(PY) -m app.ingest.to_sql test: cd services/logic && PYTHONPATH=. $(PY) -m pytest tests -q clean-cache: rm -rf services/data/.cache/* services/logic/.ephemeris/* 2>/dev/null || true @echo "Cache wyczyszczony." # --- lokalny dev (3 osobne terminale) --- dev-data: cd services/data && uvicorn app.main:app --reload --port 8002 dev-logic: cd services/logic && DATA_URL=http://localhost:8002 uvicorn app.main:app --reload --port 8001 dev-presentation: cd services/presentation && LOGIC_URL=http://localhost:8001 uvicorn app.main:app --reload --port 8000 # --- Docker (opcjonalnie) --- up: @if [ -z "$(COMPOSE)" ]; then \ echo "Nie znaleziono Docker Compose (ani 'docker compose', ani 'docker-compose')."; \ echo "Użyj trybu lokalnego: make install, potem dev-data / dev-logic / dev-presentation."; \ exit 1; \ fi $(COMPOSE) up --build down: @if [ -z "$(COMPOSE)" ]; then echo "Brak Docker Compose."; exit 1; fi $(COMPOSE) down sql: @if [ -z "$(COMPOSE)" ]; then echo "Brak Docker Compose."; exit 1; fi DATA_PROVIDER=sql $(COMPOSE) up --build