52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
from pydantic import BaseModel, Field, PositiveInt
|
|
|
|
|
|
class PictureAsset(BaseModel):
|
|
id: str = Field(min_length=1)
|
|
name: str = Field(min_length=1)
|
|
image_path: str = Field(min_length=1)
|
|
|
|
|
|
class AddendGroup(BaseModel):
|
|
quantity: PositiveInt
|
|
description: str = Field(min_length=1)
|
|
|
|
|
|
class FigureGroup(BaseModel):
|
|
quantity: PositiveInt
|
|
description: str = Field(min_length=1)
|
|
picture: PictureAsset
|
|
|
|
|
|
class ImageOption(BaseModel):
|
|
position: PositiveInt
|
|
quantity: PositiveInt
|
|
first_group: FigureGroup
|
|
second_group: FigureGroup
|
|
is_correct: bool
|
|
has_answer_box: bool = True
|
|
|
|
|
|
class SumWithImageReferenceProblem(BaseModel):
|
|
question: str
|
|
instructions: str = "Escoge la imagen en la próxima página."
|
|
first_group: AddendGroup
|
|
second_group: AddendGroup
|
|
common_object: str = Field(min_length=1)
|
|
total: PositiveInt
|
|
options: list[ImageOption]
|
|
|
|
|
|
class SumWithImageReferenceRequest(BaseModel):
|
|
first_quantity: PositiveInt
|
|
second_quantity: PositiveInt
|
|
first_description: str = Field(min_length=1)
|
|
second_description: str = Field(min_length=1)
|
|
common_object: str = Field(min_length=1)
|
|
first_picture: PictureAsset
|
|
second_picture: PictureAsset
|
|
option_count: PositiveInt = 3
|
|
min_option_quantity: PositiveInt = 1
|
|
max_option_quantity: PositiveInt = 20
|
|
seed: int | None = None
|