HealthSync_Intelligence/app/dto/response/similar_mission_news_response.py
hyerimmy 910bd902b1
Some checks failed
HealthSync Intelligence CI / build-and-push (push) Has been cancelled
feat : initial commit
2025-06-20 05:28:30 +00:00

53 lines
2.1 KiB
Python

# app/dto/response/similar_mission_news_response.py
"""
HealthSync AI 유사 사용자 미션 완료 소식 응답 DTO
"""
from pydantic import BaseModel, Field
from datetime import datetime
from typing import List
class MissionNewsItem(BaseModel):
"""개별 미션 소식 항목"""
message: str = Field(..., description="미션 완료 소식 메시지")
mission_category: str = Field(..., description="미션 카테고리")
similarity_score: float = Field(..., description="유사도 점수 (0-1)")
completed_at: datetime = Field(..., description="완료 시간")
class Config:
json_encoders = {
datetime: lambda v: v.isoformat()
}
class SimilarMissionNewsResponse(BaseModel):
"""유사 사용자 미션 완료 소식 응답 DTO"""
similar_mission_news: List[MissionNewsItem] = Field(..., description="유사 사용자 미션 소식 목록")
total_count: int = Field(..., description="전체 소식 수")
class Config:
json_schema_extra = {
"example": {
"similar_mission_news": [
{
"message": "IT직군 김OO님이 물마시기 미션을 완료했어요! 💧",
"mission_category": "hydration",
"similarity_score": 0.87,
"completed_at": "2025-06-17T10:30:00.000Z"
},
{
"message": "23세 혈당높은 홍OO님이 산책 3회를 완료했어요! 🚶‍♀️",
"mission_category": "exercise",
"similarity_score": 0.82,
"completed_at": "2025-06-17T09:15:00.000Z"
},
{
"message": "사무직 박OO님이 스트레칭 미션을 달성했어요! 🧘‍♂️",
"mission_category": "stretching",
"similarity_score": 0.79,
"completed_at": "2025-06-17T08:45:00.000Z"
}
],
"total_count": 3
}
}