diff --git a/app/schemas/chat.py b/app/schemas/chat.py index 6701a67..a0fee2d 100644 --- a/app/schemas/chat.py +++ b/app/schemas/chat.py @@ -4,11 +4,11 @@ from pydantic import BaseModel, Field, model_validator - class ChatRequest(BaseModel): session_id: str = Field(min_length=1, max_length=100) question: str - dormitory: Optional[str] = None + dormitory_name: Optional[str] = None + user_id: Optional[int] = Field(default=None, ge=1) class ChatResponse(BaseModel): @@ -16,7 +16,7 @@ class ChatResponse(BaseModel): session_id: str answer: str answer_status: str - source_url: str + response_time: int ChatFeedbackReasonCode = Literal[ diff --git a/app/services/chat_service.py b/app/services/chat_service.py index 6479e22..085883e 100644 --- a/app/services/chat_service.py +++ b/app/services/chat_service.py @@ -113,7 +113,7 @@ def answer_chat_question(db: Session, payload: ChatRequest) -> ChatResponse: room_floor_result = resolve_room_floor_question( normalized_question, - payload.dormitory, + payload.dormitory_name, ) if room_floor_result is not None: @@ -131,13 +131,13 @@ def answer_chat_question(db: Session, payload: ChatRequest) -> ChatResponse: response_time_ms=_elapsed_ms(started_at), ) - if payload.dormitory: + if payload.dormitory_name: return _answer_single_dormitory_chat( db, chat_log_id=chat_log_id, session_id=payload.session_id, question=normalized_question, - dormitory=payload.dormitory, + dormitory=payload.dormitory_name, started_at=started_at, ) @@ -621,7 +621,7 @@ def _finalize_chat_log( session_id=session_id, answer=answer, answer_status=answer_status.value, - source_url=source_url, + response_time=response_time_ms, ) @@ -879,6 +879,20 @@ def _should_pre_expand_query(question: str) -> bool: if any(trigger in compact_question for trigger in cooking_triggers): return True + + + smoking_triggers = [ + "담배", + "흡연", + "담배필", + "담배피", + "담배펴", + "흡연구역", + "흡연장", +] + + if any(trigger in compact_question for trigger in smoking_triggers): + return True return False diff --git a/app/services/query_rewriter.py b/app/services/query_rewriter.py index aab4fc7..3d77bf4 100644 --- a/app/services/query_rewriter.py +++ b/app/services/query_rewriter.py @@ -57,7 +57,7 @@ def expand_query_for_retrieval( 12.사용자가 "먹을 거", "간단하게 먹을 곳", "먹을거 해결", "사먹을 곳"처럼 식사/간식 해결 장소를 물으면 학생식당, 학식, 편의점, 매점, 배달음식 수령 키워드를 함께 포함해라. 13.사용자가 전자레인지, 음식 데우기, 데워먹기, 휴게실 전자레인지 위치를 물으면 휴게실, 공용시설, 전자레인지, 음식 데우기, 정수기, 싱크대 키워드를 포함해라. 14.사용자가 방에서 라면을 먹어도 되는지, 라면을 끓여 먹어도 되는지, 조리, 취사, 라면포트, 전기포트, 전열기구 사용 가능 여부를 물으면 반입금지 물품, 취사행위, 전열기구, 라면포트, 전기포트, 조리 금지, 화재위험 키워드를 포함해라. - +15. 사용자가 담배, 흡연, 담배 피울 곳, 담배 필 수 있는 곳, 흡연 가능한 장소를 물으면 흡연구역, 흡연장, 지정 흡연구역, 흡연 가능 장소, 금연구역 키워드를 포함해라. 예시: 사용자 질문: 새벽 2시에 들어가도 돼? 검색용 질의: 새벽 2시에 들어가도 돼? 검색 키워드: 폐문시간, 개문시간, 출입통제, 출입 가능 시간, 생활관 이용안내, 오전 1시, 오전 5시 @@ -89,6 +89,9 @@ def expand_query_for_retrieval( 사용자 질문: 음식 데워먹을 수 있어? 검색용 질의: 음식 데워먹을 수 있어? 검색 키워드: 휴게실, 공용시설, 전자레인지, 음식 데우기, 편의시설 +사용자 질문: 담배 필 수 있는 곳 알아? +검색용 질의: 담배 필 수 있는 곳 알아? 검색 키워드: 흡연구역, 흡연장, 지정 흡연구역, 흡연 가능 장소, 금연구역 + 사용자 생활관: {dormitory_text}