diff --git a/app/main.py b/app/main.py index 37b94f5..9e29e5f 100644 --- a/app/main.py +++ b/app/main.py @@ -20,8 +20,9 @@ from collections.abc import AsyncIterator from contextlib import asynccontextmanager -from fastapi import FastAPI, Response +from fastapi import FastAPI, Request, Response from fastapi.middleware.cors import CORSMiddleware +from fastapi.responses import RedirectResponse from fastapi.staticfiles import StaticFiles from loguru import logger from slowapi.errors import RateLimitExceeded @@ -269,7 +270,12 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]: @app.get("/", tags=["Root"]) -def root() -> dict: +def root(request: Request): + # Tarayıcı (Accept: text/html) → doğrudan uygulamaya yönlendir; böylece çıplak + # kök URL bile dashboard'a düşer. API client (curl/test; Accept: */* veya + # application/json) eskisi gibi bilgi JSON'ı alır → test/sözleşme bozulmaz. + if "text/html" in request.headers.get("accept", ""): + return RedirectResponse(url="/dashboard/") return { "message": "SFDAP - Akilli Tarim Veri Analizi Platformu API", "docs": "/docs", diff --git a/demo-canli.sh b/demo-canli.sh new file mode 100755 index 0000000..cc67143 --- /dev/null +++ b/demo-canli.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# ============================================================ +# SFDAP — Demo Canlı Başlatma (TEK KOMUT) +# ============================================================ +# Yaptığı: taze demo verisi → uygulama (:8000) → Cloudflare tunnel. +# Çalıştır: ./demo-canli.sh +# Tunnel'ın yazdığı https://...trycloudflare.com URL'ini paylaş. +# Giriş: admin@demo.test / 123456 +# Durdur: Ctrl+C (uygulama + tunnel birlikte kapanır) +# ============================================================ +set -e +cd "$(dirname "$0")" + +echo "🌱 [1/3] Demo verisi tazeleniyor..." +PYTHONPATH=. .venv/bin/python scripts/seed_demo_readings.py 2>&1 | tail -1 + +echo "🚀 [2/3] Uygulama :8000'de başlatılıyor..." +.venv/bin/python -m uvicorn app.main:app --port 8000 > /tmp/sfdap-demo-app.log 2>&1 & +APP_PID=$! +trap 'echo; echo "🛑 Kapatılıyor..."; kill $APP_PID 2>/dev/null' EXIT INT TERM + +for i in $(seq 1 30); do + if curl -sf -o /dev/null http://localhost:8000/dashboard/ 2>/dev/null; then + echo " ✓ uygulama hazır"; break + fi + sleep 1 +done + +echo "🌐 [3/3] Cloudflare tunnel açılıyor — aşağıdaki HTTPS URL'ini paylaş:" +echo " (giriş: admin@demo.test / 123456)" +echo "" +cloudflared tunnel --url http://localhost:8000