diff --git a/ROADMAP.md b/ROADMAP.md index 5b177d9..0e86ab5 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -81,57 +81,50 @@ Items that have been implemented and merged into main. - ~~OpenAPI client generation.~~ TypeScript API client auto-generated from FastAPI spec with CI freshness check. +### Resilience + +- ~~`_jobs` dict is in-memory only.~~ Database-backed job persistence + implemented using `db.list_jobs()` and `mark_stale_jobs_failed()`. The + in-memory `_jobs` dict has been removed. + +### Test coverage (P1/P2) + +- ~~Export endpoint tests.~~ Tests added for CSV and PDF export endpoints. +- ~~Tracked company admin endpoint tests.~~ Tests added for `/admin/tracked` + CRUD endpoints and scheduler integration. +- ~~Webhook integration tests.~~ Tests added for retry logic, Slack/Discord + payload format, and multi-URL dispatch. +- ~~S3/MinIO storage backend tests.~~ Unit tests added for the S3 backend + (read, write, exists, delete, error handling). +- ~~`analyze_single_patent` auto-download path tests.~~ Tests added for the + auto-download fallback (cache lookup, PDF download, FileNotFoundError). + +### Code quality + +- ~~Scheduler creates its own DatabaseClient.~~ Refactored to use the + application-level pooled `get_db_client()`. + --- ## P1 -- High Priority -These items address correctness, reliability, and coverage gaps that should be -resolved before broader production use. - -### Resilience - -- **`_jobs` dict is in-memory only.** Job state is lost on API restart. - Persist job status in PostgreSQL or Redis so async batch results survive - restarts. - -### Test coverage gaps - -- **Export endpoint tests.** The CSV and PDF export endpoints (`/export/`) - lack test coverage. Add tests covering auth, success, 404, and edge cases. - *(Issue #1655)* -- **Tracked company admin endpoint tests.** The `/admin/tracked` CRUD - endpoints and scheduler integration lack test coverage. *(Issue #1656)* +No outstanding P1 items. All previously listed items have been completed and +moved to the Completed section above. --- ## P2 -- Medium Priority -Improvements to reliability, test coverage, and code quality. - -### Test coverage - -- **Webhook integration tests.** The retry logic, Slack/Discord payload - format, and multi-URL dispatch in `webhooks.py` need test coverage. - *(Issue #1657)* -- **S3/MinIO storage backend tests.** `storage.py` has local filesystem tests - but no unit tests for the S3 backend (read, write, exists, delete, - error handling). *(Issue #1660)* -- **`analyze_single_patent` auto-download path tests.** The auto-download - fallback (cache lookup, PDF download, FileNotFoundError) in - `analyzer.py` lacks test coverage. *(Issue #1661)* - -### Code quality - -- **Scheduler creates its own DatabaseClient.** `scheduler.py` bypasses the - application-level pooled client, creating a new connection on every tick. - Refactor to use `get_db_client()`. *(Issue #1658)* +Improvements to the API surface. ### API improvements -- **API pagination.** The `/analyze/batch` and `/jobs` endpoints could benefit - from cursor-based pagination for large result sets. +- **API pagination.** The `/analyze/batch` endpoint needs cursor-based + pagination for large result sets. The `/jobs` endpoint already has cursor + pagination. *(Issue #1669)* - **Request validation improvements.** Add stricter input validation for company names (disallow special characters, enforce length limits). + *(Issue #1670)* ---