Skip to content

[FE] 나의 활동 기록 화면 — 디자인·구성 인계 #55

Description

@minyongP

프론트 인계용입니다. 백엔드(GET /v1/me/activity)와 명세(§3.7)는 올라갔고, 화면이 아직 없습니다. 담당자는 일단 발행자로 두었으니 FE에서 가져가실 때 옮겨 주세요.

무엇

나의 활동 기록 화면. 내 기록을 월별·지역별로 집계해 보여주는 한 페이지입니다. 사이드바 책장 아래 하위 화면으로 잡았고, 경로는 /me/activity를 상정했습니다(진입점 위치는 미정 — 아래 「정해지지 않은 것」 참고).

화면 구성

세로로 세 덩어리입니다. 새 컴포넌트가 필요 없고 전부 div와 CSS 폭·높이로 됩니다 — SVG·캔버스·차트 라이브러리를 쓰지 않는 것이 이 화면의 설계 전제입니다.

┌ PageTitle ─────────────────────────────────────────┐
│ 2026년, 당신의 기록                                  │
│ 지금까지 남긴 장소와 맥락을 모아 봤어요.               │
├────────────────────────────────────────────────────┤
│ [ 24곳 ]      [ 7개 구 ]      [ 8개월 ]              │  ← 큰 숫자 3열
├──────────────────────────┬─────────────────────────┤
│ 월별 기록 (세로 막대)      │ 이만큼 쌓였어요           │  ← 1.45 : 1
├──────────────────────────┼─────────────────────────┤
│ 많이 다닌 지역 (가로 막대) │ 기억에 남을 만한 것        │  ← 1.45 : 1
└──────────────────────────┴─────────────────────────┘

블록별 데이터 매핑

화면 응답 필드
24곳 / 7개 구 totals.placeCount / totals.districtCount
8개월 · 첫 기록 2026-01-14 totals.firstRecordedOn부터 오늘까지의 개월 수 + 그 날짜
월별 막대 months[]{month: "2026-03", recordCount}
많이 다닌 지역 areas[]{district, recordCount}, 이미 상위 5·정렬 완료
이만큼 쌓였어요 counts.contextCount · counts.collectionCount · counts.recordedMonthCount
기억에 남을 만한 것 highlights.firstPlaceName · highlights.busiestDay · highlights.lastPlaceName

서버가 이미 정렬·상한·빈 달 채우기를 끝내서 내려줍니다. 프론트에서 다시 자르거나 정렬하지 마세요 — 기준이 두 곳으로 갈립니다.

  • months는 첫 기록 달부터 이번 달까지 빈칸 없이 옵니다. 기록이 없는 달은 recordCount: 0입니다. 그대로 그리면 됩니다.
  • counts.recordedMonthCount(기록이 실제로 있는 달 수)와 months.length다릅니다. 화면이 둘 다 씁니다 — "8개월"(기간)과 "기록한 달 7개월"(실제).

차트 규칙

차트는 월별 막대 하나뿐입니다. 나머지는 stat tile과 목록입니다 — 단일 사실을 차트로 그리지 않습니다.

  • 막대 색은 하나입니다. 최고값을 다른 색으로 칠하지 마세요. 색이 순위를 따라가면 다음 달에 최고값이 바뀌면서 색이 막대 사이를 옮겨다닙니다. 강조는 값 라벨로 합니다 — 최고값 막대 하나에만 숫자를 얹고 나머지는 hover 툴팁(월 · N건)으로 읽습니다.
  • 세로 막대: 윗모서리 4px, 바닥에 붙임, 막대 사이 최소 6px, 축은 1px 실선 하나.
  • 가로 막대(지역): 5줄뿐이라 줄 끝에 값을 다 적습니다 — 이게 표 역할을 겸합니다.
  • 도넛·이중축·무지개 팔레트·범례를 쓰지 않습니다. 단일 계열이라 제목이 곧 계열 이름입니다.

⚠️ 막대 색에 토큰 추가가 필요합니다

브랜드 민트 #3BB7A2는 흰 배경(snow-white #FDFDFD) 대비 2.43:1이라 막대에 쓸 수 없습니다(3:1 미달). 같은 계열에서 3:1을 통과하는 가장 밝은 단계인 #2E9C88 을 제안합니다.

이 값은 tailwind.config.js에 없는 색이고 그 파일은 FE가 관리하므로, 토큰 추가는 FE 판단입니다. 지도 핀처럼 흰 테두리가 형태를 잡아주는 자리는 브랜드 민트를 그대로 써도 됩니다 — 막대는 면이라 대비가 유일한 단서입니다.

빈 상태

  • 기록 0건이어도 200입니다. months·areas는 빈 배열, 카운트는 0, firstRecordedOnhighlights의 세 값은 null입니다. 404가 아닙니다.
  • 막대가 1~2개로 줄어도 2×2 격자는 그대로 둡니다. 카드 4장이 자리를 지키면 안이 비지 않습니다. 섹션을 숨기면 오히려 화면이 무너집니다.
  • 다만 기록 0건이면 책장에서 이 화면 진입점을 숨기는 것을 제안합니다. 전부 0인 화면을 첫 사용자에게 주는 것은 이 페이지 목적과 어긋납니다.

정해지지 않은 것

  1. 진입점 위치 — 책장 안 링크인지, 설정 메뉴인지, 별도 탭인지. FE 판단이 필요합니다.
  2. 라우트 경로/me/activity로 상정했지만 확정 아닙니다.
  3. 제목 문구 — "2026년, 당신의 기록"으로 그렸는데 집계는 전체 누적이라 연도를 박으면 어긋납니다. "당신의 기록" 쪽이 맞습니다.
  4. 반응형 — 목업은 사이드바 펼침(xl) 한 구간만 그렸습니다. md 레일·sm 하단 탭바 구간은 FE 몫입니다.

목업

브라우저에서 도는 HTML 목업이 있습니다(실제 jeju-gothic.woff2logo-full.png를 물고, 값은 실행 중인 앱에서 계산된 스타일로 맞췄습니다). 레포에 커밋하지 않았으니 필요하시면 이 이슈에 첨부하겠습니다 — 말씀 주세요.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions