# 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 <JWT>` 포함 시 게이트웨이 인증 통과 확인

## 교훈
- 근본 원인 경로는 예외 폴백이 아니라 호출 경로 차단으로 해결해야 재발을 줄일 수 있다.
- 24 장애 시 검증은 23 임시운영 경로를 기준으로 수행해야 운영 판단과 일치한다.
- 테스트 환경은 `rb8001/tests` + 단일 실행 기준으로 유지해야 검증 혼선을 줄일 수 있다.
