[verified] round-trip S5 exam layout fields
This commit is contained in:
+28
-1
@@ -60,6 +60,11 @@ class QuestionPayload(BaseModel):
|
||||
# Drawn Part box geometry (73-exam-marker-regions.sql). Null for derived main questions.
|
||||
bounds: Optional[Dict[str, Any]] = None # {x,y,w,h}
|
||||
page: Optional[int] = None
|
||||
# S5 AI/manual seam + provenance. Existing manual rows default to authoritative.
|
||||
source: Literal["manual", "ai"] = "manual"
|
||||
confirmed: bool = True
|
||||
confidence: Optional[float] = Field(default=None, ge=0, le=1)
|
||||
derivation: Optional[str] = None
|
||||
|
||||
|
||||
class ResponseAreaPayload(BaseModel):
|
||||
@@ -77,7 +82,10 @@ class ResponseAreaPayload(BaseModel):
|
||||
context_type: Optional[str] = None
|
||||
source: Literal["manual", "ai"] = "manual"
|
||||
confirmed: bool = True
|
||||
confidence: Optional[float] = None
|
||||
confidence: Optional[float] = Field(default=None, ge=0, le=1)
|
||||
# Only meaningful for kind='mark_area': part_marks|question_total|grader_box.
|
||||
mark_subtype: Optional[Literal["part_marks", "question_total", "grader_box"]] = None
|
||||
derivation: Optional[str] = None
|
||||
|
||||
|
||||
class BoundaryPayload(BaseModel):
|
||||
@@ -89,6 +97,24 @@ class BoundaryPayload(BaseModel):
|
||||
bounds: Optional[Dict[str, Any]] = None
|
||||
source: Literal["manual", "ai"] = "manual"
|
||||
confirmed: bool = True
|
||||
confidence: Optional[float] = Field(default=None, ge=0, le=1)
|
||||
derivation: Optional[str] = None
|
||||
|
||||
|
||||
class TemplateLayoutPayload(BaseModel):
|
||||
id: Optional[str] = None
|
||||
page_index: int
|
||||
role: Optional[str] = None
|
||||
margin_left: Optional[float] = None
|
||||
margin_right: Optional[float] = None
|
||||
margin_top: Optional[float] = None
|
||||
margin_bottom: Optional[float] = None
|
||||
margins_enabled: bool = True
|
||||
source: Literal["manual", "ai"] = "manual"
|
||||
confirmed: bool = True
|
||||
confidence: Optional[float] = Field(default=None, ge=0, le=1)
|
||||
derivation: Optional[str] = None
|
||||
meta: Dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class TemplateReplaceRequest(BaseModel):
|
||||
@@ -97,6 +123,7 @@ class TemplateReplaceRequest(BaseModel):
|
||||
questions: List[QuestionPayload] = Field(default_factory=list)
|
||||
response_areas: List[ResponseAreaPayload] = Field(default_factory=list)
|
||||
boundaries: List[BoundaryPayload] = Field(default_factory=list)
|
||||
layout: List[TemplateLayoutPayload] = Field(default_factory=list)
|
||||
|
||||
|
||||
class PatchQuestionRequest(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user