---
title: "핸드오프 — 프로필 공개 대시보드/기록 기능 (스냅샷 마이그레이션 적용 완료)"
category: "handoff"
document_type: "핸드오프"
source_status: "original"
knowledge_group: "03_history"
priority: "High"
purpose: "프로필 공개 스냅샷 기능(PR#32)·타인 프로필 폭 수정(PR#33) 완료 상태와 후속 확인 항목을 새 컨텍스트가 즉시 이어받게 하는 핸드오프. profile_publications 마이그레이션 적용·검증 완료 반영."
read_when: ["최신상태복구","남은작업·우선순위","배포·도메인","DB·RLS·보안"]
updated: "2026-06-04"
work_timestamp: "20260604_195240"
context: "달록본레포CC (D:\\dallog\\dallog_git)"
source_of_truth: "https://dallog-tools.hansbridge.co.kr/knowledge/"
---

# 핸드오프 — 프로필 공개 대시보드/기록 기능

> 새 Claude Code 컨텍스트가 즉시 이어받기 위한 인수인계. 본 세션은 **프로필 공개 스냅샷 기능 구현(PR#32) + 타인 프로필 폭 회귀 수정(PR#33)** 을 수행했고 둘 다 main 머지 완료.

## 1. 현재 상태 (한눈에)
- 기능 구현·빌드·머지 **완료**. `profile_publications` 마이그레이션 **Supabase 적용·검증 완료**(테이블 1건 + RLS 4정책 확인).
- 라이브에서 공개/관리/타인 열람 정상 동작 확인. 타인 프로필 폭 회귀도 수정 머지.
- 브랜치: `main` (작업 브랜치 2개 머지 후 정리).

## 2. 완료 작업
- 프로필 = 피드 / 프로필 기록 분리(데스크탑 2단·모바일 전환).
- 대시보드·기록 → "프로필에 공개" → 범위·보기형식 선택 → **저장시점 스냅샷(불변)** 공개.
- 공개본 관리(공개·비공개·범위수정·업데이트·삭제).
- RLS(공개읽기·본인쓰기), 비공개 필드(note) 스냅샷 제외.
- 타인 프로필(`/u/:handle`) wide main 적용(폭 회귀 수정).

## 3. 진행 중 작업
- 없음(두 작업 단위 모두 종결).

## 4. 남은 작업 / 다음 추천
1. (운영) 다른 OAuth 계정·시크릿창에서 공개 vs 비공개 가시성 **교차검증**.
2. (배포) CF Pages 최신 커밋(`4325ada`) 반영 확인. 누락 시 Deploy Hook 강제 재배포(연속 머지 webhook 누락 주의).
3. (UX 후보) "공개한 기록" 통계 클릭 → 프로필 기록 영역 스크롤/포커스(현재 데스크탑 no-op).
4. (문서) 본 기능 **UI시각화 설명서**(MCP 스크린샷 기반) 추후 발행 가능.

## 5. 브랜치 / 커밋
| 단위 | 커밋 | PR | 머지 |
|---|---|---|---|
| 기능 구현 | `8847da1` | #32 | `4532bc7` |
| 타인 프로필 폭 수정 | `4bebb6c` | #33 | `4325ada` |

## 6. 변경/생성 파일
- 신규: `migrations/2026-06-02_profile_publications.sql` · `src/lib/publications.ts` · `src/components/profile/{PublishModal,PublicDashboardCard,PublicRecords,ProfileRecords}.tsx`
- 수정: `src/components/dashboard/BodySection.tsx` · `StrengthSection.tsx` · `src/pages/SocialProfilePage.tsx` · `Dashboard.tsx` · `History.tsx` · `src/index.css` · `src/components/Layout.tsx`

## 7. 설계 결정 (요약)
- 스냅샷 = JSONB 동결(불변·보안·재현). 원본 수정과 분리.
- 기존 대시보드 섹션 `readOnly` 가법 옵션(기본 false) 재사용 → 그래프 충실 + 기존 UI 무손상.
- 빌드 단일 경로 `loadPublishSource`+`buildSnapshotFor`(대시보드·기록·관리 공용).
- RLS 본인쓰기·공개읽기, 마스터 우회 없음.

## 8. 사용자(사장님) 선호 / 주의사항
- "논스톱 진행" 지시 시 중간 컨펌 없이 끝까지, 범위 임의 축소 금지, 의사결정은 기록.
- **기존 UI 구현 절대 훼손 금지** — 충돌 시 우회 우선, 불가피한 최소수정 후 원복.
- git: 수정 파일만 명시 add(`git add .`/`-A` 금지). push·머지는 명시 지시 시 자동.
- 데스크탑 우선·완성형. 비개발 전공자 대상 — 친절한 평어 해설 병기.

## 9. 이슈 / 해결 / 미해결
- **(해결) 타인 프로필 폭 찌그러짐**: 원인 = `Layout.WIDE_ROUTES` 정확매칭이라 동적 `/u/:handle` 누락. 해결 = `startsWith('/u/')` 추가. (Playwright 실측으로 원인 규명 — 추측 금지 사례.)
- **(해결) 마이그레이션 의존**: 적용 전 공개기능 무동작 → Supabase 수동 적용·검증 완료.
- **(미해결 없음)**. 후속은 §4 확인/UX 후보 수준.

## 10. 관련 문서 (동일 세션 산출)
- 작업보고: `20260604_195220_작업보고_프로필공개대시보드기록-스냅샷기능-타인프로필폭수정.md`
- 기능설명서: `20260604_195230_기능설명서_프로필공개대시보드기록.md`
