피드로 돌아가기
Dev.toBackend
원문 읽기
Web Chat을 First-class Channel로 통합하여 상태 불일치 해결
"My Web Chat Wasn't a Real Channel. That Broke My Agent Pipeline"
AI 요약
Context
Web Chat을 단순 UI 페이지로 취급하여 별도의 In-memory Store를 운영함에 따른 도메인 모델 분리 발생. 이로 인해 Chat UI와 Message Service 간의 데이터 불일치로 conversation_not_found 에러 및 알림 누락 현상 초래.
Technical Solution
- 별도 운영하던
chat-ui/conversation-store.js인스턴스를 제거하고 시스템 전체가 공유하는 Singleton Store로 단일화 installChatUiHelpers함수를 통해 공통 Store에 Web Chat 전용 헬퍼 로직을 주입하는 구조로 변경- Web Chat 세션 생성 시
CONVERSATION_ASSISTANT_CONTROL_MODE.ASSISTANT설정을 강제하여 모든 채널의 Orchestration 경로를 통일 - UI 편의를 위한 Custom State를 제거하고 Telegram, Feishu 등 타 채널과 동일한 Conversation Identity 모델 적용
- 개별 헬퍼 메서드 테스트 대신 Assistant-mode 동작 및 Persistence 세맨틱 중심의 통합 테스트 체계 구축
실천 포인트
- 멀티 채널 시스템 설계 시 브라우저 UI를 특수 케이스가 아닌 하나의 독립된 Channel로 모델링했는지 확인 - 동일한 도메인 데이터를 다루는 서로 다른 In-memory Store가 공존하여 Single Source of Truth 원칙을 위배하는지 검토 - 채널별 진입 경로(Entry Point)가 서로 다른 비즈니스 로직을 타지 않고 동일한 Orchestration Pipeline을 공유하는지 검증