from pydantic import BaseModel, Field from datetime import datetime from typing import Optional class AncestorDeathCreate(BaseModel): name: str = Field(..., description="선조의 이름") generation: int = Field(..., description="선조의 세대 수") cause_of_death: str = Field(..., description="사망 원인 (예: 가시 함정, 화염 슬라임 등)") floor: int = Field(..., description="사망한 던전 층수") class DeathRecordRequest(BaseModel): cause_of_death: str = Field(..., description="사망 원인 (누구에게 죽었는지)") class AncestorDeathResponse(BaseModel): id: int name: str generation: int cause_of_death: str floor: int created_at: datetime class Config: from_attributes = True class DialogueRequest(BaseModel): current_generation: int = Field(..., description="현재 플레이어의 세대") class DialogueResponse(BaseModel): dialogue: str = Field(..., description="늙은 문지기 NPC의 맞춤형 조언 대사") class SkillCreateRequest(BaseModel): prompt: str = Field(..., description="스킬 생성을 위한 플레이어 텍스트 입력") player_level: int = Field(default=1, description="플레이어의 레벨 (스탯 밸런싱 기준)") class SkillCreateResponse(BaseModel): skill_name: str = Field(..., description="생성된 스킬의 이름") scale: float = Field(..., description="스킬 크기 (수치)") damage: float = Field(..., description="스킬 데미지 (수치)") speed: float = Field(..., description="스킬 투사체 속도 또는 발동 속도 (수치)") visual_effect: str = Field(..., description="유니티 이펙트 종류 (예: fire, ice, electric, physical, poison 등)") skill_type: str = Field(..., description="스킬 형태 (예: projectile, splash, buff, aura 등)") description: str = Field(..., description="스킬 설명")