import uuid from datetime import datetime from typing import Optional from pydantic import ConfigDict from common.enums import FactStatus, SourceType from common.models.gmodel import Res_WebPacketProtocol, WebPacketProtocol class FaqProtocol(WebPacketProtocol): pass class Req_CreateFaq(FaqProtocol): """사장님이 직접 쓴 FAQ.""" question: str = "" answer: str = "" sort_order: Optional[int] = None # 미지정이면 기존 FAQ 뒤에 붙인다 class Req_TransitionFaq(FaqProtocol): """검증 상태 전이.""" status: FactStatus = FactStatus.VERIFIED question: Optional[str] = None answer: Optional[str] = None class FaqData(WebPacketProtocol): model_config = ConfigDict(from_attributes=True) faq_id: uuid.UUID place_id: uuid.UUID question: str answer: str # 근거 목록. source_fact_ids: Optional[list[str]] = None generated_by: SourceType status: FactStatus sort_order: int = 0 created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class Res_FaqList(Res_WebPacketProtocol): faqs: list[FaqData] = [] # 사이트에 나갈 수 있는 건수(VERIFIED·CORRECTED). publishable: int = 0 # 승인 대기 건수 — 관리 화면의 '검토할 것' 배지. pending_review: int = 0 class Res_Faq(Res_WebPacketProtocol): faq: Optional[FaqData] = None