release
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# app/models/vector_models.py
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import List, Optional, Dict, Any
|
||||
|
||||
class VectorBuildRequest(BaseModel):
|
||||
"""Vector DB 구축 요청 모델"""
|
||||
region: str = Field(
|
||||
...,
|
||||
description="지역 (시군구 + 읍면동)",
|
||||
example="서울특별시 강남구 역삼동"
|
||||
)
|
||||
store_name: str = Field(
|
||||
...,
|
||||
description="가게명",
|
||||
example="맛있는 한식당"
|
||||
)
|
||||
force_rebuild: bool = Field(
|
||||
False,
|
||||
description="강제 재구축 여부",
|
||||
example=False
|
||||
)
|
||||
|
||||
class VectorBuildResponse(BaseModel):
|
||||
"""Vector DB 구축 응답 모델"""
|
||||
success: bool = Field(description="구축 성공 여부")
|
||||
message: str = Field(description="응답 메시지")
|
||||
store_info: Dict[str, Any] = Field(description="대상 가게 정보")
|
||||
similar_stores_count: int = Field(description="동종 업체 수")
|
||||
total_reviews_processed: int = Field(description="처리된 총 리뷰 수")
|
||||
vector_db_status: str = Field(description="Vector DB 상태")
|
||||
execution_time: float = Field(description="실행 시간(초)")
|
||||
food_category: str = Field(description="추출된 음식 카테고리")
|
||||
|
||||
class ActionRecommendationRequest(BaseModel):
|
||||
"""액션 추천 요청 모델"""
|
||||
store_id: str = Field(
|
||||
...,
|
||||
description="가게 ID",
|
||||
example="12345"
|
||||
)
|
||||
context: Optional[str] = Field(
|
||||
None,
|
||||
description="추가 컨텍스트",
|
||||
example="매출이 감소하고 있어서 개선 방안이 필요합니다."
|
||||
)
|
||||
|
||||
class ActionRecommendationResponse(BaseModel):
|
||||
"""액션 추천 응답 모델"""
|
||||
success: bool = Field(description="추천 성공 여부")
|
||||
message: str = Field(description="응답 메시지")
|
||||
claude_input: str = Field(description="Claude API에 전달한 프롬프트")
|
||||
claude_response: Optional[str] = Field(None, description="Claude AI 원본 응답")
|
||||
parsed_response: Optional[Dict[str, Any]] = Field(None, description="파싱된 JSON 응답") # 새로 추가
|
||||
store_name: str = Field(description="가게명")
|
||||
food_category: str = Field(description="음식 카테고리")
|
||||
similar_stores_count: int = Field(description="분석된 동종 업체 수")
|
||||
execution_time: Optional[float] = Field(None, description="Claude API 응답 시간(초)")
|
||||
json_parse_success: Optional[bool] = Field(None, description="JSON 파싱 성공 여부") # 새로 추가
|
||||
|
||||
class VectorStoreDocument(BaseModel):
|
||||
"""Vector Store에 저장될 문서 구조"""
|
||||
store_id: str = Field(description="가게 ID")
|
||||
store_name: str = Field(description="가게명")
|
||||
food_category: str = Field(description="음식 카테고리")
|
||||
region: str = Field(description="지역")
|
||||
store_info: Dict[str, Any] = Field(description="가게 정보")
|
||||
reviews: List[Dict[str, Any]] = Field(description="리뷰 목록")
|
||||
review_summary: Dict[str, Any] = Field(description="리뷰 요약 정보")
|
||||
last_updated: str = Field(description="마지막 업데이트 시간")
|
||||
|
||||
class VectorDBStatus(BaseModel):
|
||||
"""Vector DB 상태 정보"""
|
||||
collection_name: str = Field(description="컬렉션명")
|
||||
total_documents: int = Field(description="총 문서 수")
|
||||
total_stores: int = Field(description="총 가게 수")
|
||||
db_path: str = Field(description="DB 경로")
|
||||
last_updated: Optional[str] = Field(None, description="마지막 업데이트 시간")
|
||||
|
||||
class VectorDBStatusResponse(BaseModel):
|
||||
"""Vector DB 상태 조회 응답"""
|
||||
success: bool = Field(description="조회 성공 여부")
|
||||
status: VectorDBStatus = Field(description="DB 상태 정보")
|
||||
message: str = Field(description="응답 메시지")
|
||||
|
||||
Reference in New Issue
Block a user