Closing as already correct. SPARC/types.py defines patent_id: str -- the type annotation is already str, not int.
Closing as already documented. README.md contains a dedicated 'Patent PDF Storage' section explaining the volume mount requirement (./patents:/app/patents), persistence behavior, and…
Closing as already implemented. SPARC/config.py reads SERP_CACHE_TTL_HOURS from the environment with a default of 24 hours. Documented in .env.example.
Closing as already implemented. SPARC/config.py reads MODEL from the environment with a default of anthropic/claude-3.5-sonnet. The frontend exposes a model picker UI. Documented in…
Closing as already implemented. All modules (analyzer.py, serp_api.py, llm.py, storage.py, scheduler.py, webhooks.py) use logging.getLogger(__name__) with structured logging. No…
Closing as already implemented. tests/test_auth.py contains comprehensive JWT auth integration tests covering registration (first user admin, subsequent user role, duplicates), login (valid/inval…
Closing as already implemented. SPARC/api.py uses slowapi with @limiter.limit() decorators on /auth/register (5/min) and /auth/login (10/min). A custom 429 handler returns proper error…
Closing as already implemented. Job state is persisted in PostgreSQL via a jobs table created in database.py. The API stores, updates, and queries job state from the database. Stale jobs are…
Closing as already implemented. SPARC/database.py uses psycopg2.pool.ThreadedConnectionPool with configurable min/max connections and a context manager that checks out and returns connections…
Closing as already resolved. docker-compose.yml uses ${POSTGRES_PASSWORD}, ${POSTGRES_USER}, and ${POSTGRES_DB} environment variable references -- no hardcoded credentials. Users set…