docling-studio/document-parser
Pier-Jean Malandrino ef80e22342 feat(#256): add /api/documents/{id}/chunks routes + ChunkService
The frontend was wired against /api/documents/{id}/chunks/* (canonical
doc-centric chunkset) but the backend never exposed those routes — the
chunk tab in the doc workspace 404'd. The domain entities (Chunk,
ChunkEdit, ChunkPush) and persistence repos already existed since #205;
what was missing was the service + API layer that connects them.

ChunkService owns all canonical chunkset invariants (sequence ordering,
soft-delete + audit log atomicity) and shares the chunker port with
AnalysisService so chunking strategy stays a single implementation.

AnalysisService grew a duck-typed promoter hook that copies the chunks
of the first successful analysis into the canonical chunkset. The hook
is idempotent so subsequent ad-hoc analyses (Studio / OCR Debug) never
overwrite hand-edited state.

Routes added (all additive, /api/documents prefix):
  GET    /{id}/chunks
  POST   /{id}/chunks
  PATCH  /{id}/chunks/{chunkId}
  DELETE /{id}/chunks/{chunkId}
  POST   /{id}/chunks/{chunkId}/split
  POST   /{id}/chunks/merge
  POST   /{id}/rechunk
  GET    /{id}/tree
  GET    /{id}/diff?store=...
  POST   /{id}/chunks/push
2026-05-11 15:00:57 +02:00
..
api feat(#256): add /api/documents/{id}/chunks routes + ChunkService 2026-05-11 15:00:57 +02:00
domain feat(#256): add /api/documents/{id}/chunks routes + ChunkService 2026-05-11 15:00:57 +02:00
infra feat(#210): feature-flag mode gating + deep-link redirect 2026-05-05 09:38:39 +02:00
persistence feat(#256): add /api/documents/{id}/chunks routes + ChunkService 2026-05-11 15:00:57 +02:00
services feat(#256): add /api/documents/{id}/chunks routes + ChunkService 2026-05-11 15:00:57 +02:00
tests feat(#256): add /api/documents/{id}/chunks routes + ChunkService 2026-05-11 15:00:57 +02:00
tools chore(#206): backfill 0.6.0 doc-centric data model 2026-05-05 09:38:39 +02:00
.dockerignore Work on full Docker integration 2026-03-17 13:33:36 +01:00
conftest.py Format backend codebase with ruff 2026-04-02 12:33:07 +02:00
Dockerfile Fix RapidOCR model download permission in local image 2026-04-03 10:44:20 +02:00
main.py feat(#256): add /api/documents/{id}/chunks routes + ChunkService 2026-05-11 15:00:57 +02:00
package-lock.json Add slide on side bar in Studio mode 2026-03-20 16:24:38 +01:00
pyproject.toml Add qualityt check and contributing doc 2026-03-21 15:34:54 +01:00
pytest.ini Add a stronger testing strategy 2026-03-18 14:46:37 +01:00
requirements-local.txt Move bbox.py from domain/ to infra/ and unify coordinate logic 2026-04-03 13:17:26 +02:00
requirements-test.txt feat: add hexagonal architecture tests with pytestarch (#177) 2026-04-29 14:00:00 +02:00
requirements.txt refactor(audit): remediate 0.5.0 audit findings — clean architecture, security, DRY, SOLID, perf 2026-04-29 14:00:00 +02:00