3.3 KiB
3.3 KiB
status, page_id, related_pages, last_updated
| status | page_id | related_pages | last_updated | |||
|---|---|---|---|---|---|---|
| stable | A04_NewsHistory |
|
2026-07-12 |
A04_NewsHistory — Frontend
로그인 전 최신 소식 및 개선 이력 페이지. 타임라인 목록 형태.
파일 구조
| 파일 | 위치 | 역할 |
|---|---|---|
A04_NewsHistory_UI_Page.ts |
A04_NewsHistory/A04_NewsHistory_UI_Page.ts:1-117 |
페이지 렌더링 로직 + Mock 데이터 |
A04_NewsHistory_UI_Style.css |
A04_NewsHistory/A04_NewsHistory_UI_Style.css:1-87 |
스타일 (theme.css 변수만 사용) |
컴포넌트 (섹션 빌더)
| 함수 | 위치 | 역할 |
|---|---|---|
buildHero() |
A04_NewsHistory/A04_NewsHistory_UI_Page.ts:50-68 |
Hero(제목+부제목), mist-violet→canvas 그라디언트 |
buildTimeline() |
A04_NewsHistory/A04_NewsHistory_UI_Page.ts:70-106 |
타임라인(태그+제목+날짜 행), 빈 상태 처리 |
renderA04NewsHistory() |
A04_NewsHistory/A04_NewsHistory_UI_Page.ts:111-116 |
페이지 진입점(Hero+타임라인 조립) |
- 데이터: MOCK_HISTORY 배열 (A04_NewsHistory_UI_Page.ts:33-38, 백엔드 연결 전) — 추후
GET /api/a04/history로 교체 예정 - 빈 상태: MOCK_HISTORY.length === 0이면
A04_NewsHistory_Empty로케일 키 표시
Mock 데이터 구조
타입:
type HistoryKind = "feature" | "fix" | "notice";
interface HistoryItem {
id: number;
kind: HistoryKind;
title: string;
date: string;
}
태그 변형 매핑 (KIND_META):
"feature"→ variant: "accent" →A04_NewsHistory_Tag_Feature"fix"→ variant: "success" →A04_NewsHistory_Tag_Fix"notice"→ variant: "neutral" →A04_NewsHistory_Tag_Notice
로컬라이제이션
모든 텍스트는 ui_locales[key][currentLanguageIndex] 형식으로 ui_templates에서 로드.
하드코딩 금지.
| UI 요소 | 로케일 키 |
|---|---|
| 제목 | A04_NewsHistory_Title |
| 히어로 부제목 | A04_NewsHistory_Hero_Subtitle |
| 태그 라벨 (feature/fix/notice) | A04_NewsHistory_Tag_Feature, A04_NewsHistory_Tag_Fix, A04_NewsHistory_Tag_Notice |
| 빈 상태 메시지 | A04_NewsHistory_Empty |
스타일 (CSS)
CSS 클래스 구조
.a04-news-history— 페이지 래퍼 (flex column, gap: section-gap).a04-hero— 그래디언트 배경.a04-hero__inner— 중앙 정렬 컨테이너.a04-hero__title— heading-lg, deep-iris, max 18자.a04-hero__subtitle— body 텍스트, slate, max 56자.a04-section— 공통 섹션 (max-width: page-max-width, padding: spacing-32).a04-timeline— flex 열 (gap: spacing-8).a04-timeline-row— flex row, 태그+제목+날짜 (gap: spacing-16, padding: spacing-16 spacing-24).a04-timeline-row__title— flex: 1, body-sm, charcoal.a04-timeline-row__date— caption, ash.a04-timeline__empty— 중앙 정렬, slate, body
반응형
- 900px 이하: 히어로 제목 폰트 축소
의존성
- a00_app_shell_framework — 공통 헤더·푸터
- ui_templates —
createTag()공통 컴포넌트 + 다국어
미해결 사항
- MOCK_HISTORY 데이터: 현재 하드코딩 (4개 항목)
- 백엔드 API 미구현:
GET /api/a04/history코드 주석에 언급됨