Spaces:
Sleeping
Sleeping
Commit Β·
10ee56c
1
Parent(s): 612435b
fix: HF startup crash from set -u on unset DATABASE_URL in start.sh
Browse files- README.md +1 -0
- hf/start.sh +7 -6
README.md
CHANGED
|
@@ -4,6 +4,7 @@ emoji: π¦
|
|
| 4 |
colorFrom: blue
|
| 5 |
colorTo: green
|
| 6 |
sdk: docker
|
|
|
|
| 7 |
pinned: true
|
| 8 |
license: mit
|
| 9 |
short_description: AI-Native Fintech Platform with Real-Time Streaming
|
|
|
|
| 4 |
colorFrom: blue
|
| 5 |
colorTo: green
|
| 6 |
sdk: docker
|
| 7 |
+
app_port: 7860
|
| 8 |
pinned: true
|
| 9 |
license: mit
|
| 10 |
short_description: AI-Native Fintech Platform with Real-Time Streaming
|
hf/start.sh
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
# BankBot AI β Hugging Face Spaces startup script
|
| 4 |
# Runs: DB init β optional seed β supervisord (nginx + fastapi + nextjs)
|
| 5 |
# ============================================================
|
| 6 |
-
set -
|
| 7 |
|
| 8 |
echo "============================================"
|
| 9 |
echo " BankBot AI β Starting on Hugging Face"
|
|
@@ -15,9 +15,10 @@ export PYTHONUNBUFFERED=1
|
|
| 15 |
|
| 16 |
# SQLite path inside the container (ephemeral but fine for HF demo)
|
| 17 |
export SQLITE_PATH="${SQLITE_PATH:-/app/data/bankbot.db}"
|
|
|
|
| 18 |
|
| 19 |
# If no DATABASE_URL set, force SQLite
|
| 20 |
-
if [ -z "$DATABASE_URL" ]; then
|
| 21 |
echo "[INFO] No DATABASE_URL set β using SQLite at $SQLITE_PATH"
|
| 22 |
export USE_SQLITE=true
|
| 23 |
export DATABASE_URL="sqlite:///$SQLITE_PATH"
|
|
@@ -29,12 +30,12 @@ export OPENAI_API_KEY="${OPENAI_API_KEY:-}"
|
|
| 29 |
export REDIS_URL="${REDIS_URL:-}"
|
| 30 |
|
| 31 |
# If no Redis, the app auto-falls back to in-memory cache
|
| 32 |
-
if [ -z "$REDIS_URL" ]; then
|
| 33 |
echo "[INFO] No REDIS_URL set β using in-memory cache"
|
| 34 |
fi
|
| 35 |
|
| 36 |
# JWT secret fallback (not secure for production, but keeps HF demo working)
|
| 37 |
-
if [ -z "$JWT_SECRET_KEY" ]; then
|
| 38 |
export JWT_SECRET_KEY="hf-demo-secret-$(date +%s)"
|
| 39 |
echo "[WARN] JWT_SECRET_KEY not set β using ephemeral secret (set in HF Secrets for persistence)"
|
| 40 |
fi
|
|
@@ -43,9 +44,9 @@ fi
|
|
| 43 |
export BACKEND_CORS_ORIGINS='["http://localhost:7860","http://localhost:3000","https://*.hf.space","*"]'
|
| 44 |
|
| 45 |
# ββ Log which AI backend is active βββββββββββββββββββββββββββββββββββββββββββ
|
| 46 |
-
if [ -n "$OPENAI_API_KEY" ]; then
|
| 47 |
echo "[INFO] AI backend: OpenAI (key detected)"
|
| 48 |
-
elif [ -n "$GROQ_API_KEY" ]; then
|
| 49 |
echo "[INFO] AI backend: Groq (key detected)"
|
| 50 |
else
|
| 51 |
echo "[WARN] No AI API key set β AI will use offline fallback. Set GROQ_API_KEY in HF Secrets for live AI."
|
|
|
|
| 3 |
# BankBot AI β Hugging Face Spaces startup script
|
| 4 |
# Runs: DB init β optional seed β supervisord (nginx + fastapi + nextjs)
|
| 5 |
# ============================================================
|
| 6 |
+
set -e
|
| 7 |
|
| 8 |
echo "============================================"
|
| 9 |
echo " BankBot AI β Starting on Hugging Face"
|
|
|
|
| 15 |
|
| 16 |
# SQLite path inside the container (ephemeral but fine for HF demo)
|
| 17 |
export SQLITE_PATH="${SQLITE_PATH:-/app/data/bankbot.db}"
|
| 18 |
+
mkdir -p "$(dirname "$SQLITE_PATH")" 2>/dev/null || mkdir -p /app/data
|
| 19 |
|
| 20 |
# If no DATABASE_URL set, force SQLite
|
| 21 |
+
if [ -z "${DATABASE_URL:-}" ]; then
|
| 22 |
echo "[INFO] No DATABASE_URL set β using SQLite at $SQLITE_PATH"
|
| 23 |
export USE_SQLITE=true
|
| 24 |
export DATABASE_URL="sqlite:///$SQLITE_PATH"
|
|
|
|
| 30 |
export REDIS_URL="${REDIS_URL:-}"
|
| 31 |
|
| 32 |
# If no Redis, the app auto-falls back to in-memory cache
|
| 33 |
+
if [ -z "${REDIS_URL:-}" ]; then
|
| 34 |
echo "[INFO] No REDIS_URL set β using in-memory cache"
|
| 35 |
fi
|
| 36 |
|
| 37 |
# JWT secret fallback (not secure for production, but keeps HF demo working)
|
| 38 |
+
if [ -z "${JWT_SECRET_KEY:-}" ]; then
|
| 39 |
export JWT_SECRET_KEY="hf-demo-secret-$(date +%s)"
|
| 40 |
echo "[WARN] JWT_SECRET_KEY not set β using ephemeral secret (set in HF Secrets for persistence)"
|
| 41 |
fi
|
|
|
|
| 44 |
export BACKEND_CORS_ORIGINS='["http://localhost:7860","http://localhost:3000","https://*.hf.space","*"]'
|
| 45 |
|
| 46 |
# ββ Log which AI backend is active βββββββββββββββββββββββββββββββββββββββββββ
|
| 47 |
+
if [ -n "${OPENAI_API_KEY:-}" ]; then
|
| 48 |
echo "[INFO] AI backend: OpenAI (key detected)"
|
| 49 |
+
elif [ -n "${GROQ_API_KEY:-}" ]; then
|
| 50 |
echo "[INFO] AI backend: Groq (key detected)"
|
| 51 |
else
|
| 52 |
echo "[WARN] No AI API key set β AI will use offline fallback. Set GROQ_API_KEY in HF Secrets for live AI."
|