feat(exam): persist S4-9 region kinds + Part geometry; keep metadata out of graph
api-ci-deploy / test-build-deploy (push) Has been cancelled
api-ci-deploy / test-build-deploy (push) Has been cancelled
Backend follow-on to migration 73: - schemas: ResponseAreaPayload.kind extended to response|context|question_number| mark_area|reference|furniture + context_type; QuestionPayload gains bounds+page. - PUT serialization persists Part bounds/page and region context_type. - Neo4j projection only emits Region nodes for response/context regions; the metadata kinds (question_number/mark_area/reference/furniture) are physical-layer only and stay out of cc.public.exams. - Unit test: new kinds + Part geometry + context_type round-trip. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
93972a62f7
commit
9c1aee28e2
@@ -138,7 +138,12 @@ def project_template(template_id: str) -> Dict[str, Any]:
|
||||
counts["assesses"] += (r["n"] if r else 0)
|
||||
|
||||
# 6. Region nodes + HAS_REGION edges.
|
||||
# Only response/context regions are part of the knowledge graph (RegionNode.kind). The other
|
||||
# S4-9 kinds (question_number, mark_area, reference, furniture) are physical-layer metadata
|
||||
# about the paper, not curriculum structure — they stay in Supabase, out of cc.public.exams.
|
||||
for rg in regions:
|
||||
if rg.get("kind") not in ("response", "context"):
|
||||
continue
|
||||
s.run(
|
||||
"MERGE (r:Region {uuid_string:$uid}) "
|
||||
"SET r.exam_code=$ec, r.page=$page, r.kind=$kind, r.response_form=$rf, r.node_storage_path=$nsp",
|
||||
|
||||
Reference in New Issue
Block a user