4 Commits (6fe8a74e59ef49e3543d1031d2b85d4f686e596d)

Author SHA1 Message Date
I Luk Kim 6fe8a74e59 test+chore: 테스트 인프라·E2E 스펙·개발 문서 갱신
- 테스트 헬퍼(_factories·_fake_llm)·conftest 정비, phase18 고급기능 테스트 추가,
  federation/multiuser/risk/nl_parser/export 갱신, 폐기 시드 테스트 제거
- playwright E2E 스펙 전반 갱신, dev/phase-16-real-mail 문서 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
I Luk Kim a7f830b420 feat: 포스트-MVP(phase 7~15) + 설정 페이지 전체 구현
자율성 코어(결재함·자동화), 일정·회의, 메일·알림, 리서치·여행(에이전트+RAG),
라이프 케어, 여정·하루마감, 외부 커넥터(mock→real), 능동 에이전트·멀티모달,
프로덕션 하드닝(인증/멀티유저·관측·운영·배포물)까지 phase 7~15 구현.

설정 페이지(/settings) — 좌측 6탭(계정·메일·연결·AI/LLM·외관·데이터/보안):
- LLM 연결 실시간 편집·적용(app_setting 테이블 + runtime_config 인메모리 오버레이),
  연결 테스트(Ollama /api/tags 모델 목록), 보조 프로바이더 읽기전용 표시
- 메일/연결 커넥터 관리, 프로필 편집(PATCH /me), 데이터 ZIP 내보내기, API 토큰 발급/폐기
- env 관리 ops 설정은 읽기전용(가짜 토글 금지)

기타: placeholder→실제 페이지 승격, Shell 풀스크린 /login 전환, stale 테스트 정리.
검증: backend pytest 282 / 마이그레이션 왕복, frontend vitest 177 / build / lint clean, E2E settings 7/7(a11y 0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
Claude b3d21f17d2 chore: Makefile→justfile + 개발 포트 unique화(31300/31800)
- Makefile 삭제 → justfile. `just run dev`(둘 다) / `just run fe` / `just run be`
  + install/test/e2e/lint/format/health/seed/migrate/clean 레시피
- 개발 포트를 흔한 dev 포트(3000/5173/8000/8080)와 충돌 없는 31xxx 대역으로:
  프론트 :3000→:31300, 백엔드 :8000→:31800. 전 참조 일괄 변경
  (package.json/next.config/lib api 기본값/playwright config·fixture/.env*.example/
   config.py FRONTEND_ORIGIN/scripts/dev.sh/CI/README)
- E2E 견고화: inbox/tasks/dashboard spec 에 beforeAll(resetSeed) 추가 →
  직렬 전체 실행에서 앞 spec 의 캡처 누적과 격리(결정성↑, 전체 39 e2e 29.7s)

검증(새 포트): 백엔드 pytest 63 · 프론트 vitest 69 · playwright 39 전부 통과,
tsc/eslint/ruff clean, build OK. 라이브: :31300↔:31800 CORS·SSR fetch·/ 리다이렉트 정상,
`just health`/`just run` 동작, 옛 포트 참조 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
Claude 09ed8497f3 Phase 5: 대시보드(Dashboard) 페이지
- 히어로 브리핑(브리핑 노트 HTML 강조 + 추천 칩 3 + 자연어 명령 입력)
- 자연어 명령 → POST capture → 토스트 → /inbox 이동
- 결재함 요약(high-risk 3건, "47분 아껴드렸어요", 대기 N건, 준비중 CTA)
- 인박스 요약(최근 3건, kind별 아이콘, /inbox CTA)
- 오늘 일정(4건·"곧" 배지·accent 바·sched-note) / 할 일(상위 5·"지금" focus·우선순위)
  / 목표(진행 막대·progressbar aria)
- 벤토 그리드(.board 4열) + cardin 진입 애니메이션 + 스켈레톤/빈/에러
- dashboard.css(dash.css+approve.css 이식), DashUser/Weather/... 타입, SWR useDashboard
- 백엔드 보정: EventOut 에 id 추가(React key), task_summary 최상위 미완료 상위 5건으로 제한

검증: 백엔드 pytest 54, 프론트 vitest 49, dashboard e2e 6 + a11y 2,
tsc/eslint/ruff clean, build OK. 라이브 시각 확인(히어로/요약/일정/할일/목표), 콘솔 에러 0.

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