docling-studio/document-parser/persistence
Pier-Jean Malandrino aa1a195a61 fix(analyses): filter list endpoint by documentId — prevent cross-doc bbox leak
GET /api/analyses?documentId=X retournait toutes les analyses (le query
param était ignoré). Le frontend prenait alors la première COMPLETED de
la réponse, qui pouvait être celle d'un autre doc → bboxes d'un autre
doc projetées sur l'image en cours.

Backend
- analysis_repo: nouvelle méthode find_by_document(document_id, limit, offset)
- analysis_service: expose find_by_document
- api/analyses: GET /api/analyses accepte ?documentId=... (alias Pydantic
  pour respecter la règle ruff N803). Si présent, filtre via la nouvelle
  méthode; sinon comportement inchangé.
- test: test_list_analyses_filtered_by_document vérifie le routing vers
  find_by_document quand le query param est fourni.

Frontend (defensive)
- DocInspectTab / DocAskTab: filtre client-side
  analyses.find(a => a.documentId === requestedId && a.status === 'COMPLETED')
  pour rester safe même si un backend antérieur ignore le param.
2026-05-11 10:05:29 +02:00
..
__init__.py Radical architecture change, migration to a more lightweight 2026-03-17 16:06:27 +01:00
analysis_repo.py fix(analyses): filter list endpoint by documentId — prevent cross-doc bbox leak 2026-05-11 10:05:29 +02:00
chunk_edit_repo.py feat(#205): promote chunks to first-class entities + audit trail 2026-05-05 09:38:39 +02:00
chunk_repo.py feat(#256): add /api/documents/{id}/chunks routes + ChunkService 2026-05-07 11:09:04 +02:00
database.py chore(#206): backfill 0.6.0 doc-centric data model 2026-05-05 09:38:39 +02:00
document_repo.py feat(#202): introduce Document lifecycle state machine 2026-05-05 09:38:39 +02:00
document_store_link_repo.py feat(#203): per (document, store) ingestion state 2026-05-05 09:38:39 +02:00
store_repo.py feat(#251): SqliteStoreRepository — update/delete/find_by_name/clear_default_except 2026-05-05 09:38:39 +02:00