Spaces:
Runtime error
Runtime error
Commit History
-
fix(deploy): auto-disable prepared statements on Supabase poolerβ
asyncpg's DuplicatePreparedStatementError fires when running against PgBouncer in transaction-pool mode (Supabase shared pooler). The DB_USE_PGBOUNCER env was already wired but easy to forget on deploy. Auto-detect Supabase pooler from the URL (port 6543 or pooler.supabase.com host) and force statement_cache_size=0 + prepared_statement_cache_size=0. Explicit DB_USE_PGBOUNCER=true still honoured for other PgBouncer deployments. Fixes: prepared statement "__asyncpg_stmt_1__" already exists during alembic upgrade head on Render.d0ce1e8 -
fix(deploy): pin DNS resolution to IPv4 (FORCE_IPV4=1 default)β
Render free tier has no IPv6 routes; Supabase shared pooler publishes AAAA records that win the AF_UNSPEC race in asyncpg's connect path, causing [Errno 101] Network is unreachable. Monkey-patch socket.getaddrinfo with AF_INET so every DNS lookup (asyncpg, psycopg2, requests, boto3) only sees A records β avoids the $4/mo IPv4 add-on. env.py imports database.py at boot, so Alembic upgrade benefits too. Disable with FORCE_IPV4=0 if running on a dual-stack host that needs IPv6.f4bb922 -
v0.3.0 β multimodal vehicle damage MVPβ
- Backend (FastAPI + Celery + Postgres + Redis + MinIO) with JWT auth, pre-trained model registry, 4-model dropdown API - 3 custom YOLO11 models (damage/parts/severity) trained on CarDD + CarParts-Seg + Roboflow Severity - ML pipeline: parallel detection + IoU matching + part-centric output + TR cost engine - Web (Next.js 15), Desktop (Tauri 2), Mobile (RN + Expo) - Free tier deploy: Vercel + Render + Supabase + Upstash + Cloudflare R2 - Wave 1-7 hardening: detection threshold calibration, crack low-conf flag, polling resilience, thumbnail fix, multi-foto async, SEO full setup, Lighthouse 86-92 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>e327f0d