Block a user
Add loading and error states to Batch and Analytics pages
Integrate PDF download step into analyze_single_patent or document the prerequisite clearly
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
Fix Patent.patent_id type annotation from int to str
Make LLM model configurable via MODEL environment variable
Replace print() calls with structured logging in analyzer.py, serp_api.py, and llm.py
Add loading and error states to Batch and Analytics pages
Triage: Already Implemented
Loading and error states are implemented on main:
- Analytics page (
frontend/src/pages/Analytics.tsx): UsesisLoadingandisErrorfromuseQueryto…
Commit a frontend lockfile (package-lock.json or pnpm-lock.yaml) for reproducible builds
Triage: Already Implemented
frontend/package-lock.json is committed on main. The CI workflow uses npm ci for reproducible installs.
Closing as completed.
Fix Patent.patent_id type annotation from int to str
Triage: Already Implemented
The type annotation is correct on main:
SPARC/types.pyline 7:patent_id: str
Closing as completed.
Integrate PDF download step into analyze_single_patent or document the prerequisite clearly
Triage: Already Implemented
PDF auto-download is integrated into analyze_single_patent on main:
SPARC/analyzer.pyanalyze_single_patent()checks if the PDF exists on disk, and if…
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
Triage: Already Implemented
The SERP cache TTL env var is implemented on main:
SPARC/config.pyline 46:serp_cache_ttl_hours = int(os.getenv("SERP_CACHE_TTL_HOURS", "24"))
Closing as…
Make LLM model configurable via MODEL environment variable
Triage: Already Implemented
The MODEL env var is implemented on main:
SPARC/config.pyline 43:model = os.getenv("MODEL", "anthropic/claude-3.5-sonnet")- The API supports per-request…
Replace print() calls with structured logging in analyzer.py, serp_api.py, and llm.py
Triage: Already Implemented
Structured logging is fully implemented on main:
- Zero
print()calls remain inanalyzer.py,serp_api.py, orllm.py. SPARC/config.pyconfigures…
Add JWT authentication tests: registration, login, protected routes, token refresh, admin endpoints
Add rate limiting to /auth/login and /auth/register endpoints
Persist job state in PostgreSQL so batch results survive API restarts
Refactor get_db_client() in auth.py to use a shared connection pool
Add JWT authentication tests: registration, login, protected routes, token refresh, admin endpoints
Triage: Already Implemented
JWT authentication tests exist on main:
tests/test_auth.pycovers registration, login, protected routes, token refresh, and admin endpoints with mocked…
Add rate limiting to /auth/login and /auth/register endpoints
Triage: Already Implemented
Rate limiting is fully implemented on main:
SPARC/api.pycreates aslowapi.Limiterinstance (line 212) withget_remote_addressas the key function. -…
Persist job state in PostgreSQL so batch results survive API restarts
Triage: Already Implemented
Job persistence in PostgreSQL is fully implemented on main:
SPARC/database.pyhascreate_job(),update_job(),get_job(),list_jobs(), and `mark_stale_…