fix(07): add status field to _doc_to_dict + regression test

DocumentCard classification_failed badge requires doc.status from the
API list endpoint. _doc_to_dict was omitting the field; this fix adds
it and adds a regression test that would have caught the omission.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
curo1305
2026-06-05 09:30:03 +02:00
co-authored by Claude Sonnet 4.6
parent 3b11b9a596
commit 76ebc3e96e
2 changed files with 28 additions and 0 deletions
+1
View File
@@ -61,6 +61,7 @@ def _doc_to_dict(doc: Document, topic_names: list) -> dict:
"topics": topic_names, "topics": topic_names,
"created_at": doc.created_at.isoformat() if doc.created_at else None, "created_at": doc.created_at.isoformat() if doc.created_at else None,
"classified_at": doc.updated_at.isoformat() if doc.status == "classified" else None, "classified_at": doc.updated_at.isoformat() if doc.status == "classified" else None,
"status": doc.status,
} }
+27
View File
@@ -79,6 +79,33 @@ async def test_list_documents_filter_by_topic(async_client, auth_user, db_sessio
assert resp2.json()["total"] == 0 assert resp2.json()["total"] == 0
async def test_list_documents_includes_status(async_client, auth_user, db_session):
"""GET /api/documents items must include a 'status' field (regression: _doc_to_dict omitted it)."""
import uuid as _uuid
from db.models import Document
doc_id = _uuid.uuid4()
doc = Document(
id=doc_id,
user_id=auth_user["user"].id,
filename="status_test.txt",
content_type="text/plain",
size_bytes=50,
storage_backend="minio",
status="classification_failed",
object_key=f"{auth_user['user'].id}/{doc_id}/{_uuid.uuid4()}.txt",
)
db_session.add(doc)
await db_session.commit()
resp = await async_client.get("/api/documents", headers=auth_user["headers"])
assert resp.status_code == 200
items = resp.json()["items"]
assert len(items) == 1
assert "status" in items[0], "status field missing from document list item"
assert items[0]["status"] == "classification_failed"
async def test_get_document(async_client, auth_user, db_session): async def test_get_document(async_client, auth_user, db_session):
"""GET /api/documents/{id} returns metadata for an existing document.""" """GET /api/documents/{id} returns metadata for an existing document."""
import uuid as _uuid import uuid as _uuid