"""Goal schema 新字段(character_id / type / progress)的序列化与反序列化。""" def test_goal_node_schema_has_new_fields(): from app.schemas.admin import GoalNode node = GoalNode( id="goal_test", title="t", description="d", level="session", status="active", priority=50, constraints=[], success_criteria=[], character_id="char_test", type="mission", progress=0.5, ) assert node.character_id == "char_test" assert node.type == "mission" assert node.progress == 0.5 def test_create_goal_request_accepts_type(): from app.schemas.admin import CreateGoalRequest req = CreateGoalRequest(title="t", level="task", type="exploration", character_id="char_xxx") assert req.type == "exploration" assert req.character_id == "char_xxx" def test_update_goal_request_new_fields(): from app.schemas.admin import UpdateGoalRequest req = UpdateGoalRequest(type="mission", progress=0.5) assert req.type == "mission" assert req.progress == 0.5 def test_update_goal_request_defaults(): from app.schemas.admin import UpdateGoalRequest req = UpdateGoalRequest() # 未设置的新字段应为 None(所有字段可选) assert req.type is None assert req.progress is None