# 자연어 제어 에외 처리 및 상태 확인 기능 구현 계획 사용자 피드백을 반영하여, 지원하지 않는 색상(검은색, 보라색 등)에 대한 오작동을 방지하고 "현재 상태를 알려줘"와 같은 단순 조회성 질의에 똑똑하게 대답할 수 있도록 백엔드 로직을 개선합니다. ## ⚠️ User Review Required (검토 및 확인 필요) > [!IMPORTANT] > 1. **상태 확인 결과 포맷**: "상태 알려줘"라는 질문이 오면 다음과 같이 응답하려고 합니다. > `[상태 확인] 'CNC 선반 1호기'의 현재 LED 상태는 다음과 같습니다.` > `- 빨간색(RED): 꺼짐` > `- 노란색(YELLOW): 꺼짐` > `- 초록색(GREEN): 켜짐` > 이러한 출력 형태가 괜찮으신지 확인 부탁드립니다. > 2. **미지원 색상 차단**: 빨강, 노랑, 초록 이외의 색상(흰색, 검은색 등)을 요청하면 `지원하지 않는 색상입니다. (빨간색, 노란색, 초록색만 제어 가능)` 이라고 명확히 안내하며 제어를 거부하도록 수정합니다. ## 🛠️ Proposed Changes (제안하는 코드 변경 사항) ### `backend/main.py` 수정 * **[MODIFY] 프롬프트 (`get_control_prompt`)**: * LLM에게 `action` 의 종류로 `ON`, `OFF` 외에 **`STATUS` (상태 확인)** 와 **`UNKNOWN` (알 수 없음)** 을 추가로 학습시킵니다. * 색상 종류에도 `UNKNOWN`을 추가하여, 허튼소리를 하면 `UNKNOWN`을 뱉도록 유도합니다. * **[MODIFY] 예외 처리 로직 (`chat_control`)**: * 파싱된 `color` 또는 `action`이 `UNKNOWN`인 경우 (또는 유효한 색상 문자열이 없는 경우) 즉각 에러 메시지를 반환하고 DB 제어를 건너뜁니다. * **[MODIFY] 상태 확인 로직 (`chat_control` 내 분기 추가)**: * 장비 매핑 성공 후 현재 상태(`value_ch1`, `value_ch2`, `value_ch3`)를 읽어오는 부분까지는 동일하게 진행합니다. * 만약 `action == "STATUS"` 인 경우, 타겟값을 덮어씌우는 제어 로직을 타지 않고, 곧바로 현재 상태값을 한글로 번역하여 `return` 해버리도록 분기문을 추가합니다. ## ✅ Verification Plan (검증 계획) * API에 `{"message": "CNC 선반 1호기 상태 알려줘"}` 전송 시, 상태값 텍스트가 잘 오는지 확인합니다. * API에 `{"message": "보라색 켜줘"}` 전송 시, 제어가 무시되고 "지원하지 않는 색상" 안내가 나오는지 확인합니다.