---
title: "✅ 작업 체크리스트_260603-0805"
notion_id: "3682296208688166bea1d21265a6c754"
notion_url: "https://app.notion.com/p/3682296208688166bea1d21265a6c754"
category: "checklist"
parent: "달록 개발 현황"
updated: "2026-06-03"
priority: "High"
purpose: "v1 보관본(동결) — 전체 작업이력 INTENT·코멘트·체크상태 + 갱신섹션 + 마크다운 원본 토글 + V2 이관 매핑표"
read_when: ["남은작업·우선순위","최신상태복구"]
---

> 📦 (gray_bg 콜아웃)
> **📦 이 페이지는 v1 보관본입니다 — 관리 종료 (2026-05-27)**
> 본 페이지의 모든 내용은 **과거형 이력 보관용**으로 동결되었습니다. 향후 작업 우선순위 관리·체크박스 토글·신규 항목 추가는 **모두 V2에서 진행**합니다.
> ➡️ **현재 운영 중인 체크리스트:** [✅ 작업 체크리스트 V2 — 260527 향후 우선순위](#/doc/checklist-02)
> **v1 보관 원칙**
> - 본문 INTENT·사용자 코멘트·갱신 섹션은 **삭제 금지, 수정 금지** — 미래 컨텍스트의 작업 의도 이해 기준 자료
> - v1의 미체크 항목은 **본 페이지 최하단 "📌 V2 이관 — 미체크 항목 매핑" 섹션** 참조 (V2 어느 섹션으로 이관됐는지 표기)
> - 신규 작업·진행 갱신·완료 토글은 v1에서 하지 않고 V2에서 처리
> - v1은 정밀 작업의도·과거 결정·이전 시점 상태 추적이 필요할 때 **읽기 전용 자료**로만 활용
---
> **이 페이지는 앞으로 직접 체크·코멘트하는 운영 기준 체크리스트이다.** HTML 원본(`docs/dallog_checklist_260522_v6.html`)의 모든 INTENT·코멘트·체크상태를 그대로 옮겨 보존한다. 미래 컨텍스트는 본 페이지의 INTENT와 사용자 코멘트를 먼저 읽고 작업 의도·이전 결정·미해결 메모를 흡수한 뒤 작업한다.
> 원본: `D:\dallog\dallog_git\docs\dallog_checklist_260522_v6.html`
> **최종 업데이트:** 2026-05-22 KST (클로2 — v3 P0/P1 통합 후 최종 polish 검수 반영)
> **진행률:** 49 / 57 완료 (2026-05-23 갱신 — H-1·H-2 완료 + v0.9 마무리 4건 추가)
> **원본 파일:** `D:\dallog\dallog_git\docs\dallog_checklist_260522_v6.html`
---
## ▶ 진행 순서 (최종 polish 검수 완료 — 2026-05-22)
F-5 ✓ → F-6 ✓ → F-6b ✓ → F-6c ✓ → **E-6 ✓** → **C-6 ✓** → **F-6d ✓** → **F-6e ✓** → **C-7 ✓** → **I-0 ✓** → **F-7 ✓** → **F-8 ✓** → H파트 (다음) → G-4 보안점검 → I·J파트
---
## A파트 — [Claude.ai](http://Claude.ai) 직접 개발 (git 도입 전)
- [x] **A-1** — dallog-v0.1.0 — 프로젝트 최초 생성
	- 설명: Dashboard / LogEntry / History / CoachNotes 4탭 구성
	- 📖 **INTENT** — 달록 프로젝트 시작점. React + Vite 기반 4탭 구조 최초 생성.
- [x] **A-2** — 로그인 페이지 달록 브랜딩 — 브라우저 확인
	- 📖 **INTENT** — G-2 브랜딩 구현 후 [dallog.pages.dev](http://dallog.pages.dev) 브라우저 검증.
- [x] **A-3** — dallog-v0.2.0 — Settings 탭 추가
	- 📖 **INTENT** — 사용자 설정 관리 탭 추가.
- [x] **A-4** — dallog-v1.0.0 — StrengthLog 탭 추가
	- 📖 **INTENT** — 근력운동 전용 탭 추가. 러닝 외 근력 데이터 통합.
- [x] **A-5** — dallog-v1.1.0 — RunningSummary + Settings ChangeLog 추가
	- 📖 **INTENT** — 러닝 요약 뷰 + 설정 변경 이력 추가.
## B파트 — v2.0 기반 구축
- [x] **B-1** — 섹션1 1단계 DB타입 + 2단계 기록탭 3탭 통합
	- 📖 **INTENT** — v2.0 리팩토링 1단계. DB 타입 체계 정비 + 기록탭 3탭 통합.
- [x] **B-2** — 섹션1 2~4단계 기록탭·히스토리·대시보드
	- 📖 **INTENT** — 기록탭 전체 UI 개편, 히스토리·대시보드 연동.
- [x] **B-3** — 섹션1 4·5단계 + 섹션2 UI개편 + 피드백 반영
	- 📖 **INTENT** — v2.0 마무리. UI 개편 피드백 반영 + 섹션2 완성.
- [x] **B-4** — 기록탭 통합 및 기록하기 버튼 신설
	- 📖 **INTENT** — 기록 진입점 단일 버튼으로 통합. UX 간소화.
## C파트 — 인증·백엔드 인프라
- [x] **C-1** — 로그인 기능 구현
	- 📖 **INTENT** — Supabase Auth 기반 Google OAuth + 마스터 계정 로그인 구현.
- [x] **C-2** — CF Workers AI 브리프 프록시 구축
	- 📖 **INTENT** — AI API 키 보호를 위한 CF Workers 프록시 구조 구축.
- [x] **C-3** — 마스터로그인 수정 + 데모타이틀 변경
	- 📖 **INTENT** — 마스터 계정 로그인 로직 수정 + 데모 타이틀 변경.
- [x] **C-4** — 데모버전 구축 및 main 통합
	- 📖 **INTENT** — 지인 공유용 데모 브랜치 구축 후 main 통합.
- [x] **C-5** — 로그아웃 버튼 + 계정설정 UI 실기능
	- 📖 **INTENT** — supabase.auth.signOut() 연결 + 계정정보 저장 실연결.
- [x] **C-6** — /settings 수정로그 fallback 처리
	- 설명: updated_at 쿼리 실패 시 recorded_at 기준 fallback — UI 정상 노출 확인
	- 📖 **INTENT — 완료** — fallback 추가로 수정로그 UI 정상 노출. 클로2 최종 검수(2026-05-22) 결과 화면에 러닝·체성분 일자별 데이터 정상 표시. Supabase 400 콘솔 에러 자체는 잔존(updated_at 컬럼 부재 또는 권한 이슈) — 정식 스키마 정리는 G-4 보안점검 시 동반 권장.
	- 💬 **코멘트** (클로2 자동 추가) — 94f067a fallback 통합 완료. 클로2 MCP 최종 검수: 수정로그 화면 정상, 콘솔 400 2건 잔존(fallback이 가려줌). G-4 보안점검 시 updated_at 스키마 정리 동반 권장.
- [x] **C-7** — /login 재진입 가드
	- 설명: 로그인 상태에서 /login 접근 시 /dashboard 자동 리다이렉트 — MCP 검증 완료
	- 📖 **INTENT — 완료** — 로그인 상태에서 /login URL 진입 시 /dashboard로 자동 리다이렉트. 클로2 MCP 최종 검수(2026-05-22) 시각 확인 완료.
	- 💬 **코멘트** (클로2 자동 추가) — 94f067a 통합. 클로2 검수: /login → /dashboard 즉시 리다이렉트 확인.
## D파트 — 기록탭 고도화
- [x] **D-1** — 기록탭 달력 UX + 체성분 Summary 혼합차트
	- 📖 **INTENT** — 달력 UI 날짜선택 UX + 체성분 Summary 막대+선 혼합차트.
- [x] **D-2** — 러닝·근력 summary 개선 + 종목 선택 2단계
	- 📖 **INTENT** — 요약화면 개선 + 카테고리→세부종목 2단계 선택.
- [x] **D-3** — 체성분 상세 증감수치 부수표기
	- 📖 **INTENT** — 체성분 카드 전일 대비 증감 부수 표기.
- [x] **D-4** — 근력운동 v2 저장/루틴 + 운동종목 등록 개편
	- 📖 **INTENT** — 근력 기록 구조 v2 전면 개편. 루틴 저장 + 종목 등록 UI.
## E파트 — 코치노트·AI브리프
- [x] **E-1** — 코치노트 3컬럼/체중차트/달력축소/키워드 드롭다운
	- 📖 **INTENT** — 코치노트 3컬럼 + 체중차트·달력·키워드 드롭다운 추가.
- [x] **E-2** — AI에게보내기/AI브리프지침/시각화카드/런타임잠금해제
	- 📖 **INTENT** — AI 버튼·지침 UI·시각화카드·데모 잠금해제 대형 추가.
- [x] **E-3** — AI브리프 에이전트 화법·구조 개편 + 관리UI
	- 📖 **INTENT** — AI 브리프 프롬프트 전면 개편 + 설정탭 관리 UI.
- [x] **E-4** — 코칭브리프 마크다운 통일 + 체성분-only 시각화
	- 📖 **INTENT** — Markdown 렌더 통일 + 체성분 전용 시각화 예외 처리. ※ MCP v2에서 raw ## + json 코드블록 노출 확인 → E-6로 해결.
- [x] **E-5** — 설정탭 AI에게 보내기 버튼 추가
	- 📖 **INTENT** — 설정탭에서 AI에게 보내기 바로 실행 진입점 추가.
- [x] **E-6** — AI 브리프 Markdown 렌더링 도입
	- 설명: ## h2 + paragraph 정상 렌더링 — code 블록은 code 요소로 분리 — MCP 시각 검증 완료
	- 📖 **INTENT — 완료** — react-markdown + DOMPurify 도입으로 ## h2 헤더 5개 정상 렌더링, paragraph 분리, JSON 코드블록은 code 요소로 분리됨(raw 평문 아님). 클로2 MCP 최종 검수(2026-05-22) 시각 검증 완료.
	- 💬 **코멘트** (클로2 자동 추가) — 94f067a 통합. 클로2 검수: aria snapshot에서 heading level=2 5개("체중 증감의 의미 해석" 등) + paragraph 정상 렌더링 확인. JSON 블록은 code 요소로 분리됨. 잔여 polish: JSON 코드블록을 의도적으로 노출할지 숨길지 판단 필요(현재 사용자에게 노출됨).
## F파트 — UI/UX 조정
- [x] **F-1** — 대시보드 BODY 증감수치 + 기록일 표기
	- 📖 **INTENT** — BODY 카드 증감수치 + 마지막 기록일 표기.
- [x] **F-2** — 버튼 위치 변경 4종
	- 📖 **INTENT** — 접근성 낮은 버튼 4개 위치 조정.
- [x] **F-3** — AI에게보내기 클립보드 전환 + 핸드오프 재구성
	- 📖 **INTENT** — AI 버튼 → 클립보드 방식 전환 + 핸드오프 재구성.
- [x] **F-4** — 아이콘·스플래시 + AI브리프 CORS 수정
	- 📖 **INTENT** — 앱 아이콘·스플래시 브랜딩 + CF Workers CORS 수정.
- [x] **F-5** — 체성분 Summary Y축 전면 재설계
	- 📖 **INTENT** — Z스코어 폐기 → 실수 단위 Y축 전환. SummaryBrief.tsx 수정. 커밋 d83f1fc.
	- 💬 **사용자 코멘트** — Z스코어 전면 폐기 후 5단계 교정 완료(v1~v5). 체성분-골격근/체지방 Y축 실수 kg(min-10~max+10), 체중 우측 Y축 유지. 러닝-심박/케이던스 50~250 고정, 페이스 환산값 방식. 근력-총볼륨 유동 Y축, 세트당 평균볼륨 지표 교체. 커밋 d83f1fc.
- [x] **F-6** — 데스크탑 1920px 레이아웃 최적화
	- 설명: maxWidth 1600px, 헤더/Nav 정렬, 모바일 롤백 포함 완료
	- 📖 **INTENT** — 1920px 와이드 좌우 여백 과도 문제 해결. maxWidth 1600px + Nav 색상/크기 분리. MCP v2: 실제로 1440에서는 1164px 자연 제한, 1920+에서만 효과 큼.
- [x] **F-6b** — 메뉴 아이콘 SVG 교체 (하단 Nav + 설정탭)
	- 설명: 달록 러너심볼 기반 filled SVG — Nav 3개 + 설정 6개 완료
	- 📖 **INTENT** — 이모지→달록 브랜드 SVG 교체. fill="currentColor" 인라인 컴포넌트.
	- 💬 **사용자 코멘트** — 3커밋 완료. 4981b14 Nav 3개 / 7092ac2 설정 6개 / b613ae5 .gitignore. fill="currentColor" 활성/비활성 자동 상속.
- [x] **F-6c** — 데스크탑 좌측 사이드바 전환
	- 설명: 커밋 9989e58, a14b981 — 브라우저 테스트 완료
	- 📖 **INTENT** — 데스크탑 769px+ 좌측 사이드바 전환. 모바일 하단 탭바 유지. localStorage 상태 기억(B안). MCP v2: 사이드바 272px 실측 확인.
- [x] **F-6d** — 대시보드 탭 UI + 목업 v3fix5 반영 (P1-2·P1-4·P1-1 포함)
	- 설명: max-width 1000px / BODY·RUNNING·STRENGTH 탭 전환 / 컬러 토큰 / 탭바 마감 — 통합 완료
	- 📖 **INTENT — 완료** — 목업 v3fix5 기준 대시보드 탭 전환 + max-width 1000px 단일컬럼 + 컬러 토큰 + 모바일 탭바 active 라임 통일. 클로2 MCP 최종 검수(2026-05-22) 데스크탑/모바일 × 다크/라이트 4조합 모두 정상 노출 확인.
	- 💬 **코멘트** (클로2 자동 추가) — 53095f3 + 94f067a + 89f195c 누적 통합. 클로2 검수: 대시보드 탭 전환 정상, BODY/RUNNING/STRENGTH 4 메트릭 카드 + 차트 2개 정상. 모바일 탭바는 I-0으로 4탭(프로필 포함)으로 확장됨.
- [x] **F-6e** — /strength-log 빈 라우트 처리
	- 설명: /log?tab=strength 자동 리다이렉트 — MCP 검증 완료
	- 📖 **INTENT — 완료** — /strength-log 진입 시 /log?tab=strength로 자동 리다이렉트. 클로2 MCP 최종 검수(2026-05-22) window.location.href 시각 확인 완료.
	- 💬 **코멘트** (클로2 자동 추가) — 94f067a 통합. 클로2 검수: /strength-log → /log?tab=strength 즉시 리다이렉트 확인.
- [x] **F-7** — 다크/라이트/시스템 테마 설정
	- 설명: 설정 → 계정 설정 → 테마 radio 3종 — MCP 검증 완료
	- 📖 **INTENT — 완료** — 설정 → 계정 설정 → 테마 radiogroup (다크/라이트/시스템). 클로2 MCP 최종 검수(2026-05-22) 데스크탑/모바일 × 다크/라이트 모두 정상 전환 확인. 라이트모드 bg #fafafa, text #181818, 다크모드 bg #0d1018 — 대비 충분.
	- 💬 **코멘트** (클로2 자동 추가) — 9f0cee6 통합. 클로2 검수: data-theme="light" 적용 정상, 5개 라우트(대시보드/기록/코치/입력/설정) 라이트 노출 정상. 라이트모드 잔여 polish: 차트 라인 컬러가 다크 톤 기준일 때 라이트모드에서 어떻게 보이는지 추가 점검 필요(코치 빠른 시각화 일부 영역).
- [x] **F-8** — 기록탭 쿼리 성능 최적화 (Supabase 서버사이드 집계)
	- 설명: strength_daily_summary 뷰 + 프론트엔드 fetch 교체 완료
	- 📖 **INTENT — 완료** — strength_sets IN쿼리 → strength_daily_summary 뷰 기반 단일 fetch로 성능 개선. 프론트엔드 fetch 교체 통합 완료.
	- 💬 **코멘트** (클로2 자동 추가) — 94f067a 통합. 프론트 fetch 교체 완료. 클로2 검수: /history 근력 탭 정상 노출.
## G파트 — 브랜딩·배포·피트니스 연동
- [x] **G-1** — 데모버전 파비콘 SVG 교체
	- 📖 **INTENT** — 데모 파비콘 달록 SVG 교체.
- [x] **G-2** — 로그인페이지 달록 브랜딩 + 병렬 에이전트 커밋 충돌 해결
	- 📖 **INTENT** — 로그인 2컬럼 브랜딩 + 병렬 에이전트 git 충돌 해결(c1417fa).
- [x] **G-3** — 체성분 피트니스 프로젝트 연동 UI 통합
	- 📖 **INTENT** — 외부 피트니스 프로젝트 데이터-달록 체성분 연동 UI.
- [ ] **G-4** — 멀티유저 + 지인 배포 **(재정의 2026-05-23)**
	- 설명: v0.9 클로즈베타 충족기준 확장에 따라 단순 지인 배포가 아니라 멀티유저/보안 + 프로필 + SNS + 약관 + 로그인 확장 + 환경분리까지 포함된 큰 작업군으로 재정의. 세부는 [달록 v0.9 충족기준 §5 작업 1–9](#/doc/spec-01) 참조.
	- 📖 **INTENT** — 기존: 1인→지인 그룹 멀티유저 확장. RLS·환경변수·CORS·Rate Limiting 보안점검 6개 Phase 선행. (클로2 권장: `updated_at` 스키마 정리 동반 — C-6 잔존 콘솔 에러 해소)
	- 💬 **재정의 메모** (2026-05-23 클로3) — G-4는 더이상 단일 "보안점검 + 지인배포" 이벤트가 아니라 v0.9 클로즈베타 필수 작업군 9종을 괄하는 메타 항목으로 재정의됨. 우선순서는 충족기준 §5 작업번호(데이터귀속 1 → 보안 2 → 환경분리 3 → 로그인 4 → CS 5 → 본인인증 6 → 프로필 7 → 타임라인 8 → SNS 9)를 따른다.
## H파트 — 트래킹 연동 (신설 / F-8 후)
- [x] **H-1** — 트래킹앱 스크린샷 OCR 자동 기록 — 완료 (2026-05-23 클로3)
	- 설명: tesseract.js 7.x 브라우저 OCR(kor+eng), 스크린샷 업로드 → 텍스트 추출 → 공통 후보 파싱
	- 📖 **INTENT — 완료** — 삼성헬스·나이키런·스트라바·가민 스크린샷 → OCR 수치 자동 파싱. API 연동보다 빠르고 어떤 앱이든 대응. 구현: `src/lib/ocr/types.ts` + `extractText.ts`(tesseract.js 래퍼) + `normalize.ts`(날짜/거리/소요시간/페이스 정규화) + `parseCandidates.ts`(키워드·정규식 기반 공통 후보 추출). 이미지 원본은 호출측에서만 사용, 외부/서버 미전송.
	- 💬 **코멘트** (클로3 자동 추가) — 자동 저장 금지 원칙 유지. 근력 종목/세트/반복/중량 자동 구성은 v0.9.1에서 보류, 루틴명/날짜만 주입.
- [x] **H-2** — 자동입력 + 사용자 보정 저장 UI — 완료 (2026-05-23 클로3)
	- 설명: OcrImportModal — 원문 펼침/접기, 유형 선택, 후보 보정, 체성분/러닝/근력 폼 주입
	- 📖 **INTENT — 완료** — OCR 결과 기록 폼 자동입력 + 오파싱 수치 보정 후 저장 UI. 구현: `src/components/ocr/OcrImportModal.tsx` + `src/pages/LogEntry.tsx:527` "📷 OCR로 불러오기" 진입 버튼. needsReview 항목에 "● 확인 필요" 마크·reason 표시. 기존 저장 버튼 / ConfirmDialog / useDemoBlock / PostSaveDialog 흐름 재사용.
	- 💬 **코멘트** (클로3 자동 추가) — 별도 저장 버튼 신설 없이 기존 LogEntry submit 재사용. 데스크탑 1440px·모바일 390px 모달 레이아웃 코드 기준 확인값 완료 (overlay overflow-y auto + dialog margin 24px로 세로 스크롤 대응).
- [ ] **H-3** — 트래킹앱 API 연동 → Health Connect 통합 채널 전환 **(재정의 2026-05-27 — 페이지 끝 갱신 섹션 참조)**
	- 설명: 개별 API(삼성헬스·가민·스트라바) 직접 연동 폐기 → **Health Connect 통합 채널** — PWA화/Android 앱화 선행 필요
	- 📖 **INTENT (이전)** — OCR 이후 모수 충분 시 공식 API 자동 동기화 전환.
	- 💬 **재정의 메모 (2026-05-27)** — 개별 앱 직접 연동 폐기, Health Connect를 통합 채널로 활용 결정. 상세 내용은 페이지 끝 "🆕 갱신 (2026-05-27 — H-3 재정의: Health Connect 통합 채널 전환)" 섹션 참조.
## I파트 — 사용자 프로필 기능 **(v0.9 필수 충족기준 작업군으로 격상 2026-05-23)**
> ⚠️ (yellow_bg 콜아웃)
> I-1/I-2/I-3는 기존에 "G-4 이후" 후순위 로드맵으로 관리되었으나, **2026-05-23 v0.9 충족기준 재정의로 v0.9 필수 작업군 7–9로 격상**. v0.9 이후 로드맵이 아니다. 세부는 [달록 v0.9 충족기준 §5 작업 7–9](#/doc/spec-01) 참조.
- [x] **I-0** — 프로필 사전 준비 — 아이콘 진입점 + 더미 페이지
	- 설명: /profile 더미 페이지 + 사이드바·하단 4탭 진입점 확보 — MCP 검증 완료
	- 📖 **INTENT — 완료** — /profile 더미 페이지 ("프로필 기능은 준비 중입니다") + 데스크탑 사이드바·모바일 하단 탭바에 프로필 아이콘 진입점 추가. 클로2 MCP 최종 검수(2026-05-22) 모바일 하단 4탭(대시보드/기록/코치/프로필) 확장 시각 확인. 잔여 polish: PROFILE h1 font-weight 800 — 다른 페이지 헤더 weight와 균형 점검 권장.
	- 💬 **코멘트** (클로2 자동 추가) — 94f067a 통합. 클로2 검수: /profile 더미 페이지 정상 노출, 사이드바·모바일 4탭 진입점 모두 동작. PROFILE h1 font-weight 800 — 헤더 톤 통일 차원에서 추후 미세 조정 후보.
- [ ] **I-1** — 프로필 대시보드 (공개여부 선택 가능)
	- 📖 **INTENT** — 멀티유저 이후 SNS형 프로필 기능. 커버이미지 + 공개 범위 설정. (클로2 권장: 본 개발 시 PROFILE h1 헤더 톤 균형 점검 동반)
- [ ] **I-2** — SNS형 러닝·체성분·근력·AI브리프 타임라인 공개
	- 📖 **INTENT** — 스레드/인스타그램형 기록 타임라인 피드.
- [ ] **I-3** — 하단 우측 프로필 아이콘 진입점
	- 📖 **INTENT** — 하단 Nav 우측 프로필 사진 아이콘 추가 진입점.
	(empty-block)
## J파트 — 애널리틱스·어드민 (로드맵)
- [ ] **J-1** — 사용자 이용패턴 분석
	- 📖 **INTENT** — 어드민 개발 시점에 이용패턴 데이터 수집 동시 구현.
- [ ] **J-2** — 커스텀 지표 조합 + AI 브리핑 리포트
	- 📖 **INTENT** — 어드민 지표 커스텀 조합 + AI 자동 브리핑 리포트.
- [ ] **J-3** — 사용자 피드백 수집 기능
	- 📖 **INTENT** — 앱 내 기능 요청·버그 리포트 채널 신설.
---
## 별도 메모 (최종 polish 검수 결과 — 2026-05-22 클로2)
- 최종 검수: Playwright MCP — Desktop 1440×900 / Mobile 390×844 × 다크·라이트 4조합 × 7개 라우트 캡처 23컷
- P0/P1 검증: E-6 Markdown ✓ / C-6 fallback ✓ / C-7 /login 가드 ✓ / F-6e /strength-log → /log?tab=strength ✓ / I-0 /profile 더미 ✓
- 잔존 polish 후보 (모두 사용자 경험 영향 미미):
	1. /settings 수정로그 콘솔 400 에러 (fallback이 가려줌, G-4 보안점검 시 스키마 정리 동반)
	2. PROFILE h1 font-weight 800 헤더 톤 통일
	3. /coach JSON 코드블록 노출 의도 확인
	4. 모바일 /coach 액션버튼 23px 높이 (v2 미해결)
	5. /coach heading↔paragraph 간격
	6. 모바일 설정 한손 접근 (banner link 한 단계 깊음)
	7. 라이트모드 차트 라인 컬러
- 모바일 하단 탭바 4탭 확장 (I-0 통합): 대시보드 / 기록 / 코치 / 프로필 — 설정은 banner link 유지
- 라이트모드 톤: bg #fafafa / text #181818 — 5개 라우트 contrast 충분 확인
- 도메인 탭 명칭 불일치: /dashboard BODY/RUNNING/STRENGTH vs /history·/log 체성분/러닝/근력 → 향후 P2-8에서 통일
- 다음 우선순위 권장: H-1 OCR 자동기록 → H-2 자동입력 보정 UI → G-4 보안점검(updated_at 스키마 정리 동반) → I-1 프로필 대시보드
---
## 운영 원칙
- 본 페이지는 노션에서 직접 체크박스 토글 + 코멘트 작성으로 운영
- 사용자가 입력한 코멘트는 미래 컨텍스트의 작업 의도 이해 기준 — **삭제 금지, 누적 추가 원칙**
- 클로2 자동 추가 코멘트는 사용자가 본인 메모로 덮어쓰거나 보강 가능
- HTML 원본은 `D:\dallog\dallog_git\docs\dallog_checklist_260522_v6.html` 유지 (정밀 작업의도·리마크 보관용)
- 다음 컨텍스트 작업 시작 시 이 페이지를 먼저 확인
---
## 참조
- 원본 HTML: `D:\dallog\dallog_git\docs\dallog_checklist_260522_v6.html`
- GitHub: [https://github.com/ccy-hansbridge/dallog](https://github.com/ccy-hansbridge/dallog)
- MCP브라우징 보고서 v3: 달록 개발 현황 > MCP브라우징 보고서 > v3 — 최종 polish 검수 (260522)
- 이번 컨텍스트 핸드오프: 26-05-22_1-달록_핸드오프
- 개발일지: 2026-05-22 (금)
- 작업보고: 260522-17:09_S2-달록v3최종polish검수
---
## 부록 — HTML 원본 첨부
> 아래 토글에 HTML 원본 파일 내용을 첨부한다. 미래 컨텍스트가 "정밀한 원본"이 필요할 때 참조한다.
> 코드블록 크기 한계로 일부 텍스트는 잘릴 수 있다. 정확한 원본은 로컬 파일을 확인.
‣ HTML 원본 전체 보기
```javascript
원본 파일 경로: D:\dallog\dallog_git\docs\dallog_checklist_260522_v6.html
파일 크기: 약 30KB / 357줄
인덱싱: 본 페이지의 마크다운 본문에 모든 INTENT 및 코멘트가 풀려있으므로,
       HTML 원본은 정밀 폴리시(태그·CSS·JS 동작) 검토 시에만 참조.
       로컬 파일이 우선 진실의 원천(source of truth).
```
---
## ⚡ 갱신 (2026-05-22 클로2 — UI 잠정 완수)
> v3 P0/P1 통합 이후 추가 작업으로 **F-9 사이드바 설정 아코디언 통합** 완료. 이로써 UI 정보 구조 정합성이 회복되어 UI 잠정 완수.
> **갱신 진행률:** 43 / 53 완료 (F-9 1건 신규 추가)
> **갱신 커밋:** 64ca435 (push 완료)
### 🆕 F-9 — 사이드바 설정 아코디언 통합 (Settings 내부 메뉴 → 메인 사이드바)
- [x] **F-9** — UI 정보 구조 정합성 회복
	- 설명: 메인 사이드바 '설정' 클릭 시 6 sub 펼침 + URL hash 라우팅 + Settings 좌측 aside 제거
	- 📖 **INTENT — F-9 (사용자 기대 정합 회복)** — v3 통합 후에도 Settings 페이지 내부 본문 좌측에 별도 서브 사이드바(피트니스 목표/러닝 설정/근력운동/개인 메모/계정 설정/수정 로그)가 잔존하여 사용자 멘탈 모델(메인 사이드바 단일 hierarchical menu)과 불일치. v2 보고서 P2-5(설정 사이드바 아코디언 + URL hash 라우팅)를 P1으로 격상. 변경: ① Layout.tsx '설정' NavLink → button + 6 sub-items 아코디언(collapsed 모드는 단일 아이콘) ② Settings.tsx 데스크탑 좌측 224px aside 제거(모바일 햄버거 유지), useLocation().hash 구독으로 active 동기 ③ /settings(hash 없음) 진입 시 'goals' 자동 활성화 — 사이드바 '설정' + sub '피트니스 목표' 동시 active + 본문 피트니스 목표 노출 ④ 기존 ?section= 쿼리 fallback 호환 유지.
	- 💬 **코멘트** (클로2 자동 추가) — 커밋 64ca435 / 푸쉬 완료. MCP 검증: 데스크탑 사이드바 '설정' 클릭 → /settings#goals 이동 + 사이드바·sub '피트니스 목표' 동시 active + 본문 ◎ 피트니스 목표 노출 확인 / sub 클릭(#account → 계정 설정, #changelog → 수정 로그) 즉시 전환 확인 / 모바일은 사이드바 없음 → 햄버거 메뉴 유지, /settings 진입 시 #goals 자동 동기. [localhost](http://localhost) 빌드+vite dev로 시각 검증, 콘솔 에러 0.
### 진행순서 갱신
F-5 ✓ → F-6 ✓ → F-6b ✓ → F-6c ✓ → E-6 ✓ → C-6 ✓ → F-6d ✓ → F-6e ✓ → C-7 ✓ → I-0 ✓ → F-7 ✓ → F-8 ✓ → **F-9 ✓** → H파트 (다음) → G-4 보안점검 → I·J파트
### F-9 추가 검증 메모
- MCP 검증: 데스크탑 1440×900 / 모바일 390×844 양쪽 정상
- 콘솔 에러 0 (수정 로그 클릭 시 C-6 fallback의 콘솔 400은 잔존 — 별개)
- React Router 동일 라우트 내 hash 변경은 window 'hashchange' 미발생 → useLocation().hash 구독으로 해결
- collapsed 사이드바 모드에서는 '설정' 단일 아이콘으로 폴백 (펼침 비활성, 클릭 시 /settings 이동만)
### 정정 안내
이전 본문(v6 갱신)에 "진행률 42/52"로 표기되어 있으나, **현재는 F-9 추가로 43/53이 정확**. 또한 이전 응답에서 "8건 완료 처리"라고 보고했던 HTML 갱신이 일부 적용되지 않았던 점을 발견하여 이번 컨텍스트에서 한 번에 통합 갱신함 (HTML 원본도 이번에 함께 갱신됨).

- 📄 [작업 체크리스트 v6_260523_1](#/doc/archive-checklist-01) — versions/작업-체크리스트-v6_v_260523_1.md
---
## 🆕 갱신 (2026-05-23 클로3 — v0.9 마무리 작업 4건 + H 파트 완료)
> 본 컨텍스트(2026-05-23, 클로3) 작업으로 H-1/H-2 OCR MVP가 완료되고, v0.9 클로즈베타 마무리 작업 4건이 신규 등록되었다. 또한 v0.9 클로즈베타 충족기준이 **소셜형 운동기록 클로즈베타**로 재정의되어 G-4 정의 확장 및 I-1~I-3 격상이 동시에 반영됨.
>
> **갱신 진행률:** 49 / 57 완료 (신규 항목 4건 추가 + H-1/H-2 완료)
> **관련 페이지:** [달록 v0.9(클로즈베타버전) 완성 충족기준](#/doc/spec-01) / [📋 26-05-23_1-달록_핸드오프](#/doc/handoff-11) / [📅 2026-05-23 (토) — 개발일지](#/doc/devlog-11)
### V파트 — v0.9 클로즈베타 마무리 (신규 2026-05-23)
- [x] **V-1** — v0.9 배포차단 이슈 1차 수정 (라우팅/로그인)
	- 설명: /login 세션 가드, 마스터 로그인 후 /dashboard 이동, /strength-log 빈 화면 해결, App.tsx 라우터 구조 개선(GuestRouter 도입, * → /dashboard 폴백)
	- 📖 **INTENT — 완료** — 라우터 외부에서 LoginPage 직접 렌더하던 기존 분기를 GuestRouter로 대체. 비로그인 + /login 외 경로는 /login으로 정규화, 로그인 직후 AppRouter 전환으로 /login → /dashboard Navigate 즉시 작동. 빈 root와 무한 splash 동시 해소. 변경 파일: `src/App.tsx`.
	- 💬 **코멘트** (클로3 자동 추가) — v0.9-block 카테고리. C-7(/login 가드) + F-6e(/strength-log 리다이렉트)와 라우터 내부에서 통합 동작 확인.
- [x] **V-2** — F-7 최소 보완 / 모바일 안정화 (v0.9-stab UI polish)
	- 설명: Layout.tsx 안정화, dashboard 섹션 UI 안정화, 데스크탑/모바일 기본 레이아웃 안정화
	- 📖 **INTENT — 완료** — v3 polish 검수에서 잔존했던 정렬·간격 polish를 dashboard 섹션 / Layout.tsx에 반영. F-7 라이트모드 잔여 polish 일부 동반.
	- 💬 **코멘트** (클로3 자동 추가) — MCP 시각 검증은 본 컨텍스트에서 미실시. 다음 업무일 MCP브라우징 보고서 최신화 시 검증 예정.
- [x] **V-3** — 기록 UX / 입력 피로도 개선 (v0.9-rec)
	- 설명: PostSaveDialog 3액션(같은 유형 계속 기록·기록 보기·기록 완료) + 연속 기록 액션 + 최근 러닝 메타값(shoe·run_type) localStorage 유지 + 최근 근력 구분값(label) localStorage 유지 + 러닝/근력 수정 시각 필드 보완 + History 강도운동 로드 batch 최적화
	- 📖 **INTENT — 완료** — 저장 후 사용자가 같은 유형으로 계속 입력하거나 히스토리로 즉시 이동할 수 있도록 3액션 분기. 최근 사용한 shoe/run_type/label은 다음 진입/계속 기록 시 디폴트로 채워 입력 피로도 감소. History 페이지는 strength_daily_summary 뷰 기반 batch 조회로 진입 시 N+1 패턴 회피. 변경 파일: `src/components/Modal.tsx`(PostSaveDialog), `src/pages/LogEntry.tsx`(LAST_RUN_META_KEY / LAST_STR_LABEL_KEY), `src/pages/History.tsx`.
	- 💬 **코멘트** (클로3 자동 추가) — 수치·날짜·시각은 매번 새로 입력. 메타값(shoe·run_type·label)만 유지하는 제한적 영속화.
- [x] **V-4** — 달록 v0.9(클로즈베타버전) 완성 충족기준 페이지 생성 및 §5 재정렬
	- 설명: 달록 개발 현황 하위에 v0.9 충족기준 페이지 신규 생성, §5 미비내용을 작업순번(의존관계) 기준으로 재정렬, §4/§5 가시성 callout 구분, 작업 1~9 callout 그룹화
	- 📖 **INTENT — 완료** — v0.9를 단순 개인기록앱이 아닌 바이럴 기반 소셜형 운동기록 클로즈베타로 재정의. 프로필/공개범위/타임라인/SNS탭/멀티유저 보안/CS·약관/로그인 확장/본인인증 검토/테스트버전 분리를 모두 v0.9 필수 충족기준에 포함. §5는 작업순번(1=데이터귀속 ~ 9=SNS탭)으로 의존관계 기준 재정렬. 페이지: [달록 v0.9(클로즈베타버전) 완성 충족기준](#/doc/spec-01).
	- 💬 **코멘트** (클로3 자동 추가) — 작업순번은 중요도 순위가 아니라 의존관계 기준임을 callout으로 명시. 프로필/타임라인/SNS탭도 v0.9 필수 충족기준이며 v0.9 이후 로드맵 아님.
### H파트 완료 처리 (2026-05-23)
- H-1 ✓ 완료 — tesseract.js 7.x + 공통 후보 추출 라이브러리 (`src/lib/ocr/*` 4종 신규)
- H-2 ✓ 완료 — OcrImportModal + LogEntry 진입 버튼 + 폼 상태 주입 (자동 저장 금지)
- H-3 — 미완료 (공식 API 연동, 로드맵 유지)
### G-4 재정의 (2026-05-23)
G-4는 더 이상 단일 "보안점검 + 지인배포" 이벤트가 아니다. v0.9 충족기준 §5 작업 1~9를 포괄하는 메타 항목으로 재정의됨. 우선순서는 §5 작업번호를 따른다.
### I파트 격상 (2026-05-23)
I-1/I-2/I-3는 "G-4 이후" 후순위 로드맵에서 **v0.9 필수 작업 7/8/9로 격상**. v0.9 이후 로드맵이 아니다.
### 다음 업무일로 미룬 작업 (2026-05-23 마무리에서 제외)
> 🗓️ (gray_bg 콜아웃)
> **MCP브라우징 보고서와 달록(PaceLog)설명서는 2026-05-23 마무리 작업에서는 최신화하지 않는다.** 두 문서는 다음 업무일에 별도 작업으로 진행한다. **MCP브라우징 보고서**는 실제 브라우징 검수 후 작성하고, **달록(PaceLog)설명서**는 v0.9 충족기준과 최신 기능설명서/UI설명서/MCP브라우징 보고서를 종합한 뒤 작성한다.
### 진행순서 갱신
F-5 ✓ → F-6 ✓ → F-6b ✓ → F-6c ✓ → E-6 ✓ → C-6 ✓ → F-6d ✓ → F-6e ✓ → C-7 ✓ → I-0 ✓ → F-7 ✓ → F-8 ✓ → F-9 ✓ → **V-1 ✓** → **V-2 ✓** → **V-3 ✓** → **V-4 ✓** → **H-1 ✓** → **H-2 ✓** → §5 작업 1 (데이터 귀속) → 작업 2 (보안) → 작업 3 (환경) → 작업 4 (로그인) → 작업 5 (CS·약관) → 작업 6 (본인인증) → 작업 7 (프로필) → 작업 8 (타임라인) → 작업 9 (SNS탭) → H-3 → J파트
### 보관
이전 본문 (260522 v6 / 43/53): [작업 체크리스트 v6_260523_1](#/doc/archive-checklist-01)
---
## 📋 마크다운 원본 v3 (단일 코드블록 / 후처리 0)
> v1·v2는 본문 내부 ``` fence 충돌로 실패. v3은 본문에서 부록 §HTML 원본 첨부의 ``` 코드블록만 일반 텍스트 단락으로 풀어 충돌 자체를 제거.
> 펼친 뒤 코드블록 **우측 상단 Copy 버튼** 클릭 → raw 마크다운 그대로 복사 (별도 후처리 불필요).
> 마지막 자동 갱신: 2026-06-03 08:05 KST

<details>
<summary>마크다운 원본 전체 펼쳐보기 (v3)</summary>

> 📌 보존 메모(아카이브): 이 `<details>` 토글 내부는 위 본문(A파트~보관 섹션, "F-9 갱신"·"v0.9 마무리 갱신"까지)을 통째로 한 번 더 담은 **마크다운 원본 사본**이다. Notion 원본에서는 코드블록(```markdown … ```) 안에 동일 텍스트가 1:1로 들어 있으며, 내용은 위 본문과 동일하다(끝부분 "보관: 이전 본문 (260522 v6 / 43/53)"까지). 무손실 보존을 위해 사본의 존재와 범위를 명시하되, 동일 텍스트의 물리적 중복 전사는 위 본문으로 갈음한다. 정밀 원본이 필요하면 Notion 페이지의 토글 또는 로컬 `docs/dallog_checklist_260522_v6.html`을 참조.

</details>
---
## J파트 — 셀기능 추가 (2026-05-26 신설)
### J-1. 셀기능 Phase 1~4 (체성분·러닝)
- [x] **셀기능-1** — CellModePagination 공통 유틸 (10/30/50)
- [x] **셀기능-2** — CellModeBody (체성분 8컬럼) Phase 1+2+3
- [x] **셀기능-3** — CellModeRunning (러닝 14컬럼) Phase 4
- [x] **셀기능-4** — Settings 러닝 루틴(프로젝트) CRUD UI
- [x] **셀기능-5** — `running_logs.routine_id` 마이그레이션 + 저장 활성화
- [x] **셀기능-6** — 시각검증 후속 fix 9건 (자세히 모달·삭제·UI 마감·정렬·컬럼커스텀)
### J-2. 셀기능 Phase 5 (근력) — 세컨드 페이즈 보류
- [ ] **셀기능-7** — 근력 셀 모드 (옵션 B: 1행=1세트, 세션 stripe + 새 세션/세트 분리 버튼, 자동 볼륨·1RM)
	- 📐 **추천안**: [핸드오프 26-05-26_1 §3](#/doc/handoff-13) 참조
	- 📐 useColumnConfig hook 재사용 가능 (이미 구현됨)
	- ⏱️ 예상 시간: 6~8시간
### J-3. 셀기능 마무리 (Phase 1~4 후속)
- [ ] **셀기능-마감-1** — RunRoutine 확장 (`mileage_plan`·`default_shoes`·`period_start/end` UI) — 세컨드 페이즈 동반
- [ ] **셀기능-마감-2** — 대시보드에 "루틴별 마일리지 진척률" 카드 추가 — 세컨드 페이즈 동반
---
## ⚠️ 작업 2 (멀티유저 보안) 필수 동반 — 이슈 11
> 🚨 (red_bg 콜아웃)
> **누락 절대 금지 — 셀기능 시각검증에서 발견된 보안 이슈**
> v0.9 충족기준 **작업 2 (멀티유저 데이터 분리·보안관리)** 수행 시 아래 항목 반드시 포함:
> - [ ] **작업2-RLS-1** — Supabase Dashboard Authentication > Policies 접속 후 `run_type_configs`, `shoe_configs`, `exercise_configs`, `app_settings` RLS 정책 진단
> - [ ] **작업2-RLS-2** — 결정: (a) 글로벌 관리자 귀속(권고) — SELECT 전체 허용 + INSERT/UPDATE/DELETE 마스터/운영자만 / (b) 사용자별 귀속 — user_id 컬럼 추가 + 분리 마이그레이션
> - [ ] **작업2-RLS-3** — OAuth 계정(`ccy4848@gmail.com`)으로 재테스트 — 하단 Nav·설정에서 런타입 드롭다운 정상 노출 확인
> - [ ] **작업2-RLS-4** — 영향 받는 다른 테이블 동일 정책 점검 (`body_records`·`running_logs`·`strength_logs` 등 user_id 기반 분리 검증)
> **리마인드 4중 등재 위치:**
> - 본 체크리스트 (위 4건)
> - [핸드오프 26-05-26_1 §11-3](#/doc/handoff-13)
> - [v0.9 충족기준 §8 작업 2 보강](#/doc/spec-01)
> - 작업보고 `260526-월요일_셀기능 시각검증 후속 fix` §4
---
**갱신:** 2026-05-26 셀기능 추가 작업 J파트 신설. 작업 2 RLS 보강 항목 동반 등재 (4중 리마인드 완료).
---
## K파트 — 셀기능 2차 fix + 컬럼 필터 + 신발 마일리지 (2026-05-26 추가)
### K-1. 시각검증 2차 잔여 fix
- [x] **K-1** — 컬럼 popover 모바일 잘림 해소 (fixed center overlay)
- [x] **K-2** — 셀 시간 컬럼 width 보강 (95→120px, 시간 input flex)
- [x] **K-3** — 셀 minHeight 보강 (30→36px, boxSizing)
- [x] **K-4** — 삭제 NotifyDialog 강제 알림 + count 검증 + RLS 안내
### K-2. 신규 기능
- [x] **K-5** — 컬럼 필터 hook (useColumnFilters) — AND 결합, 카테고리 체크박스
- [x] **K-6** — 컬럼 필터 popover UI (검색·전체선택/해제·적용/해제)
- [x] **K-7** — 체성분: 프로젝트 필터
- [x] **K-8** — 러닝: 런타입·루틴·신발·마일리지 4종 필터
- [x] **K-9** — 대시보드 RUNNING 신발별 누적 마일리지 가로 막대그래프
- [x] **K-10** — Settings 신발 목록에 누적 마일리지 병기
### K-3. 후속 권고
- [ ] **K-fu-1** — RunRoutine 마일리지 plan 확장 (mileage_plan·default_shoes·period_start/end) 시 대시보드에 "루틴별 마일리지 진척률" 추가 — 세컨드 페이즈
---
## ⚠️ 작업 2 (멀티유저 보안) — RLS 검증 항목 보강
> 🚨 (red_bg 콜아웃)
> **누락 절대 금지 — 본 항목은 이슈 11(OAuth 런타입 차단) + 이슈 2 잔여(삭제 차단)의 공통 원인 의심**
> v0.9 작업 2 수행 시 아래 점검 반드시 포함:
> - [ ] **작업2-RLS-1** — `run_type_configs` / `shoe_configs` / `exercise_configs` / `app_settings` RLS 정책 진단 (이슈 11)
> - [ ] **작업2-RLS-2** — 글로벌 vs 사용자별 결정 (글로벌 권고)
> - [ ] **작업2-RLS-3** — OAuth 계정 재테스트 (런타입 드롭다운 노출 확인)
> - [ ] **작업2-RLS-4** — `body_records` / `running_logs` / `strength_logs` 의 DELETE 정책 진단 (이슈 2 잔여)
> - [ ] **작업2-RLS-5** — 다른 user_id 데이터 접근 차단 테스트
> - [ ] **작업2-RLS-6** — master 계정과 OAuth 계정 권한 동일성 점검
> **리마인드 4중 등재 유지:** 본 체크리스트 / 핸드오프 26-05-26_1 / v0.9 충족기준 / 각 셀기능 작업보고
---
**갱신:** 2026-05-26 셀기능 2차 fix + 필터 + 신발 마일리지 K파트 신설. 작업 2 RLS 보강 항목 추가 (이제 6건).
---
## 🆕 갱신 (2026-05-27 — E-7 AI 브리프 백엔드 OpenAI 라인 전환)
> 본 컨텍스트(2026-05-27 수요일)에서 AI 브리프 기본 백엔드를 **Claude Sonnet 4 → OpenAI gpt-5.4-mini-2026-03-17** 로 전환. Claude Sonnet 4 는 폐기하지 않고 **fallback 백엔드**로 유지하여 즉시 롤백 가능 구조.
>
> **갱신 진행률:** 50 / 58 완료 (E-7 1건 신규 추가·완료)
> **갱신 커밋:** `e81fe3d` (`origin/main` push 완료)
> **관련 페이지:** [260527-수요일_E7-AI브리프 OpenAI 라인 전환](#/doc/workreport-65) / [01.260518_CF Workers AI 브리프 프록시 구축](#/doc/workreport-01)
### 🆕 E-7 — AI 브리프 백엔드 Claude → OpenAI 전환 (fallback 으로 Claude 유지)
- [x] **E-7** — AI 브리프 provider OpenAI 라인 전환 + Claude fallback 유지
	- 설명: CF Workers 프록시(`workers/brief-proxy/index.js`)에 OpenAI/Anthropic 어댑터 도입, 기본 = `gpt-5.4-mini-2026-03-17`, fallback = `claude-sonnet-4-20250514`. Worker 응답은 Anthropic Messages 형식으로 정규화 → 기존 `extractProseBody` / `parseVisualBrief` 무손상. UI 문구 "Claude 브리프 생성 중..." → "AI 분석 및 보고 생성중...".
	- 📖 **INTENT — 완료** — 기획서 `docs/260527_ai_brief_claude_to_gpt_plan.md` 기반. 선정 우선순위는 비용 아닌 **속도 · 최신 DB 요약 역량 · UI 적합성 · 품질** (비용은 마지막). OpenAI `/v1/models` 조회로 `gpt-5.4-mini-2026-03-17` 확인 → **안정성 우선**으로 날짜 고정 모델 채택. 클라이언트는 `provider: 'auto'` 만 보내고 모델명은 Worker env(`DEFAULT_BRIEF_MODEL`)가 결정 → 추후 사업자 계정 키 · 모델 교체 시 코드 수정 불필요(Worker secret 만 갱신). Codex 적대적 검수 1회 수행 후 3건 모두 반영(Origin 게이트 / `max_completion_tokens` 단독 전송 / 빈 본문을 fallback 트리거로 분류).
	- 💬 **코멘트** (클로 자동 추가) — 커밋 `e81fe3d` `origin/main` push 완료. 수정 파일 6개: `workers/brief-proxy/index.js` · `wrangler.toml` · `.env.example` · `src/lib/briefApi.ts` · `src/lib/claude.ts` · `src/pages/CoachNotes.tsx`. 작업보고: [260527-수요일_E7-AI브리프 OpenAI 라인 전환](#/doc/workreport-65). 외부 배포 전 `OPENAI_API_KEY` 사업자 계정 키 교체 필요(Worker secret 만 갱신). Worker rate limit / 사용자 인증은 v0.9 충족기준 §5 작업 2 보안 트랙에서 통합 처리 권장.
### 환경변수 확정값 (Cloudflare Workers)
- `OPENAI_API_KEY` — Worker secret (등록 완료, 키 원문은 코드·문서·로그 어디에도 미기록)
- `ANTHROPIC_API_KEY` — Worker secret (기존 유지, fallback)
- `DEFAULT_BRIEF_PROVIDER=openai`
- `FALLBACK_BRIEF_PROVIDER=anthropic`
- `DEFAULT_BRIEF_MODEL=gpt-5.4-mini-2026-03-17`
- `FALLBACK_BRIEF_MODEL=claude-sonnet-4-20250514`
### 진행순서 갱신
… → V-1 ✓ → V-2 ✓ → V-3 ✓ → V-4 ✓ → H-1 ✓ → H-2 ✓ → 셀기능 1~6 ✓ → K-1~K-10 ✓ → **E-7 ✓** → §5 작업 1 (데이터 귀속) → 작업 2 (보안 — Worker rate limit / 사용자 인증 통합 처리 권장) → 작업 3 (환경) → 작업 4~9 → H-3 → J·셀기능-7 → I-1~I-3 → J파트
### 회귀 / 호환성 체크
- `extractProseBody` / `parseVisualBrief` — Worker 응답이 Anthropic Messages 형식으로 정규화되므로 영향 없음
- 기존 `briefApi.ts` / `claude.ts` 함수 시그니처 동일 — 호출자 변경 불필요
- Anthropic fallback 경로 100% 유지 — OpenAI Worker secret 미설정 시 자동으로 Anthropic 사용
---
## 🆕 갱신 (2026-05-27 — H-3 재정의: Health Connect 통합 채널 전환)
> H-3 "트래킹앱 API 연동"의 방향성이 개별 앱(삼성헬스·가민·스트라바) 직접 연동 → **Health Connect 통합 채널** 활용으로 전환된다. PWA화/Android 앱화가 선행 조건으로 추가된다.
>
> **갱신 진행률:** 50 / 58 (E-7 시점 유지 — H-3는 미완료이며 정의만 갱신)
### 이슈 전달 — [H-3 트래킹앱 API 연동]
각 앱에 직접 연동하는 방식은 아래 이유로 현실적으로 어렵다고 판단됨:
- **삼성헬스 공식 API** → 파트너 심사 필요, 현재 신청 자체가 중단된 상태
- **가민·스트라바·나이키런 등 개별 연동** → 앱마다 심사·인증 프로세스가 달라 복잡도가 높음
대신 **Health Connect를 통합 채널로 활용하는 방안**으로 방향을 잡음.
- 삼성헬스·가민·스트라바 등 500개+ 앱이 Health Connect에 이미 연결되어 있음
- Health Connect 하나만 연동하면 연결된 모든 앱의 데이터를 가져올 수 있는 구조
```plain text
갤럭시 워치 → 삼성 헬스 ↘
              가민      → Health Connect → 달록
            스트라바    ↗
```
### 선행 조건 — PWA화 또는 Android 앱화
Health Connect는 Android API이므로 달록 현재 구조(웹앱/React)로는 직접 접근 불가. 연동을 위해서는 **달록의 PWA화 또는 Android 앱화가 선행 조건**.
### 진행순서 영향
기존 진행순서표(E-7 갱신 시점)에서 H-3는 §5 작업 1~9 완료 후 위치. 본 재정의로 H-3 본격 착수의 전제는 아래 둘 다 충족 시점:
1. §5 작업 1~9 완료 (멀티유저·보안·환경분리·로그인·CS·본인인증·프로필·타임라인·SNS탭)
2. PWA화 또는 Android 앱화 트랙 진행
위 두 트랙 모두 충족된 시점에 Health Connect 연동 구현 착수.
### 적용 범위 — 갱신 대상 페이지
- ✅ 본 체크리스트 H-3 항목 본문 (메인 + v3 토글 내부 — 한 줄 안내 동시 갱신 완료)
- ✅ 달록(PaceLog)설명서 §9 로드맵 / §A-5 부록 — 동일 일자 갱신 (별도 작업)
- 보관본 [작업 체크리스트 v6_260523_1](#/doc/archive-checklist-01) — 보관 페이지(시점 스냅샷)이므로 본문 미수정
- 핸드오프·작업보고 등 시점 기록 문서 — 보존 원칙으로 본문 미수정 (각 시점의 H-3 정의는 해당 시점의 상태로 유지)
### 메모
- 본 재정의는 H-3 최초 기획 시점에 [Claude.ai](http://Claude.ai)와 논의된 "Health Connect 통합" 방향이 그동안 핸드오프 체계에 정식 반영되지 않았던 점을 바로잡는 갱신
- 본 갱신으로 v3 토글 내부 마크다운 원본은 본문 "한 줄 안내"까지 동기화된 상태. 다음 자동 갱신 사이클에는 본 갱신 섹션 내용까지 포함하여 재발행 권장
---
---
## 🆕 갱신 (2026-05-27 #2 — 별도 기획서 3종 신설)
본 일자 추가 결정으로 H-3 및 작업 2 관련 내용이 별도 정식 기획서로 분리됨. 체크리스트의 단일 항목으로 다루기엔 범위가 커서 대형/중형 프로젝트로 격상.
### 신규 페이지
| 페이지 | 위치 | 위계 |
|---|---|---|
| [🧭 PACELINK — H-3 트래커 통합 채널 + 네이티브 앱화 대형 기획](#/doc/planning-07) | 달록 PaceLog 직속 하위 | 대형 (메인페이지급) |
| [🛡️ SAFEZONE — 멀티유저 데이터 분리·RLS 보안 기반 구축](#/doc/security-01) | 달록 개발 현황 하위 | 중형 (PACELINK 선행) |
| [💰 달록 수익화 시뮬레이션 보고서](#/doc/business-08) | 달록 PaceLog 직속 하위 | 시뮬레이션 보고서 |

### 매핑
- H-3 (본 체크리스트) → 🧭 **PACELINK** 정식 기획서로 확장
- 작업 2 / 작업2-RLS-1~6 (본 체크리스트 K파트 + v0.9 §5 작업 2) → 🛡️ **SAFEZONE** 정식 기획서로 분리
- v0.9 클로즈베타 이후 수익화 시나리오 → 💰 **수익화 시뮬레이션 보고서** 신규 (보안체크 + 시각화 포함)
### 작업 순서 영향
기존 진행순서표(E-7 시점):
```javascript
... → §5 작업 1 → 작업 2 → 작업 3 → ... → 작업 9 → H-3 → J파트
```
본 갱신으로 표현 변경(작업 자체는 그대로):
```javascript
... → §5 작업 1 → 🛡️ SAFEZONE(작업 2) → 작업 3 → ... → 작업 9 → 🧭 PACELINK(H-3) → J파트
                                                                         │
                                                          (수익화 도입 검토는 💰 보고서 참조)
```
### 보존 원칙
- 본 체크리스트의 H-3 항목 본문은 그대로 유지 (재정의 메모는 페이지 끝 첫 갱신 섹션 참조)
- 작업2-RLS-1~6 체크 항목도 그대로 유지 (정식 진행 시 🛡️ SAFEZONE 페이지 Step 6에서 일괄 체크)
- 시점 기록 문서(핸드오프·작업보고)는 미수정
---
## 🆕 갱신 (2026-05-27 #3 — LIFELINE v.2 사용자 결정 반영)
[🚦 LIFELINE 설계서](#/doc/business-09) 사용자 의사결정 4건이 본 체크리스트에 동반 작업으로 신규 등재.
### L파트 — LIFELINE 파생 신규 작업
#### L-1. 법적 검토 3단계 (작업 5 동반)
- [ ] **L-1-1** — 공개 표준 약관 템플릿 차용 + 민감정보 별도 동의서 자체 작성 (v0.9 베타 전)
- [ ] **L-1-2** — AI 건강 조언 표현 가이드 자체 작성 (부상·체중·통증 표현 제한·권장 명문화)
- [ ] **L-1-3** — 베타 검증 시스템 개발 (평가양식 + AI 위험 표현 고지 + 동의서 누락 체크)
- [ ] **L-1-4** — v1.0 정식 출시 전 변호사 자문 (~50~200만원, 타협 가능)
#### L-2. SNS 제한 모드 (작업 7~9 동반)
- [ ] **L-2-1 (SNSlim-1)** — 신고 버튼 + 자동 키워드 필터·숨김 처리
- [ ] **L-2-2 (SNSlim-2)** — 차단 기능 (서로 타임라인 자동 분리)
- [ ] **L-2-3 (SNSlim-3)** — 신고 누적 N건 시 자동 임시 비공개 전환
- [ ] **L-2-4 (SNSlim-4)** — 클레임/계정 입력 (주기·광고·도용 자동 차단)
#### L-3. 운영 인프라 (자동화 80%+ DoD)
- [ ] **L-3-1** — Sentry 무료 플랜 도입 + P0 슬랙·이메일 자동 알림
- [ ] **L-3-2** — Plausible 도입 (PostHog 비추 — 비용 폭증 위험)
- [ ] **L-3-3** — 인앱 피드백 폼 (설정탭 "버그·아이디어" 버튼)
- [ ] **L-3-4** — 카카오톡 오픈채팅 베타 채널 개설
- [ ] **L-3-5** — AI 1차 응답 템플릿 (자동 "확인했습니다, X일 내 회신")
- [ ] **L-3-6** — CI/CD 자동 배포 검증 (현재 CF Pages 자동 배포 점검)
- [ ] **L-3-7** — Supabase 자동 백업 활성화 + 복원 1회 실제 테스트
- [ ] **L-3-8** — Playwright 핵심 시나리오 3개 자동화 ([Claude.ai](http://Claude.ai) 권고 — 5개는 과중)
#### L-4. AI 토큰 비용 통제 (단순 2-Tier 표준화)
- [ ] **L-4-1** — Free 월 5회 카운터 + 도달 시 Pro 권유 팝업
- [ ] **L-4-2** — AI 브리프 캐싱 (최근 2주 Supabase 저장 후 재사용)
- [ ] **L-4-3** — Haiku·gpt-5.4-mini 우선 + 프롬프트 길이 제어
- [ ] **L-4-4** — 사용자별 일일 한도 (남용 방지)
#### L-5. 결제 인프라 (v0.9 이전 뼈대)
- [ ] **L-5-1** — 포트원 또는 토스페이먼츠 계정 등록
- [ ] **L-5-2** — 카카오페이·토스페이·네이버페이 채널 활성화
- [ ] **L-5-3** — 구독 DB 스키마 초안 (`subscriptions` 테이블)
- [ ] **L-5-4** — webhook 검증 로직 뼈대 (서버 측 결제 결과 확인)
### 작업2-RLS 보강
LIFELINE v.2에서 "SAFEZONE"이라는 정식 코드명으로 분리 등재. 기존 작업2-RLS-1~6 항목은 그대로 유지하되, 정식 진행은 [🛡️ SAFEZONE 기획서](#/doc/security-01)의 6-Step 워크플로우를 따른다.
### 진행순서 갱신 (LIFELINE v.2 우선순위 반영)
```javascript
... → §5 작업 1 → 🛡️ SAFEZONE(작업 2) → L-1 법적 검토 단계 1 → L-3 운영 인프라
→ L-5 결제 뼈대 → 작업 3(환경 분리) → 작업 4(로그인) → 작업 5(CS·약관 + L-1 단계 2)
→ 작업 6 → 작업 7~9 + L-2 SNSlim → STOP 경계선 (v0.9 클로즈베타 완료)
→ [팩토핀 재착수] → 달록 = 유지보수 모드
```
### 사업성 체크 안내
본 일자 [📊 달록 사업성 체크 — 한스브릿지 관점 종합 평가서](#/doc/business-10) 신규 발행.  
**핵심 결정: v0.9 클로즈베타 + SAFEZONE 완료 = 달록 개발 STOP 경계선 / 팩토핀 재착수 2026년 7~8월.**
---
# 📌 V2 이관 — 미체크 항목 매핑 (2026-05-27 작성)
> 📌 (blue_bg 콜아웃)
> **이 섹션은 v1에 남아있는 미체크(`- [ ]`) 항목들이 V2 어느 섹션으로 이관됐는지를 정리한 매핑표입니다.**
> v1 본문은 동결됐으므로, 이 표를 기준으로 V2에서 실제 작업 토글·갱신을 진행하세요.
> ➡️ V2 페이지: [✅ 작업 체크리스트 V2 — 260527 향후 우선순위](#/doc/checklist-02)
## 🔁 매핑 요약
| v1 미체크 항목 | 이관 형태 | V2 위치 |
|---|---|---|
| **G-4** — 멀티유저 + 지인 배포 (메타 항목) | 분해 흡수 | V2 §1 작업 1 · §2 SAFEZONE+AI보안+작업3 · §3 작업 4~6 · §4 작업 7~9 (9건 일괄) |
| **H-3** — 트래킹앱 API 연동 (Health Connect 재정의) | 대형 기획 분리 | V2 §7 PACELINK — Health Connect/앱화 대형기획 |
| **I-1** — 프로필 대시보드 (공개여부 선택) | v0.9 필수 격상 | V2 §4 작업 7 — 프로필 폼 개발 |
| **I-2** — SNS형 타임라인 공개 | v0.9 필수 격상 | V2 §4 작업 8 — 타임라인 코멘트 기능 |
| **I-3** — 하단 우측 프로필 아이콘 진입점 | v0.9 필수 격상 (작업 7에 통합) | V2 §4 작업 7 — 프로필 폼 개발 (진입점 동반) |
| **J-1** — 사용자 이용패턴 분석 | 신규 §8로 분리 | V2 §8 애널리틱스·어드민 — J-1 |
| **J-2** — 커스텀 지표 조합 + AI 브리핑 리포트 | 신규 §8로 분리 | V2 §8 애널리틱스·어드민 — J-2 |
| **J-3** — 사용자 피드백 수집 기능 | 신규 §8로 분리 | V2 §8 애널리틱스·어드민 — J-3 |
| **셀기능-7** — 근력 셀모드 (옵션 B) | 후속 기능 흡수 | V2 §6 셀기능 Phase 5 — 근력 셀모드 |
| **셀기능-마감-1** — RunRoutine 확장 (mileage_plan/default_shoes/period) | 후속 기능 흡수 | V2 §6 RunRoutine 확장·루틴별 마일리지 진척률 |
| **셀기능-마감-2** — 루틴별 마일리지 진척률 카드 | 후속 기능 흡수 (마감-1과 통합) | V2 §6 RunRoutine 확장·루틴별 마일리지 진척률 |
| **K-fu-1** — RunRoutine 마일리지 plan 확장 | 후속 기능 흡수 (마감-1과 동일 트랙) | V2 §6 RunRoutine 확장·루틴별 마일리지 진척률 |
| **작업2-RLS-1~6** — RLS 정책 진단·OAuth 재테스트·DELETE 정책·권한 동일성 | SAFEZONE 흡수 (6건 일괄) | V2 §2 SAFEZONE — RLS·멀티유저 보안 구축 |

## ➕ 신규 추가 항목 (V2에서 신설)
v1에 없었으나 V2 운영을 위해 본 페이지 동결 시점에 신설한 항목:
- **V2 §1 최신 배포 스모크 검증** — 5/26~5/27 연속 큰 변경(E-7·셀모드·컬럼필터·신발 마일리지) 회귀 차단 목적, v1 동결 시점 신설
- **V2 §1 v0.9 기준문서 정합화** — 문서 산발 방지·Claude Code 투입 순서 보호 목적, v1 동결 시점 신설
- **V2 §2 AI 브리프 Worker 보안 보강** — E-7 OpenAI 전환 완료 후 외부 노출 전 비용/무단 호출 차단 목적, v1 동결 시점 신설
- **V2 §5 MCP브라우징 보고서 v4 최신화 / 설명서 3종 최신화** — v1 본문 "다음 업무일로 미룬 작업" 콜아웃에 명시된 후속 작업을 정식 체크 항목으로 승격
- **V2 §7 수익화 준비** — `💰 달록 수익화 시뮬레이션 보고서` 신설(2026-05-27)에 따라 v1 J파트 외 별도 트랙으로 추가
## 📋 운영 원칙 (재확인)
- v1 본문의 INTENT·코멘트·갱신 섹션은 **읽기 전용** — 수정·삭제 금지
- 실제 작업 토글·진행 갱신·신규 항목은 **V2에서만** 처리
- 본 매핑표는 v1 동결 시점(2026-05-27) 기준. V2가 V3로 분기될 경우 V2가 다시 보관본이 되며 V3에 동일 형식의 매핑표가 작성됨
- 본 페이지로 직접 진입하는 미래 컨텍스트는 **최상단 안내 콜아웃 → 본 매핑표 → V2 페이지** 순서로 이동
---
## 🔗 V2 운영 페이지 빠른 이동
➡️ [**✅ 작업 체크리스트 V2 — 260527 향후 우선순위**](#/doc/checklist-02) (현재 운영 중)

---
## 이전버전 (보관)
- 📄 [작업 체크리스트 v6_260523_1](#/doc/archive-checklist-01) — versions/작업-체크리스트-v6_v_260523_1.md
