This issue has been resolved. SPARC/auth.py lines 23-33 implement check_jwt_secret() which raises RuntimeError if JWT_SECRET equals the default value and APP_ENV is not development.…
This issue has been resolved. SPARC/config.py lines 64-70 read CORS_ORIGINS from the environment (comma-separated) and fall back to localhost dev origins when unset. docker-compose.yml…
This issue has been resolved. docker-compose.yml uses environment variable references (${POSTGRES_USER}, ${POSTGRES_PASSWORD}, ${POSTGRES_DB}) instead of hardcoded credentials. Users set…
This issue has been resolved. SPARC/auth.py now uses a module-level singleton _db_client with init_db_client(), close_db_client(), and get_db_client() functions that reuse a shared…
This issue has been resolved. SPARC/database.py includes a jobs table (line 175) with full CRUD operations for persisting async batch job state in PostgreSQL, including update_job_state…
This issue has been resolved. SPARC/api.py imports slowapi and applies rate limiting: @limiter.limit("5/minute") on the login endpoint (line 241) and @limiter.limit("10/minute") on the…
This issue has been resolved. tests/test_auth.py (10,211 bytes) contains comprehensive JWT auth flow tests covering registration, login, protected routes, and admin endpoints. Closing as completed.
This issue has been resolved. All three files now use structured logging via logging.getLogger(__name__): SPARC/analyzer.py, SPARC/serp_api.py, and SPARC/llm.py. No print() calls remain.…
This issue has been resolved. SPARC/config.py line 43 reads model = os.getenv("MODEL", "anthropic/claude-3.5-sonnet"). The LLM model is configurable via the MODEL environment variable. Closing…
This issue has been resolved. SPARC/config.py line 46 reads serp_cache_ttl_hours = int(os.getenv("SERP_CACHE_TTL_HOURS", "24")). The variable is configurable via environment. Closing as completed.
This issue has been resolved. PR #55 ("fix: auto-download patent PDF in analyze_single_patent") was merged into main. Closing as completed.
This issue has been resolved. SPARC/types.py line 7 shows patent_id: str — the type annotation is already str, not int. Closing as completed.
This issue has been resolved. PR #352 ("feat: add loading skeletons and error states to Batch page") and PR #56 ("feat: add loading skeletons and error retry to Batch and Analytics") were merged…