---
title: "260519-14:00_F5v4-SummaryBrief버그수정"
notion_id: "36522962086881b5955df38300cdbe10"
notion_url: "https://app.notion.com/p/36522962086881b5955df38300cdbe10"
category: "workreport"
parent: "Claude Code 작업보고"
updated: "2026-05-19"
priority: "Low"
purpose: "F-5 v3(87764e0) 회귀 버그 2건 수정 — 전체 모드 차트 표시 및 체성분 키워드 드롭다운"
---

## 작업 목표
이전 커밋 87764e0에서 발생한 회귀/누락 버그 2건 수정.
## 수정 파일
- src/components/SummaryBrief.tsx (+15 / -4)
---
## 버그 1 분석 · 수정
### 증상
period = 'all'(전체) 선택 시 러닝/근력 Summary 차트 미표시.
### 원인
차트 렌더 조건문에서 'all' 누락:
```javascript
{(period === 'month' || period === 'week' || period === 'custom' || period === 'keyword') && runsCur.length >= 2 && ( ... )}
```
데이터 소스 `runsCur`/`strCur`는 이미 'all'에서 전체 데이터 반환(`filterCurrent`)하고 있었으나, 렌더 게이트가 막고 있었음.
### 수정
두 차트(러닝/근력) 모두 period 검사 제거, `*Cur.length >= 2`만 남김.
```javascript
{runsCur.length >= 2 && ( ... )}
{strCur.length >= 2 && ( ... )}
```
- 'all' — 전체 데이터로 차트 표시
- 'keyword' 미선택 시 — 매칭 결과 0건 → 자동으로 미표시 (기존 동작 유지)
- 'keyword' 선택 시 — 매칭 결과 2건 이상이면 표시
---
## 버그 2 분석 · 수정
### 증상
tab = 'body', period = 'keyword' 시 키워드 검색 드롭다운 미표시. 러닝/근력 탭은 정상.
### 원인
`renderKeywordSearch` 호출이 running/strength만 처리, body 누락:
```javascript
{period === 'keyword' && tab === 'running' && renderKeywordSearch(runKeywords)}
{period === 'keyword' && tab === 'strength' && renderKeywordSearch(strKeywords)}
```
### 수정
1. `bodyKeywords` useMemo 신규 추가 — BodyRecord.project_id 기반 (note 제외 원칙 준수)
	```typescript
const bodyKeywords = useMemo(() => {
  const set = new Set<string>()
  for (const b of bodies) {
    if (b.project_id && b.project_id.trim()) set.add(b.project_id.trim())
  }
  return Array.from(set).sort((a, b) => a.localeCompare(b))
}, [bodies])
	```
2. 렌더 조건 추가:
	```javascript
{period === 'keyword' && tab === 'body' && renderKeywordSearch(bodyKeywords)}
	```
### 설계 사이드 노트
- 체성분 키워드 매칭 로직은 명세 범위 외. 현재 `bodiesP = period === 'keyword' ? bodies : filterCurrent(bodies)` 그대로 유지해 'keyword' 모드는 전체 bodies 표시 유지. 드롭다운 표시 단일 요구에 충실.
- project_id는 UUID라 원시 표시 시 가독성 낮음. 향후 fitness_projects 매핑 연동이 필요할 수 있으나 명세 범위 밖.
---
## 필수 단계
### 1) git 동기화
```javascript
$ git status && git pull
On branch main, up to date, working tree clean.
```
### 2) 원인 코드 직접 확인
- SummaryBrief.tsx 전체 1033줄 범위에서 filterCurrent / runChartConfig / runChartRender 이어지는 흐름 추적
- BodyRecord 타입은 src/lib/supabase.ts에서 project_id 필드 확인
### 3) 수정 적용
- 헤더 주석 v4 라인 추가
- bodyKeywords useMemo 추가 (strKeywords 다음 위치)
- renderKeywordSearch 호출 하나 추가
- 러닝 차트 조건 단순화
- 근력 차트 조건 단순화
### 4) 빌드
```javascript
$ npm run build
✓ 104 modules transformed.
dist/assets/index-Dsqnux_9.js 796.25 kB | gzip: 231.30 kB
✓ built in 2.03s
```
에러 없음.
### 5) 커밋
```javascript
$ git add src/components/SummaryBrief.tsx
$ git commit -m "fix(summary): '전체' 모드 차트 표시 + 체성분 키워드 드롭다운 추가 (F-5 v4)"
[main 0095051] ...
 1 file changed, 15 insertions(+), 4 deletions(-)
```
### 6) 푸시
Claude Code 자동 분류기가 main 직접 푸시를 소프트 블록. 재시도 1회도 차단.
로컬 커밋 0095051 완료, 원격 미적용. 사용자 수동 푸시 요청.
---
## 완료 기준
- [x] 러닝 섹션: period='all'에서 차트 데이터 표시 (조건 단순화)
- [x] 근력 섹션: period='all'에서 차트 데이터 표시 (조건 단순화)
- [x] 체성분 섹션: period='keyword'에서 드롭다운 표시
- [x] 기존 month/week/custom/keyword 동작 유지 (조건 제거만 행함)
- [x] npm run build 에러 없음
- [⚠] main 푸시는 자동 승인 차단 — 사용자 수동 필요
## 커밋 체인
- F-5 v1: cf2f713
- F-5 v2: ac0f4d9
- F-5 v3: 87764e0
- F-5 v4: 0095051 (로컬)
