Block a user
Replace print() calls with structured logging in analyzer.py, serp_api.py, and llm.py
Already Resolved
This issue is already implemented on main:
- Zero
print()calls remain inanalyzer.py,serp_api.py, orllm.py config.pyconfigureslogging.basicConfig()with…
Commit a frontend lockfile (package-lock.json or pnpm-lock.yaml) for reproducible builds
Commit a frontend lockfile (package-lock.json or pnpm-lock.yaml) for reproducible builds
Already Resolved
This issue is already implemented on main:
frontend/package-lock.jsonis committed (165KB)- CI uses
npm ciintest.yaml(line 41) for frozen lockfile installs
All…
Fix Patent.patent_id type annotation from int to str in types.py
Fix Patent.patent_id type annotation from int to str in types.py
Already Resolved
This issue is already implemented on main:
analyzer.pyanalyze_single_patent()(lines 109-159) checks if PDF exists on disk (line 133)- If not, it looks up the…
Fix analyze_single_patent to download PDF before attempting local file read
Already Resolved
This issue is already implemented on main:
types.pyline 7:patent_id: str-- already typed asstr, notint
Closing as complete.
Fix analyze_single_patent to download PDF before attempting local file read
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
Already Resolved
This issue is already implemented on main:
config.pyreadsSERP_CACHE_TTL_HOURSenv var with default 24 (line 46)analyzer.pypassesconfig.serp_cache_ttl_hours…
Make LLM model configurable via MODEL environment variable
Make LLM model configurable via MODEL environment variable
Already Resolved
This issue is already implemented on main:
config.pyreadsMODELenv var with defaultanthropic/claude-3.5-sonnet(line 43)llm.pyusesconfig.model(line…
Add rate limiting middleware to auth endpoints to prevent brute-force attacks
Add rate limiting middleware to auth endpoints to prevent brute-force attacks
Already Resolved
This issue is already implemented on main:
api.pyusesslowapi.Limiterwithget_remote_addresskey function (line 212)/auth/registerhas `@limiter.limit("5/minu…
Refactor get_db_client() in auth.py to use a shared pooled DatabaseClient
Refactor get_db_client() in auth.py to use a shared pooled DatabaseClient
Already Resolved
This issue is already implemented on main:
auth.pyhas a module-level_db_clientsingleton (line 150)init_db_client()initializes it once at startup (line…
Replace hardcoded database credentials in docker-compose.yml with .env file reference
Replace hardcoded database credentials in docker-compose.yml with .env file reference
Already Resolved
This issue is already implemented on main:
docker-compose.ymluses${POSTGRES_USER},${POSTGRES_PASSWORD},${POSTGRES_DB}variable interpolation throughout -…
Make CORS allowed origins configurable via environment variable
Make CORS allowed origins configurable via environment variable
Already Resolved
This issue is already implemented on main:
config.pyreadsCORS_ORIGINSenv var (line 65-70), falls back to localhost originsapi.pypassesconfig.cors_origins…
Add startup check to refuse default JWT secret in non-development environments