Release archive
3.2.37

PROD-SEARCH-01 (Detached Worker Trigger Path) & PROD-UI-SEARCH-02 (Name vs Slug Scraping State Drift)

Release v3.2.37 focuses on PROD-SEARCH-01 (Detached Worker Trigger Path), PROD-UI-SEARCH-02 (Name vs Slug Scraping State Drift), and PROD-TRUST-03 (Sentiment Breakdown Stuck at 0%).

FixedInternal
PROD-SEARCH-01 (Detached Worker Trigger Path) & PROD-UI-SEARCH-02 (Name vs Slug Scraping State Drift)

Release digest

Fixed

  • PROD-SEARCH-01 (Detached Worker Trigger Path) — Smart Search now triggers Cloud Run scraping workers after job creation in cloud mode (backend/services/smart_search.py). POST /api/scraping/start now does the same and returns workers_triggered for observability (backend/scraping_api.py).
  • PROD-UI-SEARCH-02 (Name vs Slug Scraping State Drift) — Frontend scraping state now preserves both companyName and companySlug, and the overview loading/polling path matches either identifier (dashboard_app/src/components/Header.jsx, dashboard_app/src/components/Overview.jsx).
  • PROD-TRUST-03 (Sentiment Breakdown Stuck at 0%) — Trust Score overview now counts positive sentiment case-insensitively and preserves region filtering in the same path (backend/api_repositories/review_repository.py, backend/api_services/analytics_service.py).
  • PROD-AI-REPORT-04 (Silent/Incorrect Analysis Path)Run AI Analysis now surfaces non-2xx failures client-side and refreshes immediately on success (dashboard_app/src/components/ReportViewer.jsx). Backend analysis resolves slug/input to canonical reviews.company_name before generating report content (backend/routers/analytics.py).
  • PROD-AI-REPORT-05 (Report Generator Exact-Match Drift) — AI report generation now resolves input to the canonical review company name and loads stats/reviews/aspects via ILIKE matching instead of brittle exact company_name = %s queries (backend/ai_report_generator.py). This keeps Run AI Analysis aligned with the same company corpus used by the report page metrics.
  • PROD-LOCAL-AUTH-05 (Misleading Local Admin Auth UX) — Admin Panel now surfaces backend auth detail messages instead of collapsing all failures into a generic invalid-token message, and .env.docker.example now documents required local write-auth keys (ADMIN_TOKEN, INTERNAL_API_KEY).
  • PROD-LOCAL-AUTH-06 (Local Startup Auth Drift)scripts/startup.sh now loads local env files, injects write-auth env vars explicitly into backend/scraping processes, and performs an admin-auth smoke check against /api/admin/db-health before continuing. backend/main.py now loads .env, backend/.env, .env.local, and backend/.env.local deterministically regardless of launch cwd and logs whether write-auth is configured (without printing secrets).
  • PROD-LOCAL-AUTH-07 (Shell-Unsafe .env Parsing) — local startup scripts no longer source .env files directly. They now parse env files safely, which prevents startup failure when values contain spaces or shell-sensitive text.

Internal

  • Added tests/test_prod_search_sentiment_ai_report.py.
  • Targeted regression: 15 passed.
  • Targeted pre-commit run --files ... passed.
  • Added docs/reports/2026-03-07_PROD_REPAIR_SEARCH_SENTIMENT_AI_REPORT.md.
  • Synced internal/public API docs for smart search, scraping start, and AI report behavior.

Technical notes