.PHONY: install dev stop test test-e2e build prod

install:
	pip install --break-system-packages fastapi "uvicorn[standard]" httpx pytest pytest-asyncio ftfy fuzzysearch
	cd frontend && npm install
	@echo "Optional: pip install sentence-transformers (Embedding-Kandidaten; ohne läuft lexikalischer Fallback)."
	@echo "Optional: poppler-utils für PDF-Quellen (pdftotext)."

dev:
	@echo "Backend: http://localhost:8000  Frontend: http://localhost:5173"
	@set -a; [ -f .env ] && . ./.env; set +a; \
		cd backend && uvicorn main:app --reload --port 8000 &
	@cd frontend && npx vite --port 5173

stop:
	-@pkill -f "uvicorn main:app" 2>/dev/null
	-@pkill -f "vite --port 5173" 2>/dev/null
	@echo "gestoppt."

test:
	cd backend && python3 -m pytest ../tests -x -q

test-e2e:
	cd backend && CREATOR_FAKE_AGENTS=1 python3 -m pytest ../tests/test_e2e.py -x -q

build:
	cd frontend && npm run build

# ── Produktion (auf dem Server ausführen, im Projektverzeichnis) ──────────────
prod:
	docker compose up -d --build
	@echo "creator2 läuft: https://creator2.marha.de"

# ── Themen-Transfer lokal ↔ Server (überschreibt die Gegenseite) ──────────────
SERVER = root@178.104.67.87
REMOTE = /var/www/creator2

server-push:
	@[ -n "$(TOPIC)" ] || { echo "Nutzung: make server-push TOPIC=<thema>"; exit 1; }
	cd backend && python3 transfer.py export '$(TOPIC)' > /tmp/creator2-transfer.json
	ssh $(SERVER) 'cd $(REMOTE) && docker compose run --rm --no-deps -T creator2 python3 transfer.py import' < /tmp/creator2-transfer.json
	@# Dateien NACH dem Import — topic_loeschen räumt den Korpus-Ordner der Zielseite
	@[ ! -d 'storage/korpus/$(TOPIC)' ] || rsync -az --delete --mkpath --chown=1000:1000 'storage/korpus/$(TOPIC)/' '$(SERVER):$(REMOTE)/storage/korpus/$(TOPIC)/'
	@[ ! -d 'topics/$(TOPIC)' ] || rsync -az --delete --mkpath --chown=1000:1000 'topics/$(TOPIC)/' '$(SERVER):$(REMOTE)/topics/$(TOPIC)/'
	@echo "Push fertig: $(TOPIC) → Server."

server-pull:
	@[ -n "$(TOPIC)" ] || { echo "Nutzung: make server-pull TOPIC=<thema>"; exit 1; }
	ssh $(SERVER) "cd $(REMOTE) && docker compose run --rm --no-deps -T creator2 python3 transfer.py export '$(TOPIC)'" > /tmp/creator2-transfer.json
	cd backend && python3 transfer.py import < /tmp/creator2-transfer.json
	@ssh $(SERVER) "[ ! -d '$(REMOTE)/storage/korpus/$(TOPIC)' ]" || rsync -az --delete --mkpath "$(SERVER):$(REMOTE)/storage/korpus/$(TOPIC)/" 'storage/korpus/$(TOPIC)/'
	@ssh $(SERVER) "[ ! -d '$(REMOTE)/topics/$(TOPIC)' ]" || rsync -az --delete --mkpath "$(SERVER):$(REMOTE)/topics/$(TOPIC)/" 'topics/$(TOPIC)/'
	@echo "Pull fertig: $(TOPIC) ← Server."
