2 Commits (10fcaec08085dd6d94c317b4ee2c714eab4cab19)

Author SHA1 Message Date
I Luk Kim 9db9ed7242 feat(mail): 집중/기타 분류·아리 정리(비서 다이제스트)·실폴더 + 버그 수정
- 집중/기타: Gmail 기본(primary)+Outlook focused=집중, 프로모션/소셜/업데이트+
  Outlook other=기타. 사이드바 실폴더 미러·받은편지함 탭(집중/기타 안읽음 카운트)
- 아리 정리: 기준 시각 이후 '도착한' 새 메일 기준(읽음 여부 무관 — 폰서 먼저 읽어도
  정리). LLM 배치 분석으로 할 일·일정·답장 카드화. baseline 응답 count
- 버그 수정: ① 처음 보는 폴더 클릭 시 트리 닫힘 → useMail keepPreviousData
  ② 12:28 도착 메일이 아리 정리에 안 뜸(read=1) → 도착 기준으로 전환
  ③ 기타 안읽음 미표시 → MailAccountOut.others + 탭 카운트
- HTML 본문 렌더(MailHtmlBody, 샌드박스 iframe), 라우팅 [[...slug]]

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
Claude 1cd1d10243 Phase 2: 백엔드 데이터모델·시드·REST API·Ollama 추상화
- models.py: 11개 SQLModel 테이블(person/folder/project/task/task_comment/
  inbox_item/inbox_classification/event/approval/goal/briefing), FK·enum·무한중첩 자기참조
- schemas.py: 전 I/O 스키마(types.ts 1:1, snake_case, 재귀 ProjectNode/TaskNode)
- seed.py: 지우의 한 주(REF 4파일 그대로) — 5인/2폴더/14프로젝트/45작업/4인박스/대시보드
- Alembic: init schema 마이그레이션(+sqlmodel import), base↔head 왕복 검증
- 라우터 6종: people/tree(폴더·프로젝트 CRUD·pin)/tasks(CRUD·댓글·scaffold·risks)/
  inbox(capture·reclassify·confirm 연합·dismiss)/dashboard(집계)/llm
- services: risk.py(지연/쏠림/의존, TODAY=8), scaffold.py(정규식 4템플릿), classification.py
- LLM 추상화: provider/ollama(format=json, think=false→수초 응답, 모델 비종속)/heuristic 폴백/prompts
- inbox confirm = federation(task 실체화 + materialized_task_id)

검증: pytest 38 passed, ruff clean, 마이그레이션 왕복 OK,
시드 카운트 일치, 골든 분류 4케이스 통과(heuristic),
라이브: Ollama 분류 동작(model:ollama:qwen3.6, 13s) + 폴백 동작, 전 엔드포인트 정상

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago