Block a user
Add pytest test job to Gitea Actions CI workflow
Resolution: Already implemented.
build.yaml:testjob runspytest tests/ -v --tb=short -x(line 53). Thebuild-apiandbuild-frontendjobs both haveneeds: test, so a test…
Add pytest test job to Gitea Actions CI workflow
Commit a frontend lockfile to ensure reproducible builds
Resolution: Already implemented.
frontend/package-lock.jsonis committed to the repository.- Both CI workflows (
build.yamlline 42,test.yamlline 41) usenpm ciwhich strictly…
Commit a frontend lockfile to ensure reproducible builds
Add loading states and error messages to Batch and Analytics pages
Resolution: Already implemented.
- Batch page (
Batch.tsx): Loading skeleton shown whenjobsQuery.isLoading(line 295). Error state with retry button whenjobsQuery.isError(lines…
Add loading states and error messages to Batch and Analytics pages
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
Resolution: Already implemented.
types.pyline 7:patent_id: str-- the field is correctly typed asstr.- No code paths convert
patent_idtoint.
All acceptance criteria are…
Fix analyze_single_patent to download PDF before reading from disk
Fix analyze_single_patent to download PDF before reading from disk
Resolution: Already implemented.
analyzer.pylines 131-149:analyze_single_patent()checksos.path.exists(patent_path). If not found, looks updb.get_cached_patent(patent_id)for a…
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
Resolution: Already implemented.
config.pyline 46:serp_cache_ttl_hours = int(os.getenv("SERP_CACHE_TTL_HOURS", "24"))analyzer.pyline 73:ttl_hours=config.serp_cache_ttl_hours…
Make LLM model configurable via MODEL environment variable
Resolution: Already implemented.
config.pyline 43:model = os.getenv("MODEL", "anthropic/claude-3.5-sonnet")llm.pyline 28:self.model = config.model(reads from config at…
Make LLM model configurable via MODEL environment variable
Replace print() calls with structured logging in analyzer.py, serp_api.py, and llm.py
Replace print() calls with structured logging in analyzer.py, serp_api.py, and llm.py
Resolution: Already implemented.
analyzer.py:logger = logging.getLogger(__name__)at module level, all output useslogger.info/warning/error.serp_api.py: `logger = logging.getLog…
Add JWT authentication tests covering full auth flow
Add JWT authentication tests covering full auth flow
Resolution: Already implemented.
tests/test_auth.pycovers all required scenarios:- Registration: first user becomes admin, subsequent users get user role, duplicate email returns…
Add rate limiting to /auth/login and /auth/register endpoints
Resolution: Already implemented.
api.pylines 211-224:slowapi.Limiterwithget_remote_addresskey function. Custom 429 handler returnsRetry-Afterheader./auth/register(line…
Add rate limiting to /auth/login and /auth/register endpoints