DOCS/journey/troubleshooting/260305_rb8001_의도재진입루프_차단_및_23임시배포_완료.md

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-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 + 단일 실행 기준으로 유지해야 검증 혼선을 줄일 수 있다.