Phase 5-6: API usage tracking + Calendar/Mail/DEVONthink/OmniFocus/News pipeline
- 파이프라인 42→51노드 확장 (calendar/mail/note 핸들러 추가) - 네이티브 서비스 6개: heic_converter(:8090), chat_bridge(:8091), caldav_bridge(:8092), devonthink_bridge(:8093), inbox_processor, news_digest - 분류기 v2→v3: calendar, reminder, mail, note intent 추가 - Mail Processing Pipeline (7노드, IMAP 폴링) - LaunchAgent plist 6개 + manage_services.sh - migrate-v3.sql: news_digest_log + calendar_events 확장 - 개발 문서 현행화 (CLAUDE.md, QUICK_REFERENCE.md, docs/architecture.md) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
56
CLAUDE.md
56
CLAUDE.md
@@ -8,20 +8,29 @@ Synology Chat + n8n + Claude API 기반 RAG 챗봇 시스템.
|
||||
```
|
||||
Synology Chat (NAS 192.168.1.227)
|
||||
↕ 웹훅
|
||||
bot-n8n (맥미니 Docker)
|
||||
bot-n8n (맥미니 Docker) — 51노드 파이프라인
|
||||
│
|
||||
├─⓪ 토큰 검증 + Rate Limit (10초/5건)
|
||||
├─① 규칙 기반 프리필터 (인사/감사 → 하드코딩 local 응답)
|
||||
│
|
||||
├─② GPU Qwen 9B (192.168.1.186) — 분류 v2
|
||||
├─② GPU Qwen 9B (192.168.1.186) — 분류 v3
|
||||
│ 출력: {intent, response_tier, needs_rag, rag_target, ...}
|
||||
│ 타임아웃 10초 → fallback: api_light
|
||||
│
|
||||
├─③ [needs_rag=true] 멀티-컬렉션 RAG
|
||||
├─③ Route by Intent
|
||||
│ ├─ log_event → Qwen 추출 → tk_company 저장
|
||||
│ ├─ report → 현장 리포트 DB 저장
|
||||
│ ├─ calendar → CalDAV Bridge → Synology Calendar
|
||||
│ ├─ reminder → calendar로 통합
|
||||
│ ├─ mail → 메일 요약 조회
|
||||
│ ├─ note → DEVONthink 저장
|
||||
│ └─ fallback → 일반 대화 (RAG + 3단계 라우팅)
|
||||
│
|
||||
├─④ [needs_rag=true] 멀티-컬렉션 RAG
|
||||
│ documents + tk_company + chat_memory
|
||||
│ bge-m3 임베딩 → Qdrant 검색 → reranker → top-3
|
||||
│
|
||||
├─④ response_tier 기반 3단계 라우팅
|
||||
├─⑤ response_tier 기반 3단계 라우팅
|
||||
│ ├─ local → Qwen 9B 직접 답변 (무료)
|
||||
│ ├─ api_light → Claude Haiku (저비용)
|
||||
│ └─ api_heavy → Claude Opus (예산 초과 시 → Haiku 다운그레이드)
|
||||
@@ -29,8 +38,25 @@ bot-n8n (맥미니 Docker)
|
||||
├── bot-postgres (설정/로그/라우팅/분류기로그/API사용량)
|
||||
└── Qdrant (벡터 검색, 3컬렉션)
|
||||
|
||||
⑤ 응답 전송 + chat_logs 저장 + API 사용량 UPSERT
|
||||
⑥ [비동기] 선택적 메모리 (Qwen 판단 → 가치 있으면 벡터화)
|
||||
⑥ 응답 전송 + chat_logs 저장 + API 사용량 UPSERT
|
||||
⑦ [비동기] 선택적 메모리 (Qwen 판단 → 가치 있으면 벡터화 + DEVONthink 저장)
|
||||
|
||||
별도 워크플로우:
|
||||
Mail Processing Pipeline (7노드) — MailPlus IMAP 폴링 → 분류 → mail_logs
|
||||
|
||||
네이티브 서비스 (맥미니):
|
||||
heic_converter (:8090) — HEIC→JPEG 변환 (macOS sips)
|
||||
chat_bridge (:8091) — DSM Chat API 브릿지 (사진 폴링/다운로드)
|
||||
caldav_bridge (:8092) — CalDAV REST 래퍼 (Synology Calendar)
|
||||
devonthink_bridge (:8093) — DEVONthink AppleScript 래퍼
|
||||
inbox_processor (5분) — OmniFocus Inbox 폴링 (LaunchAgent)
|
||||
news_digest (매일 07:00) — 뉴스 번역·요약 (LaunchAgent)
|
||||
|
||||
NAS (192.168.1.227):
|
||||
Synology Chat / Synology Calendar (CalDAV) / MailPlus (IMAP)
|
||||
|
||||
DEVONthink 4 (맥미니):
|
||||
AppleScript 경유 문서 저장·검색
|
||||
```
|
||||
|
||||
## 인프라
|
||||
@@ -40,9 +66,19 @@ bot-n8n (맥미니 Docker)
|
||||
| bot-n8n | Docker (맥미니) | 5678 | 워크플로우 엔진 |
|
||||
| bot-postgres | Docker (맥미니) | 127.0.0.1:15478 | 설정/로그 DB |
|
||||
| Qdrant | Docker (맥미니, 기존) | 127.0.0.1:6333 | 벡터 DB (3컬렉션) |
|
||||
| Ollama (맥미니) | 네이티브 (기존) | 11434 | bge-m3, bge-reranker-v2-m3, minicpm-v:8b(Phase 5) |
|
||||
| Ollama (맥미니) | 네이티브 (기존) | 11434 | bge-m3, bge-reranker-v2-m3 (임베딩/리랭킹 전용) |
|
||||
| Ollama (GPU) | 192.168.1.186 (RTX 4070Ti Super) | 11434 | qwen3.5:9b-q8_0 (분류+local응답) |
|
||||
| Claude Haiku Vision | Anthropic API | — | 사진 분석+구조화 (field_report, log_event) |
|
||||
| heic_converter | 네이티브 (맥미니) | 8090 | HEIC→JPEG 변환 (macOS sips) |
|
||||
| chat_bridge | 네이티브 (맥미니) | 8091 | DSM Chat API 브릿지 (사진 폴링/다운로드) |
|
||||
| caldav_bridge | 네이티브 (맥미니) | 8092 | CalDAV REST 래퍼 (Synology Calendar) |
|
||||
| devonthink_bridge | 네이티브 (맥미니) | 8093 | DEVONthink AppleScript 래퍼 |
|
||||
| inbox_processor | 네이티브 (맥미니) | — | OmniFocus Inbox 폴링 (LaunchAgent, 5분) |
|
||||
| news_digest | 네이티브 (맥미니) | — | 뉴스 번역·요약 (LaunchAgent, 매일 07:00) |
|
||||
| Synology Chat | NAS (192.168.1.227) | — | 사용자 인터페이스 |
|
||||
| Synology Calendar | NAS (192.168.1.227) | CalDAV | 캘린더 서비스 |
|
||||
| MailPlus | NAS (192.168.1.227) | IMAP | 메일 서비스 |
|
||||
| DEVONthink 4 | 네이티브 (맥미니) | — | 문서 저장·검색 (AppleScript) |
|
||||
|
||||
## 3단계 라우팅
|
||||
|
||||
@@ -56,14 +92,14 @@ bot-n8n (맥미니 Docker)
|
||||
|
||||
| 컬렉션 | 용도 |
|
||||
|--------|------|
|
||||
| `documents` | 개인/일반 문서 + 메일 요약 |
|
||||
| `documents` | 개인/일반 문서 + 메일 요약 + 뉴스 요약 |
|
||||
| `tk_company` | TechnicalKorea 회사 문서 + 현장 리포트 |
|
||||
| `chat_memory` | 가치 있는 대화 기억 (선택적 저장) |
|
||||
|
||||
## DB 스키마 (bot-postgres)
|
||||
|
||||
**기존**: `ai_configs`, `routing_rules`, `prompts`, `chat_logs`, `mail_accounts`
|
||||
**신규**: `document_ingestion_log`, `field_reports`, `classification_logs`, `mail_logs`, `calendar_events`, `report_cache`, `api_usage_monthly`
|
||||
**신규**: `document_ingestion_log`, `field_reports`, `classification_logs`, `mail_logs`, `calendar_events` (+caldav_uid, +description, +created_by), `report_cache`, `api_usage_monthly`, `news_digest_log`
|
||||
|
||||
상세 스키마는 [docs/architecture.md](docs/architecture.md) 참조.
|
||||
|
||||
@@ -100,6 +136,8 @@ bot-n8n (맥미니 Docker)
|
||||
- DB 포트는 127.0.0.1로 바인딩 (외부 노출 금지)
|
||||
- 시크릿(API 키 등)은 .env 파일로 관리, git에 포함하지 않음
|
||||
- 커밋 전 docker-compose config로 문법 검증
|
||||
- 네이티브 서비스는 LaunchAgent로 관리 (manage_services.sh)
|
||||
- pip install은 .venv에서 실행
|
||||
- 세션 시작 시 Plan 모드로 계획 → 확정 후 구현
|
||||
- 구현 완료 후 `/verify`로 검증, `/simplify`로 코드 리뷰
|
||||
|
||||
|
||||
Reference in New Issue
Block a user