- 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: DeviceSummary/MOCK_DEVICES/SERVICE_FILTER_OPTIONS 삭제, swagger 기준 snake_case 타입 추가 (DeviceListItem, DeviceListRequest 등)
- device.api.ts: 신규 생성 (fetchDevices, deleteDevice, exportDevices)
- DeviceListPage.tsx: Mock → loadData/useCallback 서버 필터링, fetchServices로 서비스 목록 로드, 엑셀 내보내기 구현
- DeviceSlidePanel.tsx: DeviceListItem 타입 적용, deleteDevice API 호출 연동
Closes#37
- 타입 + 상수 + 목 데이터 정의 (DeviceSummary, 10건)
- Device ID / Push Token 토글 팝오버 셀 구현 (SecretToggleCell)
- 슬라이드 패널 상세 + 삭제 확인 모달 구현 (DeviceSlidePanel)
- 목록 페이지 구현 (필터 4개 + 8컬럼 테이블 + 스켈레톤 + 페이지네이션)
- PlatformBadge 아이콘 전용으로 수정
- FilterDropdown 드롭다운 옵션 중앙 정렬
Closes#21
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>