feat: DEVONthink 제거 + 모닝 브리핑 추가

- DEVONthink 의존성 제거 → kb_writer 전환 (news_digest, inbox_processor, mail pipeline)
- devonthink_bridge.py, plist 삭제
- morning_briefing.py 신규 (매일 07:30, 일정·메일·보고·뉴스 → Synology Chat)
- intent_service.py 분류기 프롬프트 개선 + 키워드 fallback
- migrate-v5.sql (news_digest_log kb_path 컬럼)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-03-19 14:12:38 +09:00
parent fd8925637d
commit 782caf5130
15 changed files with 479 additions and 240 deletions

View File

@@ -30,7 +30,7 @@
│ ├─ calendar → CalDAV Bridge → Synology Calendar │
│ ├─ reminder → calendar로 통합 처리 │
│ ├─ mail → 메일 요약 조회 (mail_logs) │
│ ├─ note → DEVONthink Bridge → 문서 저장
│ ├─ note → KB Writer → 문서 저장
│ └─ fallback → 일반 대화 (RAG + 3단계 라우팅) │
│ │
│ ④ [needs_rag=true] 멀티-컬렉션 RAG 검색 │
@@ -43,7 +43,7 @@
│ └─ api_heavy → 예산 체크 → Claude Opus (or 다운그레이드) │
│ │
│ ⑥ 응답 전송 + chat_logs + api_usage_monthly │
│ ⑦ [비동기] Qwen 메모리 판단 → 가치 있으면 벡터화 + DEVONthink
│ ⑦ [비동기] Qwen 메모리 판단 → 가치 있으면 벡터화 + KB 저장
│ └─ classification_logs 기록 │
└──┬──────────┬───────────┬───────────┬──────────────────────┘
│ │ │ │
@@ -77,25 +77,20 @@
│ caldav_bridge.py (:8092) │
│ └─ CalDAV REST 래퍼 (Synology Calendar CRUD) │
│ │
│ devonthink_bridge.py (:8093) │
│ └─ DEVONthink AppleScript 래퍼 (문서 저장·검색) │
│ │
│ inbox_processor.py (LaunchAgent, 5분) │
│ └─ OmniFocus Inbox 폴링 → Qwen 분류 → 자동 정리 │
│ │
│ news_digest.py (LaunchAgent, 매일 07:00) │
│ └─ RSS 뉴스 수집 → Qwen 번역·요약 → Qdrant + Synology Chat│
│ │
│ morning_briefing.py (LaunchAgent, 매일 07:30) │
│ └─ 일정·메일·보고·뉴스 → 요약 → Synology Chat 전송 │
└────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────┐
│ NAS 서비스 (192.168.1.227) │
│ Synology Chat / Calendar (CalDAV) / MailPlus │
└────────────────────────────────────────────────┘
┌────────────────────────────────────────────────┐
│ DEVONthink 4 (맥미니) │
│ AppleScript 경유 문서 저장·검색 │
└────────────────────────────────────────────────┘
```
## 3단계 라우팅 상세
@@ -131,7 +126,7 @@
- `calendar` — CalDAV Bridge로 일정 생성/조회 (Synology Calendar)
- `reminder` — calendar로 통합 (알림 시간 포함 일정 생성)
- `mail` — mail_logs에서 최근 메일 요약 조회
- `note`DEVONthink Bridge로 문서 저장
- `note`KB Writer로 문서 저장
```
### 프리필터 → 분류기 → 모델 라우팅 흐름
@@ -342,7 +337,7 @@ Webhook POST /chat
│ ├─ calendar → [Handle Calendar] → CalDAV Bridge → 확인응답
│ ├─ reminder → [Handle Calendar] (calendar로 통합)
│ ├─ mail → [Handle Mail] → mail_logs 조회 → 요약응답
│ ├─ note → [Handle Note] → DEVONthink Bridge → 확인응답
│ ├─ note → [Handle Note] → KB Writer → 확인응답
│ └─ fallback → [Needs RAG?]
├─ needs_rag=true
@@ -364,7 +359,7 @@ Webhook POST /chat
▼ [비동기]
[Memorization Check] → [Should Memorize?]
├─ true → [Embed & Save Memory] + [DEVONthink 저장]
├─ true → [Embed & Save Memory] + [KB 저장]
└─ false → (끝)
```
@@ -413,10 +408,9 @@ Webhook POST /chat
- API 사용량 추적 (api_usage_monthly UPSERT)
- HEIC→JPEG 변환 (heic_converter.py) + chat_bridge.py (DSM Chat API 브릿지)
### Phase 6: 캘린더·메일·DEVONthink·OmniFocus·뉴스
### Phase 6: 캘린더·메일·OmniFocus·뉴스
- 분류기 v3: calendar, reminder, mail, note intent 추가
- caldav_bridge.py: CalDAV REST 래퍼 (Synology Calendar CRUD)
- devonthink_bridge.py: DEVONthink AppleScript 래퍼
- inbox_processor.py: OmniFocus Inbox 폴링 (LaunchAgent, 5분)
- news_digest.py: 뉴스 번역·요약 (LaunchAgent, 매일 07:00)
- Mail Processing Pipeline (7노드): IMAP 폴링 → 분류 → mail_logs
@@ -428,4 +422,4 @@ Webhook POST /chat
- CalDAV 양방향 동기화 (Synology Calendar → bot-postgres)
- 메일 발송 (SMTP via MailPlus)
- reminder 실구현 (알림 시간에 Synology Chat 푸시)
- DEVONthink 검색 결과 RAG 연동
- 모닝 브리핑 고도화 (주간 요약, 커스텀 섹션)