docling-studio/document-parser/tests
Pier-Jean Malandrino 157a779e20 fix(graph): collapse Docling InlineGroup and Picture children (#197)
Two patterns in Docling's serialization were mirrored 1:1 by the graph
projection and produced node explosions on real documents:

- An InlineGroup (paragraph of mixed style runs) emits one `groups[]`
  entry plus N `texts[]` runs. Naive iteration created one Paragraph
  node per run.
- A Picture's `children` carry internal text labels extracted by the
  layout model (flowchart boxes, chart axis labels, diagram callouts).
  Each child became its own Paragraph node, drowning the figure.

`build_collapse_index` (in the shared `infra.docling_tree` helper) now
returns the `skip_refs` set + `inline_meta` overrides for both cases.
The Neo4j `tree_writer` and the in-memory `docling_graph` consume the
same index, so both projections stay in sync.

InlineGroups are projected as a single :Paragraph carrying the
concatenated text and the union of children's provs (re-indexed).
Pictures keep their :Figure node and prov; their descendants are
dropped. Captions live in the picture's separate `captions` field, not
in `children`, so they are unaffected.
2026-04-29 14:00:00 +02:00
..
neo4j fix(graph): collapse Docling InlineGroup and Picture children (#197) 2026-04-29 14:00:00 +02:00
__init__.py Add a stronger testing strategy 2026-03-18 14:46:37 +01:00
test_analysis_service.py feat(chunking): soft-delete chunk with confirmation dialog 2026-04-10 20:28:24 +02:00
test_api_endpoints.py feat(#180): feature-flag ingestion pipeline and add brainless one-liner Quick Start 2026-04-13 11:18:56 +02:00
test_architecture.py feat: add hexagonal architecture tests with pytestarch (#177) 2026-04-29 14:00:00 +02:00
test_bbox.py Move bbox.py from domain/ to infra/ and unify coordinate logic 2026-04-03 13:17:26 +02:00
test_chunking.py feat(reasoning): reasoning-trace viewer v1 with SQLite-backed graph 2026-04-29 14:00:00 +02:00
test_docling_graph.py fix(graph): collapse Docling InlineGroup and Picture children (#197) 2026-04-29 14:00:00 +02:00
test_document_service.py fix(arch): inject repositories and extract domain logic 2026-04-10 11:44:33 +02:00
test_embedding_client.py feat: add embedding microservice and EmbeddingService port 2026-04-10 20:53:24 +02:00
test_graph_api.py feat(reasoning): reasoning-trace viewer v1 with SQLite-backed graph 2026-04-29 14:00:00 +02:00
test_ingestion_api.py feat(#180): feature-flag ingestion pipeline and add brainless one-liner Quick Start 2026-04-13 11:18:56 +02:00
test_ingestion_service.py feat(#78): full-text search in indexed chunks 2026-04-10 22:49:27 +02:00
test_models.py fix(domain): add guard clauses and frozen value objects 2026-04-10 12:04:44 +02:00
test_opensearch_store.py feat(infra): add OpenSearch adapter implementing VectorStore port 2026-04-10 20:48:50 +02:00
test_pipeline_options.py fix(clean-code): English mode strings, SRP extraction, rename getter 2026-04-10 13:45:13 +02:00
test_rate_limiter.py Add in-memory rate limiting middleware 2026-04-03 13:56:05 +02:00
test_reasoning_api.py feat(reasoning): live docling-agent runner + UX polish 2026-04-29 14:00:00 +02:00
test_repos.py feat(reasoning): reasoning-trace viewer v1 with SQLite-backed graph 2026-04-29 14:00:00 +02:00
test_robustness.py fix(clean-code): English mode strings, SRP extraction, rename getter 2026-04-10 13:45:13 +02:00
test_schemas.py Format backend codebase with ruff 2026-04-02 12:33:07 +02:00
test_serve_converter.py feat: enable chunking in remote (Docling Serve) mode 2026-04-29 14:00:00 +02:00
test_settings.py feat(settings): paste-image size/type limits for #195 (#196) 2026-04-29 14:00:00 +02:00
test_vector_schema.py feat(domain): add VectorStore port and SearchResult value object 2026-04-10 20:40:17 +02:00
test_vector_store_port.py feat(domain): add VectorStore port and SearchResult value object 2026-04-10 20:40:17 +02:00