---
title: "🚨 260523-토요일_v09-배포차단이슈 1차수정"
notion_id: "3692296208688116a0d8c1eb964594d4"
notion_url: "https://app.notion.com/p/3692296208688116a0d8c1eb964594d4"
category: "workreport"
parent: "Claude Code 작업보고"
updated: "2026-05-23"
priority: "High"
purpose: "v0.9 배포 차단 이슈 1차 수정 — GuestRouter 도입으로 /login 머무름·빈 root 해소 + AI 핸드오프 데이터 사본"
read_when: ["배포·도메인","최신상태복구"]
---

<callout icon="⚡" color="red_bg">
	**작업 메타**
	- 일자: 2026-05-23 (토)
	- 범위: v0.9 클로즈베타 배포 차단 이슈 1차 수정 (라우팅/로그인/기본화면 안정화)
	- 수정 파일: [src/App.tsx](src/App.tsx) 1개
	- npm run build: **성공**
	- 브라우저 검증: **5종 시나리오 모두 통과**
	- 앨 소스 수정 제한 준수 · git commit/push 미실행
</callout>
## 1. 수정한 원인 요약
### 진단: 분기가 라우터 외부에 있어 router context가 끊긴다
기존 [src/App.tsx](src/App.tsx)는 비로그인 상태에서 **라우터 외부**에서 `<LoginPage />`를 직접 렌더했음:
```typescript
// 이전 상태
if (!isLoggedIn) return <LoginPage />
return <AppRouter />
```
이 패턴의 부작용 3가지:
1. **`/strength-log`**** 빈 root** — 라우터의 `<Route path="strength-log" element={<Navigate />} />`가 `<Layout>` 자식으로 들어가 있는데, 로그인 전 단계에서 라우터 자체가 우회되면 Layout/Outlet 축이 마운트되지 않음 → 빈 화면.
2. **로그인 성공 직후 ****`/login`**** 머문름** — `isLoggedIn`이 false→true로 전환되는 지점에서 라우터 외부 렌더→라우터 내부 렌더 전환이 일어나면서 첫 프레임에서 `<Route path="/login" element={<Navigate to="/dashboard">}>`가 조해되는 경우 발생.
3. **`localStorage.dallog.masterSession`**** 존재 상태 + ****`/login`**** 직접 URL 접근** — `loading=true` 구간에서 라우터 외부 분기가 튰는 순간이 노출됨.
### 수정: 비로그인 분기도 라우터 내부로 이동 (`GuestRouter`)
```typescript
function GuestRouter() {
  return (
    <Routes>
      <Route path="/login" element={<LoginPage />} />
      <Route path="*" element={<Navigate to="/login" replace />} />
    </Routes>
  )
}

if (!isLoggedIn) return <GuestRouter />
return <AppRouter />
```
더불어 `AppRouter`에도 `<Route path="*" element={<Navigate to="/dashboard" replace />} />` 폴백을 추가해서 **알 수 없는 경로**도 빈 root가 아닌 dashboard로 흥수되도록 함.
## 2. 수정 파일 목록
<table fit-page-width="true" header-row="true">
<tr color="gray_bg">
<td>파일</td>
<td>변경 요약</td>
<td>영향 범위</td>
</tr>
<tr color="green_bg">
<td>[**src/App.tsx**](src/App.tsx)</td>
<td>`GuestRouter` 도입, `if (!isLoggedIn) return <LoginPage />` → `return <GuestRouter />`, `AppRouter` catch-all → `/dashboard` 폴백 추가</td>
<td>라우팅 안정·로그인 직후 이전·깊은 링크 처리. 애플리케이션 전체 라우팅 계층의 최상위 분기이므로 파급 사이드이펙트 없도록 메인 흐름(데모 모드 우회·OAuth 콜백·스플래시)은 모두 유지.</td>
</tr>
</table>
<callout icon="⚠️" color="orange_bg">
	**보고 사항 — 미접촉 staged 파일 4개**
	🔍 작업 시작 시점 git status는 clean (수정 파일 없음) → 작업 중 어느 시점에서 아래 4개 파일이 staged 상태로 나타남:
	- `src/components/Layout.tsx`
	- `src/components/dashboard/BodySection.tsx`
	- `src/components/dashboard/RunningSection.tsx`
	- `src/components/dashboard/StrengthSection.tsx`
	**내용**: `v0.9-stab(2026.05.23)` 식별자 코멘트 + 데스크탕 main 하단 padding 110→40px + 모바일 헤더 버튼 padding/모바일 하단탭 아이콘 크기 조정 — 이번 수정 작업과 별개의 다른 작업 산출물로 추정됨(동일 작업 수행 중인 다른 에이전트?).
	**처리**: 사용자 지시 "수정 파일만" 준수해서 **본인은 src/App.tsx만 추가 staging**. 기존 staged 4개는 손대지 않으며 사용자 판단 필요.
</callout>
## 3. 브라우저 확인 결과
로컬 Vite dev 서버(`http://localhost:5173`) + Playwright로 다음 5종 시나리오 모두 통과:
<table fit-page-width="true" header-row="true">
<tr color="gray_bg">
<td>시나리오</td>
<td>입력</td>
<td>기대 동작</td>
<td>실제 결과</td>
</tr>
<tr color="green_bg">
<td>A. 세션 있음 + `/login` 진입</td>
<td>`localStorage.dallog.masterSession='1'` → `/login`</td>
<td>`/dashboard`로 자동 redirect</td>
<td>✅ `location.href = http://localhost:5173/dashboard`</td>
</tr>
<tr color="green_bg">
<td>B. 마스터 로그인 폼 제출</td>
<td>세션 제거 후 아이디 `mster` / pw `qwer1234` 제출</td>
<td>잦은 빈화면 없이 `/dashboard`로 이동</td>
<td>✅ 제출 클릭 즉시 URL=`/dashboard`, 대시보드 렌더</td>
</tr>
<tr color="green_bg">
<td>C. `/strength-log` 진입</td>
<td>로그인 상태에서 `/strength-log`</td>
<td>`/log?tab=strength`로 redirect + 근력 탭 활성</td>
<td>✅ `location.search = ?tab=strength`, LogEntry 근력탭 UI 렌더 (날짜/구분/운동시각/사용자체중 109.9kg 자동연동 확인)</td>
</tr>
<tr color="green_bg">
<td>D. 데스크탕 1440×900 `/dashboard`</td>
<td>viewport 1440×900 + URL `/dashboard`</td>
<td>사이드바 + 다이장그래프 + KPI 4카드 + 2 그래프 정상</td>
<td>✅ 속성 109.9/41.2/33.9/30.8% 정상, 추이 차트 표시, 사이드바 master 계정 일치</td>
</tr>
<tr color="green_bg">
<td>E. 모바일 390×844 `/dashboard`</td>
<td>viewport 390×844 + URL `/dashboard`</td>
<td>헤더 + 하단 탭바 + 세로 스키림 렌더</td>
<td>✅ 하단 탭바 4개 아이콘, KPI 그리드, 추이 차트 정상</td>
</tr>
</table>
<callout icon="🖥️" color="gray_bg">
	**콘솔 경고**
	페이지당 console errors: 0, warnings: 2 (Vite HMR 관련 경고로 추정, 차단 이슈 무관). 새 에러 발생 없음.
</callout>
## 4. npm run build 결과
```javascript
> dallog@0.1.0 build
> tsc && vite build

vite v5.4.21 building for production...
transforming...
✓ 361 modules transformed.
rendering chunks...
computing gzip size...
dist/index.html                     1.79 kB │ gzip:   0.89 kB
dist/assets/index-D_f3UT5a.css      5.93 kB │ gzip:   1.81 kB
dist/assets/index-BIdXw34-.js   1,018.41 kB │ gzip: 304.45 kB
✓ built in 2.59s
```
- TypeScript 에러 없음
- 수정 전(2.44s) · 수정 후(2.59s) 명백한 성능 디그레이드 없음
- chunk 크기 경고(1018 kB)는 이미 기존에 존재하던 관점. 이번 수정 적재안.
## 5. git 상태
```bash
$ git diff --name-only
src/App.tsx

$ git add src/App.tsx

$ git status -sb
## main...origin/main
M  src/App.tsx                                # ← 이번 작업
# — 아래는 별도 작업(v0.9-stab) 산출물 —
M  src/components/Layout.tsx
M  src/components/dashboard/BodySection.tsx
M  src/components/dashboard/RunningSection.tsx
M  src/components/dashboard/StrengthSection.tsx
# — untracked —
?? .playwright-mcp/                           # Playwright 검증 아티팩트 (커밋 X)
?? docs/260523_pacelog_ai_handoff_data.md     # 직전 작업 산출물
?? docs/달록 PaceLog — AI 핸드오프 데이터_260523.md
?? verify_dashboard_1440.png                  # 검증 스크린샷
?? verify_dashboard_390.png
```
- 커밋/푸시 미실행 (사용자 지시에 따라).
- `git add .` 또는 `-A` 사용 안 함 (지시 준수).
## 6. 남은 이슈
<table fit-page-width="true" header-row="true">
<tr color="gray_bg">
<td>항목</td>
<td>분류</td>
<td>설명</td>
</tr>
<tr color="yellow_bg">
<td>다른 에이전트의 4개 staged 파일</td>
<td>**비차단**</td>
<td>v0.9-stab 레이블의 padding·모바일 헤더 조정. 끊어서 다닣은 입력이 없으므로 그대로 두면 함께 commit 감. 사용자 의도 확인 필요(먹을지/따로 뜜지).</td>
</tr>
<tr color="yellow_bg">
<td>번들 크기 1018 kB</td>
<td>**비차단**</td>
<td>gzip 304 kB. 클로즈베타 배포에는 충분. 코드 스플리팅(`React.lazy`)은 후속 작업으로 연기.</td>
</tr>
<tr color="yellow_bg">
<td>`pages/StrengthLog.tsx` 데드코드</td>
<td>**비차단**</td>
<td>현재 App.tsx에서 import 안 함(routing은 LogEntry?tab=strength로 일원화). 사용자 지시("기존 근력운동 구조 임의 변경 금지")에 따라 삭제하지 않음.</td>
</tr>
<tr>
<td>새 v0.9 차단 이슈</td>
<td>**없음**</td>
<td>이번 수정 범위 내 추가 이슈 감지 없음.</td>
</tr>
</table>
## 7. 수정 다이프 요약 (App.tsx)
```diff
 // 라우터 + 인증 가드 — 진입 스플래시 + 데모 모드 인증 우회 + /auth/callback 별도 처리 — 2026.05.15 갱신
 // F-7: 테마 선호도(system)일 때 OS 변경 반영 구독 — 2026.05.20
 // I-0(2026.05.22): /profile 더미 페이지 라우트 추가 — 본기능은 I-1~I-3에서 구현
+// v0.9 배포차단 수정(2026.05.23): 비로그인 분기를 라우터 내부로 이동(GuestRouter) — /login 머문름·인너 라우트 빈 root 해소
 ...
     <Route path="strength-log" element={<Navigate to="/log?tab=strength" replace />} />
     ...
     <Route path="settings/changelog" element={<ChangeLog />} />
+    {/* v0.9: 알 수 없는 경로는 dashboard로 안전 폴백 (빈 root 방지) — 2026.05.23 */}
+    <Route path="*" element={<Navigate to="/dashboard" replace />} />
   </Route>
 </Routes>

+// v0.9 배포차단 수정(2026.05.23): 비로그인 라우터 — /login은 LoginPage, 그 외 모든 경로는 /login으로 정규화
+function GuestRouter() {
+  return (
+    <Routes>
+      <Route path="/login" element={<LoginPage />} />
+      <Route path="*" element={<Navigate to="/login" replace />} />
+    </Routes>
+  )
+}
+
 ...
-  if (!isLoggedIn) return <LoginPage />
+  // v0.9 배포차단 수정(2026.05.23): 라우터 외부에서 LoginPage를 직접 렌더하던 분기를 GuestRouter로 대체.
+  // - 비로그인 + /login 외 경로: 라우터가 /login으로 정규화
+  // - 로그인 직후: AppRouter로 전환되어 /login → /dashboard Navigate가 즉시 작동
+  if (!isLoggedIn) return <GuestRouter />
```
## 8. 완료 기준 체크
- [x] npm run build 성공
- [x] /strength-log 진입 시 빈 화면 나오지 않음 (→ /log?tab=strength + 근력탭)
- [x] 로그인 성공 후 /dashboard로 이동함
- [x] 기존 세션이 있는 상태에서 /login 접근 시 /dashboard로 이동함
- [x] git diff --name-only 출력 (src/App.tsx)
- [x] 수정 파일만 스테이징 (`git add src/App.tsx`)
## 9. 원본 사용자 지시 (raw)
<details>
<summary>지시 원문</summary>
	```javascript
※ 주의: 동일 작업을 수행 중인 다른 에이전트가 있을 수 있음.
작업 시작 전 git status로 작업트리 상태를 확인한다.
미커밋 변경사항이 있으면 작업을 중단하고 보고한다.

원격 최신 여부 확인은 git fetch로만 수행한다.
git pull은 임의 실행하지 않는다.
단, 사용자가 명시적으로 최신 원격 기준 동기화를 지시한 경우에만,
작업트리가 깨끗한 상태에서 git pull --ff-only를 실행한다.
충돌 또는 merge 필요 상황이면 즉시 중단하고 보고한다.

작업 목표:
달록 v0.9 클로즈베타 배포를 막는 치명 이슈만 우선 수정한다.
오늘 작업 범위는 신규 기능 추가가 아니라 라우팅/로그인/기본 화면 안정화다.

우선 확인할 항목:
1. /strength-log 라우팅 실패 원인 확인 및 수정
2. 로그인 성공 후 /login에 머무르며 빈 root가 노출되는 문제 수정
3. 수정 후 최소 브라우저 확인
   - /login
   - /dashboard
   - /strength-log
   - 모바일 viewport 390px 기준 /dashboard
   - 데스탁 viewport 1440px 이상 기준 /dashboard

주의사항:
- 오늘 작업에서는 온보딩, OCR, 프로필, SNS 타임라인, 신규 입력 템플릿 기능을 추가하지 않는다.
- UI 톤앤매너 전면 수정 금지.
- F-7 전체 보완으로 범위를 확장하지 않는다.
- 기존 Supabase 테이블 구조 변경 금지.
- 기존 기록 데이터 삭제/초기화 금지.
- 임의 reset 금지.
- git add . 또는 git add -A 금지.
	```
</details>
---
<callout icon="✅" color="green_bg">
	**결론**
	v0.9 클로즈베타 배포를 막는 치명 이슈 2개(/strength-log 빈화면, /login 머무름)는 [src/App.tsx](src/App.tsx) 단일 파일 수정으로 해소. 빌드 성공, 5종 브라우저 검증 통과. **추가 차단 이슈 없음**. 커밋/푸시는 사용자 결정으로 유보.
</callout>
---
## 10. 부록 — AI 핸드오프 데이터 사본 인덱스
<callout icon="📎" color="gray_bg">
	**원본 파일**: `docs/260523_pacelog_ai_handoff_data.md` (2026-05-23 생성)
	§5 git 상태에서 untracked로 언급된 "직전 작업 산출물" 파일의 본문 사본. 한글 본문 파일(`docs/달록 PaceLog — AI 핸드오프 데이터_260523.md`)의 ① 체성분 섹션만 발췌하고 나머지 섹션은 한글 파일 참조 형식. 노션 단일 참조 보존을 위해 본문 임베드, 디스크 원본은 정리 대상.
</callout>
생성일: 2026-05-23
### ① 체성분 (전체 기간 · 93건)
<table header-row="true">
<tr>
<td>날짜</td>
<td>체중(kg)</td>
<td>골격근(kg)</td>
<td>체지방(kg)</td>
<td>체지방률(%)</td>
<td>BMR</td>
<td>메모</td>
</tr>
<tr>
<td>2026-05-23</td>
<td>109.9</td>
<td>41.2</td>
<td>33.9</td>
<td>30.8</td>
<td>2012</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-22</td>
<td>110.8</td>
<td>42.2</td>
<td>33.3</td>
<td>30.1</td>
<td>2044</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-21</td>
<td>110</td>
<td>41.4</td>
<td>33.8</td>
<td>30.7</td>
<td>2016</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-20</td>
<td>109.7</td>
<td>41.7</td>
<td>33.1</td>
<td>30.2</td>
<td>2025</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-19</td>
<td>109.7</td>
<td>41.7</td>
<td>33</td>
<td>30.1</td>
<td>2027</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-18</td>
<td>110.6</td>
<td>41.9</td>
<td>33.6</td>
<td>30.4</td>
<td>2033</td>
<td>탄수를 많이 먹은게 확실히 근유지에 필요한 글리코겐 보충에 도움이 되는거 같다. 근데 아직까진 110kg가 부담스러운데 최소한 105kg까지는 체중조절이 빠르게 되었으면 좋겠다. 일단 밥600 닭600 계란3개 식단을 쭉 이어보자</td>
</tr>
<tr>
<td>2026-05-17</td>
<td>110.6</td>
<td>41.7</td>
<td>33.9</td>
<td>30.7</td>
<td>2027</td>
<td>어제 활동량에 비해 먹는게 과했던듯.  기존계획 (아침:밥300/계란3개/들기름1스푼,점심:밥200/닭가슴300,저녁:밥250/닭가슴300)에서  어제는 활동량도 조깅을 신체보호를 위한 마일리지 관리 및 회복런 목적으로 평소의 42.5%, 저녁퇴근런도 생략한걸 생각하면 35.5%밖에 안되서 TDEE가 평균의 85%수준밖에 안된것에 반해  저제 식이는 아침과 점심은 계획대로 먹었으나 저녁은 닭가슴살을 평소 먹던 닭가슴살 제품보다 60kcal이 더 높은 크리프피닭가슴살 제품을 4개를 먹었고  저당소스이긴 하지만 소스섭취가 평소보다 많아서 그런지 계획보다 350kcal을 더 먹어서 체수분이 더 많아진듯.  그래도 하루당 칼로리적자는 나온거로 보이고 수치상 늘어난 체지방율은 아마 체수분이 늘어난것으로 추정됨. 오늘 계획은 일단 아침 조깅은 미루고 퇴근후 저녁(약 18:30~19시경)에 평소 조깅 볼륨대로 7.5km(60분)뛸 예정 평소 통증부위(발등,비골두)의 강도가 상당히 개선된 상태고 운동 텀을 12시간 이상 더 길게 가져가기 때문에 저녁조깅 자체는 괜찮을것으로 추정되나  다음날 새벽부터는 다시 루틴패턴을 맞춰야 하기 때문에 차차기조깅텀까지 12시간 미만이 될 가능성이 높은 도전성이 높은 환경임 그리고 식이계획을 좀 변경해서 (아침:밥200/계란3개/들기름1스푼,점심:밥200/닭가슴300,저녁:밥200/닭가슴300) 2000~2100kcal내외로 맞춰서  하루 평균 TDEE를 3500에 맞추는 것으로 일 1500kcal적자 유지체제로 추가 조정할 생각임.</td>
</tr>
<tr>
<td>2026-05-16</td>
<td>109.9</td>
<td>41.7</td>
<td>33.2</td>
<td>30.2</td>
<td>2027</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-15</td>
<td>109.9</td>
<td>41.5</td>
<td>33.5</td>
<td>30.5</td>
<td>2020</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-14</td>
<td>109.9</td>
<td>41.3</td>
<td>33.9</td>
<td>30.8</td>
<td>2011</td>
<td>확실히 덜움직이고 든든하게 먹은날은 뭔가 채워지긴 하는구나. 주1회정도는 달리기를 반으로 줄이고 로딩하는걸 고려해보면 좋을듯</td>
</tr>
<tr>
<td>2026-05-13</td>
<td>109.9</td>
<td>41.1</td>
<td>34.1</td>
<td>31</td>
<td>2007</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-12</td>
<td>110</td>
<td>41.2</td>
<td>34</td>
<td>30.9</td>
<td>2011</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-11</td>
<td>110.4</td>
<td>41.4</td>
<td>34.2</td>
<td>31</td>
<td>2015</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-10</td>
<td>110.7</td>
<td>41.6</td>
<td>34.1</td>
<td>30.8</td>
<td>2023</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-09</td>
<td>110.7</td>
<td>41.2</td>
<td>34.7</td>
<td>31.4</td>
<td>2011</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-08</td>
<td>111.1</td>
<td>41.6</td>
<td>34.5</td>
<td>31</td>
<td>2025</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-07</td>
<td>110.2</td>
<td>41.1</td>
<td>34.3</td>
<td>31.1</td>
<td>2008</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-06</td>
<td>110.5</td>
<td>41.2</td>
<td>34.6</td>
<td>31.3</td>
<td>2009</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-05</td>
<td>111.4</td>
<td>41.4</td>
<td>35.1</td>
<td>31.5</td>
<td>2017</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-04</td>
<td>111.9</td>
<td>41.2</td>
<td>35.8</td>
<td>32</td>
<td>2014</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-03</td>
<td>112.3</td>
<td>41.4</td>
<td>35.9</td>
<td>32</td>
<td>2020</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-02</td>
<td>112.3</td>
<td>41.3</td>
<td>34.9</td>
<td>31.1</td>
<td>2041</td>
<td>—</td>
</tr>
<tr>
<td>2026-05-01</td>
<td>111.5</td>
<td>41.7</td>
<td>34.7</td>
<td>31.1</td>
<td>2028</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-30</td>
<td>111.5</td>
<td>41.2</td>
<td>35.5</td>
<td>31.8</td>
<td>2012</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-29</td>
<td>111.8</td>
<td>41.4</td>
<td>35.5</td>
<td>31.8</td>
<td>2019</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-28</td>
<td>112.4</td>
<td>41.6</td>
<td>35.7</td>
<td>31.8</td>
<td>2027</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-27</td>
<td>112.1</td>
<td>41.2</td>
<td>36.1</td>
<td>32.2</td>
<td>2012</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-26</td>
<td>112.8</td>
<td>41.8</td>
<td>35.7</td>
<td>31.7</td>
<td>2034</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-25</td>
<td>112.4</td>
<td>40.9</td>
<td>36.7</td>
<td>32.7</td>
<td>2004</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-24</td>
<td>112.4</td>
<td>41.1</td>
<td>36.4</td>
<td>32.4</td>
<td>2011</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-23</td>
<td>112.8</td>
<td>41.6</td>
<td>36.1</td>
<td>32</td>
<td>2027</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-22</td>
<td>113.2</td>
<td>41.2</td>
<td>37</td>
<td>32.7</td>
<td>2014</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-21</td>
<td>112.8</td>
<td>40.3</td>
<td>38</td>
<td>33.7</td>
<td>1984</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-20</td>
<td>114.1</td>
<td>41.2</td>
<td>37.8</td>
<td>33.1</td>
<td>2018</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-19</td>
<td>114.1</td>
<td>41.8</td>
<td>37</td>
<td>32.4</td>
<td>2035</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-18</td>
<td>114.1</td>
<td>41.3</td>
<td>37.7</td>
<td>33</td>
<td>2019</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-17</td>
<td>116</td>
<td>42</td>
<td>38.5</td>
<td>33.2</td>
<td>2045</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-16</td>
<td>114.8</td>
<td>41.7</td>
<td>37.7</td>
<td>32.8</td>
<td>2034</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-15</td>
<td>114.8</td>
<td>41.7</td>
<td>37.8</td>
<td>32.9</td>
<td>2033</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-14</td>
<td>114.5</td>
<td>41.1</td>
<td>38.3</td>
<td>33.4</td>
<td>2015</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-13</td>
<td>115.1</td>
<td>41</td>
<td>39</td>
<td>48.3</td>
<td>2014</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-12</td>
<td>115.1</td>
<td>40.6</td>
<td>39.7</td>
<td>34.5</td>
<td>1999</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-11</td>
<td>114.8</td>
<td>40.2</td>
<td>40</td>
<td>34.8</td>
<td>1985</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-10</td>
<td>115.3</td>
<td>41.1</td>
<td>39.1</td>
<td>33.9</td>
<td>2016</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-09</td>
<td>115.8</td>
<td>41.4</td>
<td>39.1</td>
<td>33.8</td>
<td>2027</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-08</td>
<td>115.8</td>
<td>41.1</td>
<td>39.5</td>
<td>34.1</td>
<td>2017</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-07</td>
<td>116.4</td>
<td>41.6</td>
<td>39.4</td>
<td>33.8</td>
<td>2032</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-06</td>
<td>116.2</td>
<td>41.3</td>
<td>39.6</td>
<td>34.1</td>
<td>2025</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-05</td>
<td>116</td>
<td>40.6</td>
<td>40.4</td>
<td>34.8</td>
<td>2002</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-04</td>
<td>116.6</td>
<td>42.2</td>
<td>38.7</td>
<td>33.2</td>
<td>2053</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-03</td>
<td>117.3</td>
<td>41.8</td>
<td>39.9</td>
<td>34</td>
<td>2042</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-02</td>
<td>118</td>
<td>41.8</td>
<td>40.6</td>
<td>34.4</td>
<td>2042</td>
<td>—</td>
</tr>
<tr>
<td>2026-04-01</td>
<td>117.3</td>
<td>42.4</td>
<td>38.9</td>
<td>33.2</td>
<td>2062</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-31</td>
<td>118.2</td>
<td>42.3</td>
<td>39.9</td>
<td>33.8</td>
<td>2060</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-30</td>
<td>118</td>
<td>41.9</td>
<td>40.4</td>
<td>34.2</td>
<td>2047</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-29</td>
<td>118</td>
<td>41.7</td>
<td>40.7</td>
<td>34.5</td>
<td>2040</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-28</td>
<td>118.7</td>
<td>42.3</td>
<td>40.4</td>
<td>34</td>
<td>2060</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-27</td>
<td>118.2</td>
<td>41.3</td>
<td>41.4</td>
<td>35</td>
<td>2027</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-26</td>
<td>119.3</td>
<td>41.8</td>
<td>41.6</td>
<td>34.9</td>
<td>2047</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-25</td>
<td>118.3</td>
<td>40.9</td>
<td>42.1</td>
<td>35.6</td>
<td>2016</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-24</td>
<td>119.9</td>
<td>41.7</td>
<td>42.4</td>
<td>35.4</td>
<td>2043</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-23</td>
<td>121.1</td>
<td>43.1</td>
<td>41.4</td>
<td>34.2</td>
<td>2091</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-22</td>
<td>121.1</td>
<td>43</td>
<td>41.6</td>
<td>34.4</td>
<td>2087</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-21</td>
<td>120.2</td>
<td>41.7</td>
<td>42.7</td>
<td>35.5</td>
<td>2044</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-20</td>
<td>119.1</td>
<td>41.4</td>
<td>42.1</td>
<td>35.4</td>
<td>2033</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-19</td>
<td>120.4</td>
<td>41.3</td>
<td>43.4</td>
<td>36</td>
<td>2033</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-18</td>
<td>119.5</td>
<td>41.1</td>
<td>42.9</td>
<td>35.9</td>
<td>2024</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-17</td>
<td>120.7</td>
<td>41.9</td>
<td>42.5</td>
<td>35.2</td>
<td>2049</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-16</td>
<td>120.7</td>
<td>41.2</td>
<td>43.5</td>
<td>36</td>
<td>2029</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-15</td>
<td>120.7</td>
<td>41.1</td>
<td>43.5</td>
<td>36</td>
<td>2060</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-14</td>
<td>120.3</td>
<td>41.2</td>
<td>43.7</td>
<td>36.3</td>
<td>2052</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-13</td>
<td>120.8</td>
<td>41.2</td>
<td>43.7</td>
<td>36.2</td>
<td>2034</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-12</td>
<td>120.8</td>
<td>41.1</td>
<td>43.4</td>
<td>35.9</td>
<td>2041</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-11</td>
<td>120.1</td>
<td>41.2</td>
<td>43.8</td>
<td>36.5</td>
<td>2017</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-10</td>
<td>120.9</td>
<td>41.5</td>
<td>44.3</td>
<td>36.6</td>
<td>2025</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-09</td>
<td>121.9</td>
<td>41.5</td>
<td>44.5</td>
<td>36.5</td>
<td>2041</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-08</td>
<td>122.3</td>
<td>41.7</td>
<td>44.8</td>
<td>36.6</td>
<td>2043</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-07</td>
<td>123</td>
<td>41.9</td>
<td>45.4</td>
<td>36.9</td>
<td>2046</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-06</td>
<td>124</td>
<td>41.9</td>
<td>45.3</td>
<td>36.5</td>
<td>2070</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-05</td>
<td>123.9</td>
<td>41.9</td>
<td>45.4</td>
<td>36.6</td>
<td>2066</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-04</td>
<td>124</td>
<td>42</td>
<td>45.4</td>
<td>36.6</td>
<td>2068</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-03</td>
<td>124.2</td>
<td>42</td>
<td>45.4</td>
<td>36.6</td>
<td>2072</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-02</td>
<td>124.2</td>
<td>42</td>
<td>45.4</td>
<td>36.6</td>
<td>2072</td>
<td>—</td>
</tr>
<tr>
<td>2026-03-01</td>
<td>124.2</td>
<td>42.5</td>
<td>46.6</td>
<td>37.5</td>
<td>2046</td>
<td>—</td>
</tr>
<tr>
<td>2026-02-28</td>
<td>126.5</td>
<td>42</td>
<td>45.6</td>
<td>36</td>
<td>2117</td>
<td>—</td>
</tr>
<tr>
<td>2026-02-27</td>
<td>124.5</td>
<td>42.2</td>
<td>46</td>
<td>36.9</td>
<td>2066</td>
<td>—</td>
</tr>
<tr>
<td>2026-02-26</td>
<td>125.3</td>
<td>42.4</td>
<td>46.5</td>
<td>37.1</td>
<td>2072</td>
<td>—</td>
</tr>
<tr>
<td>2026-02-25</td>
<td>126.3</td>
<td>42.5</td>
<td>46.8</td>
<td>37.1</td>
<td>2087</td>
<td>—</td>
</tr>
<tr>
<td>2026-02-24</td>
<td>126.8</td>
<td>42.6</td>
<td>47</td>
<td>37.1</td>
<td>2094</td>
<td>—</td>
</tr>
<tr>
<td>2026-02-23</td>
<td>127.2</td>
<td>42.8</td>
<td>47.4</td>
<td>37.3</td>
<td>2094</td>
<td>복귀런 첫날 (조그100T)</td>
</tr>
<tr>
<td>2026-02-22</td>
<td>128.1</td>
<td>43</td>
<td>47.8</td>
<td>37.3</td>
<td>2094</td>
<td>저열량 식이 (300~400kcal)</td>
</tr>
<tr>
<td>2026-02-21</td>
<td>129</td>
<td>43.2</td>
<td>48.4</td>
<td>37.5</td>
<td>2094</td>
<td>단식종료 (48시간)</td>
</tr>
<tr>
<td>2026-02-20</td>
<td>130</td>
<td>43.2</td>
<td>49</td>
<td>37.7</td>
<td>2094</td>
<td>마운자로 5mg(1Pcak) 1회차 투약 시작, 단식시작</td>
</tr>
</table>
### ② 러닝 (전체 기간 · 97건)
*상세 데이터는 원본 핸드오프 파일 참조 (**`docs/달록 PaceLog — AI 핸드오프 데이터_260523.md`**)*
### ③ 근력 (전체 기간 · 22세션)
*상세 데이터는 원본 핸드오프 파일 참조 (**`docs/달록 PaceLog — AI 핸드오프 데이터_260523.md`**)*
### ④ 최근 브리프 (전문)
*상세 데이터는 원본 핸드오프 파일 참조 (**`docs/달록 PaceLog — AI 핸드오프 데이터_260523.md`**)*
### ⑤ 개인 메모 · ⑥ AI 브리프 지침
*상세 데이터는 원본 핸드오프 파일 참조 (**`docs/달록 PaceLog — AI 핸드오프 데이터_260523.md`**)*
---
> **이 파일은 사용자 요청 경로**(`docs/260523_pacelog_ai_handoff_data.md`)**에 맞춰 생성한 사본 인덱스입니다.**
> 원본 전체 데이터 파일: `docs/달록 PaceLog — AI 핸드오프 데이터_260523.md`
