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. 사전 요구사항
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. 환경 변수
6. Docker 기동 + DB 마이그레이션
7. LaunchAgent 등록
8. n8n 워크플로우 임포트
http://localhost:5678 접속
- Settings → Import →
n8n/workflows/main-chat-pipeline.json
- Settings → Import →
n8n/workflows/mail-processing-pipeline.json
- 워크플로우 내 Credential 재설정 (PostgreSQL, HTTP Header Auth 등)
- 워크플로우 활성화
9. 검증
다음 단계 (Phase 7+)