diff --git a/journey/ideas/260323_skill_slack_입출력_전담_구조_분리_아이디어.md b/journey/ideas/260323_skill_slack_입출력_전담_구조_분리_아이디어.md new file mode 100644 index 0000000..7f84a3d --- /dev/null +++ b/journey/ideas/260323_skill_slack_입출력_전담_구조_분리_아이디어.md @@ -0,0 +1,53 @@ +--- +type: ideas +tags: [ideas, skill-slack, rb8001, gateway, architecture, refactoring] +adopted_by: +--- + +# 260323 skill-slack 입출력 전담 구조 분리 아이디어 + +## 현재 구조 + +rb8001이 Slack SDK(`chat_postMessage`, Block Kit, 이벤트 수신)를 직접 호출하고 있어 입력·판단·출력 경계가 섞여 있다. + +``` +Slack → rb8001(이벤트 수신 + 판단 + 처리 + Slack SDK 직접 호출) → Slack + └─ skill-slack(보조: 콜드메일, 리스트 등 일부 기능) +``` + +## 문제 + +- rb8001에 Slack 프로토콜 코드(Block Kit, 스레드, 파일 업로드)가 섞여 있어 다른 채널(웹, API) 확장 시 분리 어려움 +- skill-slack의 역할이 모호 — 일부 기능만 담당하고 나머지는 rb8001이 직접 처리 +- Block Kit 같은 출력 포맷 개선이 rb8001 코드 수정을 요구 + +## 제안 구조 + +``` +Slack → Gateway → rb8001(판단·처리, CEU 단위체 중심) → skill-slack(입출력 전담) → Slack +``` + +| 컴포넌트 | 역할 | +|----------|------| +| Gateway | 프로토콜 라우팅 (Slack/웹/API → 내부 메시지 표준화) | +| rb8001 | 의도 판단, RAG 검색, LLM 호출, 응답 생성 (채널 무관) | +| skill-slack | Slack 전용 입출력 — 이벤트 수신, Block Kit 포맷, 스레드 관리, 파일 업로드 | + +## 기대 효과 + +- rb8001에서 Slack SDK 의존 제거 → 채널 독립적 코어 +- 출력 포맷(Block Kit, 줄바꿈, 표)을 skill-slack에서 단독 관리 +- 새 채널(웹 대시보드, API) 추가 시 skill-web만 붙이면 됨 + +## 제약 + +- 리팩토링 범위가 크고 현재 RAG 작업과 별개 트랙 +- rb8001의 `slack/message_service.py`, `slack/file_service.py` 등 이동 필요 +- 기존 동작 회귀 테스트 필요 + +## 관련 파일 + +- `rb8001/app/services/slack/message_service.py` +- `rb8001/app/services/slack/file_service.py` +- `robeing/skill-slack/` +- `robeing/robeing-gateway/`