2 Commits (10fcaec08085dd6d94c317b4ee2c714eab4cab19)

Author SHA1 Message Date
Claude c4e86e06ec Phase 6: 통합 · 연합 흐름 · QA & MVP 수용 기준
- 백엔드: test_federation(캡처→분류→확인→tasks 등장→risks 재계산→dashboard 집계,
  confirm 멱등, k1 done 후 지연위험 소멸) + test_nplus1(tree≤6/dashboard≤12 쿼리 예산)
  + /api/_test/reset(ARI_ALLOW_TEST_RESET 가드) + confirm 멱등 가드
- 프론트 E2E: federation.spec(7단계 사용자 여정) + a11y.spec(3페이지 라이트/다크/키보드,
  color-contrast 제외) + responsive.spec(모바일/태블릿/데스크톱 가로스크롤 0) + seed-reset fixture
- tokens.test(토큰 HEX/px 회귀)
- 반응형 보정: 모바일에서 .ttoolbar/.pagehead 줄바꿈 + 검색창 가변폭(가로 스크롤 제거)
- README 한 장 실행법/데모 스크립트, scripts/dev.sh, frontend/.env.local.example, CI 워크플로

최종 검증(전 phase 누적):
- 백엔드 pytest 63 passed, ruff clean
- 프론트 vitest 69 passed, tsc/eslint clean, build OK
- Playwright E2E 39 passed(연합/a11y/반응형/shell/tasks/inbox/dashboard) — axe 위반 0
- 라이브: Ollama 분류 동작(모델 비종속) + heuristic 폴백, 전 엔드포인트 200, 콘솔 에러 0
- 소스 TODO/FIXME 0

MVP 완료: 작업·인박스·대시보드 3페이지 + 연합 end-to-end.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
Claude cb028df08a Phase 4: 인박스(Smart Inbox) 페이지
- 멀티모달 캡처 컴포저(텍스트 Enter/보내기 + mic·image 스텁)
- 실시간 AI 분류: POST capture(동기) → 생각중 펄스 → 결과 칩(type/sphere/proj/due/when/extra)
  + 이유 한 줄 + heuristic 폴백 배지("규칙 기반(오프라인)")
- 확인(confirm)=실체화(federation): task → 실제 작업 생성 + 작업 페이지 등장
- 다르게 분류(reclassify) 타입 순환 task→event→idea, 낙관적 미리보기
- 분류 원칙 카드 4건(원문 그대로) + "오늘 어디로 갔나" 행선지 카드(동적 집계)
- sinbox.css 픽셀 이식 + dash-base.css(공유 레이아웃/카드, 대시보드 재사용)
- 서버 컴포넌트 초기 fetch + 클라 낙관적 업데이트/롤백, 전체/업무/개인 필터

검증: 백엔드 pytest 46, 프론트 vitest 42, playwright 28(shell+tasks+inbox+a11y),
tsc/eslint clean, build OK. 인박스→작업 연합 e2e 통과, 4 골든 + 폴백 배지 + voice 스텁 검증.
라이브 시각 확인(컴포저/칩/이유/원칙/행선지).

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