# Robeing n8n Workflows

로빙의 분산 마이크로서비스 및 비즈니스 로직을 n8n으로 자동화하기 위한 템플릿 저장소입니다.

## 폴더 구조

- `01_conversation/`: Slack 진입점, 대화 정규화, 콜드메일 IR 알림 및 액션 추출
- `02_skills/`: `skill-*` 서비스 브리지 (Email, News, Calendar, Slack)
- `03_rag/`: 파일 업로드, 인덱싱, 임베딩, Company X 전용 Grounding 파이프라인
- `04_scheduler/`: 정기 브리핑, 상태 알림, 재시도 로직
- `05_admin/`: 서비스 헬스 체크, 일기(Reflection) 자동 생성 및 동기화

## 시스템 구성 및 엔드포인트

| 서버 | 역할 | IP | 주요 포트 |
|------|------|----|-----------|
| 51123 | 메인/인증/DB | 192.168.0.100 | Gateway(8100), Auth(9000), DB(5432) |
| 51124 | 로빙/스킬 | 192.168.219.52 | rb8001(8001), Email(8501), News(8505), RAG(8508), Calendar(8512) |

## 주요 워크플로우 가이드

### 1. 로빙 일기 시스템 (`05_admin/diary_reflection_pipeline.json`)
- 매일 오전 2시, `rb8001`의 하루 활동과 감정을 집계하여 일기를 생성합니다.
- 생성된 요약본을 Slack 관리자 채널로 전송합니다.

### 2. 콜드메일 IR 분석 (`01_conversation/coldmail_ir_notification_sync.json`)
- 네이버웍스 등을 통해 수신된 콜드메일을 감지하고, IR Deck(PDF) 존재 여부를 판별합니다.
- IR 자료가 있을 경우 Slack에 분석 버튼을 노출하여 원클릭으로 지표 추출을 실행합니다.

### 3. 서비스 헬스 모니터 (`05_admin/service_health_check.json`)
- 10분 간격으로 모든 마이크로서비스의 `/health` 또는 `/healthz`를 체크합니다.
- 장애 발생 시 Slack 알림을 통해 즉각적인 대응을 지원합니다.

### 4. 캘린더 스킬 브리지 (`02_skills/skill_calendar_request.json`)
- 구글 캘린더 연동을 위한 브리지 워크플로우입니다.
- 일정 조회, 등록, 삭제 요청을 `skill-calendar` 서비스로 전달합니다.

### 5. GitHub 스킬 브리지 (`02_skills/github_service_request.json`)
- GitHub 분석/관리/git 실행 의도를 하나의 서비스 계약으로 정규화합니다.
- `github_analyze`, `github_manage`, `git_ops` intent와 `risk_level`, `requires_confirmation` 슬롯을 받아 안전 정책에 따라 실행 또는 확인 요청으로 분기합니다.

### 6. RAG 워크플로우 인덱스 (`03_rag/README.md`)
- Company X 내부 문서를 로빙이 읽고 답변하도록 만드는 RAG 흐름의 진입점입니다.
- 업로드, 검색, Grounding, 임베딩 브리지의 역할을 분리해서 봅니다.
- 세부 절차는 각 흐름 문서에서 확인합니다.

## n8n import 후 수동 설정 가이드

JSON을 n8n에 import하면 **credential과 일부 파라미터가 비어있습니다.** n8n은 credential을 암호화 DB에 저장하므로 JSON export/import에 포함되지 않습니다.

### Slack Credential 설정 (9개 워크플로우 공통)

1. n8n UI → Settings → Credentials → **Slack API** 추가
2. 필요한 값:
   - **Bot User OAuth Token**: `xoxb-...` (Slack App → OAuth & Permissions)
   - **Signing Secret**: Slack App → Basic Information → Signing Secret
3. 각 Slack 노드(Trigger, Reply, Send)에서 이 credential 선택

### Slack App 설정 (Slack 관리자)

1. [api.slack.com/apps](https://api.slack.com/apps) → 앱 선택
2. **Event Subscriptions**: Request URL에 n8n webhook URL 입력
3. **Subscribe to bot events**: `app_mention`, `message.channels`, `message.im`
4. **OAuth & Permissions** → Bot Token Scopes: `chat:write`, `channels:history`, `app_mentions:read`, `im:history`

### IP 주소

- 현재 템플릿은 내부 IP(`192.168.219.*`)를 기본값으로 사용합니다. 환경이 다를 경우 일괄 변경이 필요합니다.

### 채널 ID

- Slack 노드에 설정된 `channelId`는 예시 값이므로, 실제 알림을 받을 채널 ID로 수정하십시오.

### 주의사항

- credential은 환경 이동 시 매번 재설정 필요
- webhook URL은 n8n 인스턴스마다 다르게 생성됨
- Slack Trigger의 `Trigger On` 이벤트 유형도 수동 선택 필요

---

## 변경 이력

### 260319 — rb8001 대화 응답 경로 변경 (n8n JSON 변경 없음)

`01_conversation/slack_basic_dialogue.json`이 호출하는 rb8001 내부 동작이 변경됨.

| 변경 | 내용 | 영향 |
|------|------|------|
| 시스템 프롬프트 | DB에서 v3 활성화 (간결 응답 원칙) | 응답 톤 변화: 짧고 직접적 |
| 대화 이력 전달 | `recent_conversations` → `previous_messages` 변환 추가 | 직전 대화 맥락 유지 |
| 감정 constraints | neutral 감정에서 생략 | 불필요한 응답 늘림 방지 |
| 프롬프트 DB 폐루프 | DB 활성 프롬프트가 응답 생성 전 주입 | 코드 배포 없이 프롬프트 변경 가능 |

n8n 워크플로우 JSON 수정은 없음. rb8001 commit: `6123063`, `2bda17f`.
상세: [응답 품질 워크로그](journey/worklog/260319_rb8001_응답품질_톤과장_문맥유실_수정_및_검증완료.md), [프롬프트 DB 워크로그](journey/worklog/260319_프롬프트DB_폐루프_P1_구현_및_검증완료.md)

---
**최근 업데이트**: 2026-03-19
**상태**: 16개 워크플로우 반영 완료 (기존 12개 + 신규 4개)
