diff --git a/routers/exam/schemas.py b/routers/exam/schemas.py index 099de21..9b2e502 100644 --- a/routers/exam/schemas.py +++ b/routers/exam/schemas.py @@ -80,6 +80,9 @@ class ResponseAreaPayload(BaseModel): ] = None # Optional Context differentiation (v1 generic; future graph/chart/data_table/diagram/code_block/passage). context_type: Optional[str] = None + # Rich recognition payload (75-exam-marker-region-meta.sql): figure name/description, OMR geometry, unit… + # Carried on canvas save so a named context figure survives a round-trip. + meta: Optional[Dict[str, Any]] = None source: Literal["manual", "ai"] = "manual" confirmed: bool = True confidence: Optional[float] = Field(default=None, ge=0, le=1) diff --git a/routers/exam/templates.py b/routers/exam/templates.py index 66d0fb8..c4b6d66 100644 --- a/routers/exam/templates.py +++ b/routers/exam/templates.py @@ -1143,6 +1143,7 @@ async def replace_template( "kind": ra.kind, "response_form": ra.response_form, "context_type": ra.context_type, # 73: optional Context differentiation + "meta": ra.meta, # 75: rich recognition payload (name/description/OMR/…) "source": ra.source, "confirmed": ra.confirmed, "confidence": ra.confidence,