11 Commits

Author SHA1 Message Date
Hyungi Ahn 3517581eda feat(nanoclaude): Tier 2 문서 전문 분석 (analyze) + 층별 답변 구조
- document_tool.analyze(): /content 엔드포인트로 전문 로드
- worker.py: render_mode=analyze → Gemma 스트리밍 분석
- 프롬프트: [근거] [해설] [사례] [요약] 층 구조
- _pre_route: 문서 ID(3755번, #3755) + 분석 키워드 감지
- registry: analyze operation 허용

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 09:37:41 +09:00
Hyungi Ahn 36f9fad0af feat(nanoclaude): document.ask + search_full 통합
- document_tool.py: ask() (/api/search/ask 35초 timeout, citation 포맷,
  refused 시 검색 결과 fallback) + search_full() (rerank+analyze 포함)
- registry.py: ALLOWED_OPS에 ask, search_full 추가
- worker.py: 질문/탐색 점수 기반 분기 (ask 강신호 2개 이상),
  document.ask 전용 35초 timeout, render_mode="final" 시 EXAONE 스킵

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 14:59:27 +09:00
Hyungi Ahn 03e3df058f feat(infra): docker_restart 쓰기 도구 추가
보호 컨테이너(home-caddy, home-fail2ban, nanoclaude) 재시작 차단.
MCP 11개 도구 + NanoClaude wrapper.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 15:06:40 +09:00
Hyungi Ahn d47c04317c feat(infra): Phase 1.5 진단 도구 3개 + trace 정리
scheduler_status, queue_status, run_verify 추가.
MCP 10개 도구 + NanoClaude wrapper + pre-route 키워드.
worker.py trace print 제거.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 14:27:19 +09:00
Hyungi Ahn ff3c6f5903 fix(nanoclaude): infra status — exited 컨테이너가 있어도 데이터 반환
ok=False(일부 컨테이너 exited)와 error_type(SSH 실패)를 구분.
컨테이너 목록은 항상 반환되도록 수정.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 14:04:19 +09:00
Hyungi Ahn c7e44646fd feat(nanoclaude): Phase 3 infra intent — 시놀로지 Chat에서 서버 관리
EXAONE classifier에 infra 도구 5개 추가 (status, health, disk, network, models).
infra_tool.py가 infra.core/ 호출 → NanoClaude 반환 형식으로 변환.
"GPU 상태 알려줘" → tools: infra.status("gpu") → 구조화된 결과.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 13:24:02 +09:00
Hyungi Ahn 37c5616735 feat: 이메일 폴더 필터링 — 테크니컬코리아/Gmail/개인 지정 가능
"테크니컬코리아 메일만" → Technicalkorea 폴더만 검색
"구글 메일" → Gmail만, "개인 메일" → INBOX만
폴더 미지정 시 전체 검색 유지

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 14:49:54 +09:00
Hyungi Ahn 12ca8f19d9 fix: 이메일 멀티 폴더 조회 + Synology 무응답 방지
- email_tool: INBOX/Gmail/Technicalkorea 3개 폴더 순회
  - 폴더별 try/except isolation (하나 실패해도 나머지 조회)
  - UID → folder:uid 형식 (폴더간 충돌 방지)
  - 날짜 parsedate_to_datetime 정렬
  - 폴더 라벨 표시 (개인/Gmail/회사)
- worker: response_sent 플래그 + finally 무응답 방지
  - 어떤 에러 경로에서든 Synology에 최소 1회 응답 보장

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 14:38:35 +09:00
Hyungi Ahn f73c46de3a fix: 캘린더 종료 시간(end_time) 지원 — 1시간 고정 제거
create_draft/create_confirmed에 end_time 파라미터 추가.
없으면 기본 1시간, 있으면 사용자 지정 종료 시간 사용.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 14:12:07 +09:00
Hyungi Ahn 0b260eec5e fix: vobject 의존성 추가 + calendar 파싱 icalendar fallback
CalDAV 3.x에서 vobject 분리됨 → 이벤트 파싱 실패 원인.
vobject 설치 + icalendar fallback 파싱 추가.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 13:50:44 +09:00
Hyungi Ahn 6e24da56a4 feat: 이드 도구 확장 — 캘린더/메일/문서 연동 (read-only + 캘린더 생성 확인)
- tools/calendar_tool.py: CalDAV search/today/create_draft/create_confirmed
- tools/email_tool.py: IMAP search/read (전송 비활성화)
- tools/document_tool.py: Document Server search/read (read-only)
- tools/registry.py: 도구 디스패처 + WRITE_OPS 안전장치 + 에러 표준화
- 분류기: "tools" 액션 추가, 도구 목록/파라미터 스키마/규칙 명시
- Worker: tools 분기 + tool timeout 10초 + payload 2000자 제한
- conversation: pending_draft (TTL 5분) + create 확인 플로우
- 현재 시간을 분류기에 전달 (날짜 질문 대응)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 13:39:15 +09:00