66 lines
2.9 KiB
Makefile
66 lines
2.9 KiB
Makefile
.PHONY: install dev stop test test-e2e build
|
|
|
|
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 && python -m pytest ../tests -x -q
|
|
|
|
test-e2e:
|
|
cd backend && CREATOR_FAKE_AGENTS=1 python -m pytest ../tests/test_e2e.py -x -q
|
|
|
|
build:
|
|
cd frontend && npm run build
|
|
|
|
# ── Server-Deployment (Muster vom alten creator; Traefik läuft dort schon) ────
|
|
SERVER = root@178.104.67.87
|
|
REMOTE = /var/www/creator2
|
|
|
|
# Code (+ .env) auf den Server spiegeln und Container neu bauen.
|
|
# storage/topics sind ausgenommen — Daten leben nur auf der jeweiligen Seite.
|
|
deploy:
|
|
rsync -avz --delete \
|
|
--exclude .git --exclude node_modules --exclude frontend/node_modules \
|
|
--exclude frontend/dist --exclude storage --exclude topics \
|
|
--exclude .claude-data --exclude __pycache__ --exclude .pytest_cache \
|
|
./ $(SERVER):$(REMOTE)/
|
|
ssh $(SERVER) 'cd $(REMOTE) && docker compose up -d --build'
|
|
@echo "Deploy fertig: https://creator2.marha.de"
|
|
|
|
# Remote-Daten holen (Remote wird für den DB-Snapshot gestoppt und neu gestartet).
|
|
sync: stop
|
|
@rm -f storage/creator2.db-shm storage/creator2.db-wal
|
|
ssh $(SERVER) 'cd $(REMOTE) && docker compose down'
|
|
rsync -avz --progress $(SERVER):$(REMOTE)/storage/creator2.db storage/
|
|
-rsync -avz --progress $(SERVER):$(REMOTE)/storage/creator2.db-wal storage/
|
|
rsync -avz --progress --delete $(SERVER):$(REMOTE)/storage/korpus/ storage/korpus/
|
|
rsync -avz --progress --delete $(SERVER):$(REMOTE)/topics/ topics/
|
|
ssh $(SERVER) 'cd $(REMOTE) && docker compose up -d'
|
|
@echo "Sync abgeschlossen — Remote läuft wieder."
|
|
|
|
# Lokalen Stand auf den Server schieben (überschreibt Remote-Daten!).
|
|
sync-reverse: stop
|
|
@[ -f storage/creator2.db ] || { echo "Keine lokale DB — abgebrochen."; exit 1; }
|
|
ssh $(SERVER) 'cd $(REMOTE) && docker compose down'
|
|
ssh $(SERVER) 'mkdir -p $(REMOTE)/storage $(REMOTE)/topics && rm -f $(REMOTE)/storage/creator2.db-shm $(REMOTE)/storage/creator2.db-wal'
|
|
rsync -avz --progress storage/creator2.db $(SERVER):$(REMOTE)/storage/
|
|
-rsync -avz --progress storage/creator2.db-wal $(SERVER):$(REMOTE)/storage/
|
|
rsync -avz --progress --delete storage/korpus/ $(SERVER):$(REMOTE)/storage/korpus/
|
|
rsync -avz --progress --delete topics/ $(SERVER):$(REMOTE)/topics/
|
|
ssh $(SERVER) 'cd $(REMOTE) && docker compose up -d'
|
|
@echo "Reverse-Sync abgeschlossen — Remote läuft wieder."
|