- StatusBadge: 매핑 실패 시 undefined variant → default 폴백 처리
- RecentMessages: STATUS_MAP 미등록 status 값 → default 폴백 처리
- DashboardPage: mapChart에서 최근 7일 날짜 항상 채우기 (빈 날짜 0으로)
- DeviceListPage/DeviceSlidePanel: 플랫폼 비교 toLowerCase() 처리
- DeviceSlidePanel: 플랫폼 텍스트 iOS/Android 정규화, 날짜 formatDate 적용
- PlatformBadge: Android 아이콘 lineHeight: 1 추가로 수직 정렬 수정
- formatDate: 서버 기본값(0001-01-01) → "-" 반환
- SecretToggleCell: position fixed로 테이블 overflow 탈출
Closes#47
- types.ts: swagger 기준 타입 전면 교체 (DashboardKpi, DailyStat, HourlyStat, PlatformStat, TopMessage, DashboardData)
- DashboardPage.tsx: map 함수 4개 수정 (mapCards, mapChart, mapMessages, mapPlatform) + hasData 조건 개선
- ServiceDetailPage.tsx: KPI 필드명 변경 (total_sent→total_send, success_rate→계산식)
- DashboardFilter.tsx: 서비스 드롭다운 제거 (전체 서비스 통합 현황만 표시)
- dashboard.api.ts: 미사용 fetchServiceList/ServiceOption 제거
Closes#33
- 대시보드 API 타입 정의 (DashboardRequest, DashboardData 등)
- API 함수 생성 (fetchDashboard, fetchServiceList)
- DashboardFilter 서비스 드롭다운 API 연동 (하드코딩 제거)
- DashboardPage 랜덤 더미 데이터 → API 호출로 전환
- 에러/빈 데이터 오버레이 분리 (API 에러 vs 조회 결과 없음)
Closes#29
- 조회 클릭 시 전체 필터 비활성화 (날짜/드롭다운/초기화/조회)
- 각 위젯 로딩 오버레이 및 스켈레톤 추가
- 조회 완료 시 랜덤 Mock 데이터로 갱신
- 공통 컴포넌트(FilterDropdown, DateRangeInput, FilterResetButton)에 disabled prop 추가
- StatsCards 뱃지 아이콘 크기 및 중앙 정렬 개선
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Vite 기본 템플릿 정리 및 index.html 수정
- guideline.html 기반 디자인 토큰 적용 (index.css)
- Feature-based 폴더 구조 (8개 feature 모듈)
- 18개 placeholder 페이지 + lazy loading 라우터
- 레이아웃 컴포넌트 (AppLayout, AppHeader, AppSidebar, AuthLayout)
- Zustand 스토어 (authStore, uiStore)
- API 계층 (Axios client, auth.api)
- 타입 정의, 유틸리티, 환경변수 설정
- ErrorBoundary, ProtectedRoute, PublicRoute
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>