from app.schemas.grade_1.subtract_with_image_reference import ( FigureGroup, PictureAsset, SubtractWithImageReferenceProblem, SubtractionEquation, ) def subtract_with_image_reference( object_name: str, initial_quantity: int, removed_quantity: int, figure: dict, actor_name: str = "Diego", ) -> dict: """Generate a subtraction story problem with remaining and removed groups.""" if removed_quantity > initial_quantity: raise ValueError("removed_quantity must be less than or equal to initial_quantity") selected_figure = PictureAsset.model_validate(figure) remaining_quantity = initial_quantity - removed_quantity question = ( f"Hay {initial_quantity} {object_name}. " f"{actor_name} sacó {removed_quantity} {object_name}. " f"¿Cuántos {object_name} quedan?" ) problem = SubtractWithImageReferenceProblem( question=question, object_name=object_name, actor_name=actor_name, figure=selected_figure, remaining_group=FigureGroup( label="quedan", quantity=remaining_quantity, picture=selected_figure, ), subtracted_group=FigureGroup( label="sacó", quantity=removed_quantity, picture=selected_figure, ), equation=SubtractionEquation( initial_quantity=initial_quantity, removed_quantity=removed_quantity, remaining_quantity=remaining_quantity, ), ) return problem.model_dump()