feat(rag): lite-model document summaries — non-markdown docs summarized at import, summary chunk retrieves and resolves to the full source doc
This commit is contained in:
@@ -61,11 +61,31 @@ def test_import_fixtures_end_to_end(admin_client, db) -> None:
|
||||
k8s = next(d for d in docs if d.path == "homelab/kubernetes.md")
|
||||
assert "Talos Linux" in k8s.content and k8s.content_hash
|
||||
|
||||
# Phase 30: the four non-markdown fixtures each gained one embedded
|
||||
# ``is_summary`` chunk, so the DB holds content + summary chunks.
|
||||
n_chunks = db.scalar(select(func.count()).select_from(Chunk))
|
||||
assert n_chunks == summary.chunks
|
||||
assert n_chunks == summary.chunks + summary.summaries
|
||||
for c in db.scalars(select(Chunk)).all():
|
||||
assert c.embedding is not None and len(c.embedding) == 768
|
||||
|
||||
assert summary.summary_errors == 0
|
||||
for d in docs:
|
||||
non_md = Path(d.path).suffix.lower() not in (".md", ".markdown")
|
||||
schunks = [c for c in d.chunks if c.is_summary]
|
||||
if non_md:
|
||||
# Lite summary stored + exactly one embedded summary chunk (−1).
|
||||
assert d.summary is not None, f"{d.path} should have a summary"
|
||||
assert len(schunks) == 1
|
||||
assert schunks[0].position == -1
|
||||
assert schunks[0].content == d.summary
|
||||
assert schunks[0].embedding is not None
|
||||
else:
|
||||
# Markdown docs never get a summary (phase 30 scope).
|
||||
assert d.summary is None and not schunks
|
||||
assert summary.summaries == sum(
|
||||
1 for d in docs if Path(d.path).suffix.lower() not in (".md", ".markdown")
|
||||
)
|
||||
|
||||
# The Sources page consumes exactly this shape.
|
||||
r = admin_client.get("/api/docs") # phase 16: the catalog is admin-only
|
||||
assert r.status_code == 200
|
||||
|
||||
Reference in New Issue
Block a user