---
title: "📊 260530_주간 마일리지 집계표 + 기록 러닝 주간보기 신설"
notion_id: "37022962086881f98620e61b2b230ce8"
notion_url: "https://app.notion.com/p/37022962086881f98620e61b2b230ce8"
category: "workreport"
parent: "Claude Code 작업보고"
updated: "2026-05-30"
priority: "Medium"
purpose: "RUNNING 대시보드·기록>러닝에 주간 단위 마일리지 분석 기능 추가 (WeeklyMileageTable 신설, 주차 기준 정의)"
---

## 작업 개요

RUNNING 대시보드와 기록>러닝에 주간 단위 마일리지 분석 기능을 추가(기능 추가, 기존 기능 교체 아님). 사장님 오더(A~F) + 운영지침(범위축소 금지·완성형·끌까지 검증·기록).

## 구현 상세 (오더 매핑)

### A. 주간 마일리지 표 신설

RUNNING 탭 최하단. 11컬럼: 주간·누적마일리지·러닝횟수·전주대비·평균시간·평균페이스·평균속도·케이던스·평균심박·칼로리/주·칼로리/km. 5/10/30행 + 페이지네이션 + 현재주 강조(좌측 인디케이터·라임 배경·'현재' 배지). 오타 주의: 스크린샷 '전월대비'는 오타 → '전주대비'로 구현.

### B. RUNNING 레이아웃 재배치

상단 통계표 → 심박·케이던스·페이스 추이(30회) → 신발별 누적 → 월별(3개월) → 주간(신규). 기존 그래프·데이터 보존.

### C/D. 기록>러닝 주간보기 모드

달력·큰썸네일·**주간보기**·한줄자세히(순서 준수, 큰썸네일과 한줄자세히 사이). 러닝 탭 전용 노출. 대시보드와 동일한 공용 WeeklyMileageTable 재사용 + filteredRuns(검색·기간필터) 전달.

### E. 주차 기준

주 시작일(월)이 속한 연도 · 그 해 첫 월요일=1주차. date-fns/dayjs 미사용, 순수 Date. 기존 데이터에 주차 개념 없어 충돌 없음.

### F. 러닝횟수 컬럼

running_logs 그룹화 count로 구현 (구현 우선 원칙 충족).

## 신규/수정 파일

- 신규: `src/lib/weeklyMileage.ts`(142줄) · `src/components/WeeklyMileageTable.tsx`(99줄)
- 수정: `src/index.css`(+51) · `src/components/dashboard/RunningSection.tsx`(재배치) · `src/pages/History.tsx`(모드 추가)

## 집계 정의 (구현 기준)

- 누적마일리지 = 해당 주 거리 합계 · 러닝횟수 = 주내 기록 건수
- 평균시간 = 총시간/횟수(1회 평균) · 평균페이스 = 총시간/총거리(가중) · 평균속도 = 가중
- 케이던스·심박 = 단순평균 · 칼로리/주 = 합 · 칼로리/km = 주칼로리합/주거리합
- is_record=false 제외(null은 포함) — 기존 패턴 일치

## 검증

- `npm run build` ✅ 438 modules · 3.01s · tsc 통과
- 주차 단위검증 ✅: 2026-05-25→26-21·2026-05-30→26-21(현재주)·2026-01-05→26-1·2026-12-28→26-52. 스크린샷·E예시②③ 일치
- ⚠️ E예시①(2025-12-29→25-53)만 1주 차이(내 규칙 25-52). 스크린샷 본문(21주차)·예시②③와는 모두 일치 → 본문 데이터 기준 규칙 채택, 연말 경계 1주 차이는 사장님 확인 대기

## 커밋·머지

- `80024b6 feat(running): 주간 마일리지 집계 테이블 + 기록 러닝 주간보기 모드 신설`
- PR #17 → main `d51d7f4` · git add 수정 5파일만 명시(add . 금지 준수) · CF Pages 자동 배포

## 기존 기능 보존 확인

상단 통계표·추이 그래프·신발 누적·월별 그래프·달력·큰썸네일·한줄자세히·필터·검색·페이지네이션 모두 유지(코드상 기존 블록 미변경, 순서만 재배치).
