Files
syn-chat-bot/docs/PROGRESS.md
Hyungi Ahn 782caf5130 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>
2026-03-19 14:12:38 +09:00

7.0 KiB

Progress — syn-chat-bot

최종 업데이트: 2026-03-19

Phase별 구현 현황

Phase 1-3: RAG v2 초기 셋업 (커밋 6e6ffaa, 2026-03-11)

  • 3단계 모델 라우팅 (local / api_light / api_heavy)
  • 멀티-컬렉션 RAG (documents, tk_company, chat_memory)
  • Qwen 9B 분류기 v2 → v3 (intent, response_tier, needs_rag, rag_target)
  • 프리필터 (인사/감사 정규식 → GPU 미호출)
  • 선택적 메모리 (Qwen 판단 → 가치 있으면 벡터화)
  • bot-postgres 12테이블, Qdrant 3컬렉션
  • 페르소나 "이드" (전체/경량 프롬프트)
  • 안전장치: 토큰 검증, Rate Limit, 예산 상한, 분류기 fallback

Phase 4-5: 회사 문서 + 현장 리포팅 + 보고서 (커밋 f42096f, 2026-03-11)

  • /문서등록 명령어 — 청킹 → tk_company 벡터 저장 (hash 중복/버전 관리)
  • 현장 리포트 — 사진+텍스트 → Claude Haiku Vision → 구조화 → field_reports + tk_company
  • /보고서 명령어 — 월간 보고서 생성 (report_cache)
  • heic_converter.py — HEIC→JPEG 변환 (macOS sips)
  • chat_bridge.py — DSM Chat API 브릿지 (사진 폴링/다운로드/HEIC 자동변환)
  • API 사용량 추적 (api_usage_monthly UPSERT)

n8n Task Runner 샌드박스 대응 (커밋 f7cccc9, 2026-03-11)

  • n8n v2.11+ Code 노드 VM 샌드박스 대응
  • fetch()/$http.request()require('http')/require('https') 패턴 전환
  • NODE_FUNCTION_ALLOW_BUILTIN=crypto,http,https,url 설정

Phase 5-6: Calendar/Mail/OmniFocus/News (커밋 612933c, 2026-03-14)

  • 분류기 v3: calendar, reminder, mail, note intent 추가
  • caldav_bridge.py (:8092) — CalDAV REST 래퍼 (Synology Calendar CRUD)
  • inbox_processor.py — OmniFocus Inbox 폴링 (LaunchAgent, 5분 간격)
  • news_digest.py — RSS 뉴스 번역·요약 (LaunchAgent, 매일 07:00)
  • Mail Processing Pipeline (7노드) — IMAP 폴링 → Qwen 분류 → mail_logs
  • 메인 파이프라인 51노드로 확장 (calendar/mail/note 핸들러)

DEVONthink 제거 + 모닝 브리핑 (2026-03-19)

  • DEVONthink 의존성 제거 → kb_writer로 전환 (news_digest, inbox_processor, mail pipeline)
  • devonthink_bridge.py 삭제 (macOS AppleScript 의존성 제거)
  • morning_briefing.py — 모닝 브리핑 (LaunchAgent, 매일 07:30)
    • 일정(CalDAV), 메일(mail_logs), 보고(field_reports), 뉴스(Karakeep) → Synology Chat
  • migrate-v5.sql — news_digest_log에 kb_path 컬럼 추가

파일 인벤토리

Python 서비스 (6개)

파일 포트/실행 역할
caldav_bridge.py :8092 CalDAV REST 래퍼
chat_bridge.py :8091 DSM Chat API 브릿지
heic_converter.py :8090 HEIC→JPEG 변환
inbox_processor.py LaunchAgent 5분 OmniFocus Inbox 폴링
news_digest.py LaunchAgent 07:00 뉴스 번역·요약
morning_briefing.py LaunchAgent 07:30 모닝 브리핑

LaunchAgent plist (6개)

파일 서비스
com.syn-chat-bot.caldav-bridge.plist caldav_bridge
com.syn-chat-bot.chat-bridge.plist chat_bridge
com.syn-chat-bot.heic-converter.plist heic_converter
com.syn-chat-bot.inbox-processor.plist inbox_processor
com.syn-chat-bot.news-digest.plist news_digest
com.syn-chat-bot.morning-briefing.plist morning_briefing

n8n 워크플로우 (2개)

파일 노드수 역할
main-chat-pipeline.json 51 메인 채팅 파이프라인
mail-processing-pipeline.json 7 메일 처리 파이프라인

SQL (3개, 618줄)

파일 역할
init/init.sql 초기 스키마 (5테이블)
init/migrate-v2.sql v2 마이그레이션 (7테이블 추가)
init/migrate-v3.sql v3 마이그레이션 (calendar_events 확장)
init/migrate-v5.sql v5 마이그레이션 (DEVONthink→kb_writer 전환)

기타

파일 역할
docker-compose.yml bot-n8n + bot-postgres 컨테이너
manage_services.sh LaunchAgent 일괄 관리
start-bridge.sh 브릿지 서비스 시작 스크립트
init/setup-qdrant.sh Qdrant 3컬렉션 초기화
.env.example 환경 변수 템플릿

서비스 기동 전 수동 설정 가이드

맥북프로(또는 새 환경)에서 처음 기동할 때 필요한 설정.

1. 사전 요구사항

# Homebrew
brew install python@3.14

# Python 가상환경
python3 -m venv .venv
source .venv/bin/activate
pip install caldav aiohttp

# Docker Desktop 설치 및 실행

2. NAS 설정 (192.168.1.227)

  • Synology Chat: Outgoing Webhook 생성 → URL: http://<맥IP>:5678/webhook/chat
  • Synology Calendar: chatbot 캘린더 생성 + CalDAV 접근용 계정
  • MailPlus: IMAP 접근용 계정 설정
  • DSM Chat API: chatbot-api 계정 생성 (사진 폴링용)

3. macOS 앱 설정

  • OmniFocus: 설치 + Inbox 사용 설정
  • Ollama (맥미니): ollama pull bge-m3 && ollama pull bge-reranker-v2-m3

4. GPU 서버 (192.168.1.186)

  • Ollama 설치 + ollama pull id-9b:latest (이드 특화 모델, 기존 qwen3.5:9b-q8_0은 레거시 백업)
  • 포트 11434 개방

5. 환경 변수

cp .env.example .env
# .env 파일의 모든 changeme / xxxxx 값을 실제 값으로 교체

6. Docker 기동 + DB 마이그레이션

docker compose up -d

# 초기 DB 설정
docker exec -i bot-postgres psql -U bot chatbot < init/init.sql
docker exec -i bot-postgres psql -U bot chatbot < init/migrate-v2.sql
docker exec -i bot-postgres psql -U bot chatbot < init/migrate-v3.sql

# Qdrant 컬렉션 초기화
bash init/setup-qdrant.sh

7. LaunchAgent 등록

# plist 파일 내 경로를 현재 환경에 맞게 수정
# (WorkingDirectory, ProgramArguments의 Python/스크립트 경로)

cp com.syn-chat-bot.*.plist ~/Library/LaunchAgents/
bash manage_services.sh load

8. n8n 워크플로우 임포트

  1. http://localhost:5678 접속
  2. Settings → Import → n8n/workflows/main-chat-pipeline.json
  3. Settings → Import → n8n/workflows/mail-processing-pipeline.json
  4. 워크플로우 내 Credential 재설정 (PostgreSQL, HTTP Header Auth 등)
  5. 워크플로우 활성화

9. 검증

# 브릿지 서비스 헬스체크
curl http://localhost:8090/health   # heic_converter
curl http://localhost:8091/health   # chat_bridge
curl http://localhost:8092/health   # caldav_bridge

# Docker 상태
docker compose ps

# DB 연결
docker exec bot-postgres psql -U bot chatbot -c '\dt'

다음 단계 (Phase 7+)

  • 전체 서비스 통합 테스트 (Synology Chat → n8n → 각 브릿지)
  • 분류기 v3 정확도 튜닝 (classification_logs 분석)
  • 비용 모니터링 대시보드 (api_usage_monthly 기반)
  • SLA 트래킹 스케줄 워크플로우 + 긴급 에스컬레이션
  • CalDAV 양방향 동기화
  • 메일 발송 (SMTP via MailPlus)
  • reminder 실구현 (알림 시간에 Synology Chat 푸시)
  • 모닝 브리핑 고도화 (주간 요약, 커스텀 섹션)