MMCL/backend/14. 자연어 제어 에외 처리 및 상태 확인 기능 구현.txt
2026-09-04 11:24:42 +09:00

31 lines
2.4 KiB
Plaintext

# 자연어 제어 에외 처리 및 상태 확인 기능 구현 계획
사용자 피드백을 반영하여, 지원하지 않는 색상(검은색, 보라색 등)에 대한 오작동을 방지하고 "현재 상태를 알려줘"와 같은 단순 조회성 질의에 똑똑하게 대답할 수 있도록 백엔드 로직을 개선합니다.
## ⚠️ 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": "보라색 켜줘"}` 전송 시, 제어가 무시되고 "지원하지 않는 색상" 안내가 나오는지 확인합니다.