# rb8001 의도재진입루프 차단 및 23 임시배포 완료 **날짜**: 2026-03-05 **작성자**: Codex **관련 파일**: `robeing/rb8001/app/services/brain/intent_graph.py:33-49`, `robeing/rb8001/app/services/brain/intent_langgraph_workflow.py:49-64`, `robeing/rb8001/docker-compose.yml:68-70`, `robeing/rb8001/tests/test_intent_workflow_no_reentry.py:10-80` --- ## 문제 상황 - 51124 먹통 원인으로 확정된 의도분류 재진입 경로가 존재했다. - 경로: `detect_with_workflow() -> classify_intent_node() -> detect()` 재호출. - 운영 상태는 24 장애로 23 임시운영 중이었다. ## 해결 방안 - `intent_graph.py:33-49` - `detect()`에 `workflow_internal_call` 가드를 추가. - 내부 호출 시 `detect_with_workflow()` 진입을 차단하고 `_detect_traditional()`로 고정. - `intent_langgraph_workflow.py:49-64` - `classify_intent_node()`에서 `IntentGraph.detect(..., workflow_internal_call=True)`로 호출. - `docker-compose.yml:68-70` - 운영 기본값을 안전 모드로 조정. - `INTENT_USE_LANGGRAPH=${INTENT_USE_LANGGRAPH:-false}` - `INTENT_ENGINE=${INTENT_ENGINE:-v1}` - `tests/test_intent_workflow_no_reentry.py:10-80` - 재진입 차단 회귀 테스트 2건 추가. ## 구현 완료 - 커밋: `e9dcd1d` (`fix(intent): block langgraph reentry loop and add regression test`) - 푸시: `origin/main` 반영 완료 - 23 임시운영 배포: `docker compose down && docker compose up -d --build` 완료 ## 검증 - 테스트: - `cd /home/admin/robeing/rb8001 && PYTHONPATH=. pytest -q tests/test_intent_workflow_no_reentry.py` - 결과: `2 passed` - 서비스 상태: - `rb8001` 포함 로빙 컨테이너 `healthy` - 컨테이너 내부 `/health` 응답 정상 - 실도메인 인증 호출: - `Authorization: Bearer ` 포함 시 게이트웨이 인증 통과 확인 ## 교훈 - 근본 원인 경로는 예외 폴백이 아니라 호출 경로 차단으로 해결해야 재발을 줄일 수 있다. - 24 장애 시 검증은 23 임시운영 경로를 기준으로 수행해야 운영 판단과 일치한다. - 테스트 환경은 `rb8001/tests` + 단일 실행 기준으로 유지해야 검증 혼선을 줄일 수 있다.