2.2 KiB
2.2 KiB
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-49detect()에workflow_internal_call가드를 추가.- 내부 호출 시
detect_with_workflow()진입을 차단하고_detect_traditional()로 고정.
intent_langgraph_workflow.py:49-64classify_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+ 단일 실행 기준으로 유지해야 검증 혼선을 줄일 수 있다.