-
디바이스 목록
+
+
+ download
+ 엑셀 다운로드
+
+ }
+ />
+
+ {/* 필터바 */}
+
+
+ {/* 테이블 */}
+ {loading ? (
+ /* 로딩 스켈레톤 */
+
+
+ {renderTableHead()}
+
+ {Array.from({ length: 5 }).map((_, i) => (
+
+ |
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ ))}
+
+
+
+ ) : paged.length > 0 ? (
+
+
+
+ {renderTableHead()}
+
+ {paged.map((device, idx) => (
+ handleRowClick(device)}
+ >
+ {/* 소속 서비스 */}
+ |
+
+ {device.service}
+
+ |
+ {/* 플랫폼 */}
+
+
+ |
+ {/* Device ID */}
+
+
+ |
+ {/* Push Token */}
+
+
+ |
+ {/* 푸시 수신 */}
+
+
+ |
+ {/* 광고 수신 */}
+
+
+ |
+ {/* 태그 */}
+
+ 0} />
+ |
+ {/* 등록일 */}
+
+
+ {formatDate(device.createdAt)}
+
+ |
+
+ ))}
+
+
+
+
+ {/* 페이지네이션 */}
+
+
+ ) : (
+
+ )}
+
+ {/* 슬라이드 패널 */}
+ setPanelOpen(false)}
+ device={selectedDevice}
+ />
);
}
diff --git a/react/src/features/device/types.ts b/react/src/features/device/types.ts
index 311610f..cbdc7b0 100644
--- a/react/src/features/device/types.ts
+++ b/react/src/features/device/types.ts
@@ -1 +1,184 @@
-// Device feature 타입 정의
+// 플랫폼 타입
+export const PLATFORM = { IOS: "iOS", ANDROID: "Android" } as const;
+export type Platform = (typeof PLATFORM)[keyof typeof PLATFORM];
+
+// 필터 옵션 상수
+export const SERVICE_FILTER_OPTIONS = [
+ "전체 서비스",
+ "쇼핑몰 앱",
+ "파트너 센터",
+ "물류 시스템",
+];
+export const PLATFORM_FILTER_OPTIONS = ["전체", "iOS", "Android"];
+export const PUSH_CONSENT_FILTER_OPTIONS = ["전체", "동의", "미동의"];
+
+// 기기 데이터
+export interface DeviceSummary {
+ id: string;
+ platform: Platform;
+ deviceModel: string;
+ osVersion: string;
+ service: string;
+ serviceCode: string;
+ token: string;
+ push: boolean;
+ ad: boolean;
+ tags: string[];
+ createdAt: string;
+ lastActiveAt: string;
+ appVersion: string;
+}
+
+// 목 데이터 (HTML 시안 기반 10건)
+export const MOCK_DEVICES: DeviceSummary[] = [
+ {
+ id: "a3f1e8b0-7c2d-4a5e-9b1f-6d8c3e2a4f70",
+ platform: "iOS",
+ deviceModel: "iPhone 15 Pro",
+ osVersion: "iOS 17.2",
+ service: "쇼핑몰 앱",
+ serviceCode: "SVC_MALL",
+ token: "f83j20dk4829sla92kasdLp3mN7qR1xW5vB8yT0uZ6cH2fJ4gK9eA",
+ push: true,
+ ad: true,
+ tags: ["VIP", "프리미엄"],
+ createdAt: "2023-11-01 14:20",
+ lastActiveAt: "2024-01-15 09:30",
+ appVersion: "3.2.1",
+ },
+ {
+ id: "b7d2c9e1-3f4a-5b6c-8d7e-9f0a1b2c3d4e",
+ platform: "Android",
+ deviceModel: "Galaxy S24 Ultra",
+ osVersion: "Android 14",
+ service: "파트너 센터",
+ serviceCode: "SVC_PARTNER",
+ token: "a1b2c3d4x8y9z0e5f6g7Hj2kL4mN6pQ8rS0tU3vW5xY7zA9bC1dE",
+ push: true,
+ ad: false,
+ tags: ["이벤트", "신규"],
+ createdAt: "2023-11-01 13:45",
+ lastActiveAt: "2024-01-14 18:20",
+ appVersion: "3.1.8",
+ },
+ {
+ id: "c5e3a1b9-8d7f-4c2e-a6b0-1d9e8f7a5c3b",
+ platform: "iOS",
+ deviceModel: "iPhone 14",
+ osVersion: "iOS 16.5",
+ service: "쇼핑몰 앱",
+ serviceCode: "SVC_MALL",
+ token: "x9y8z7w6a1b2v5u4t3Qp7rS9kL2mN4jH6fD8gB0cE1aW3xY5zV",
+ push: false,
+ ad: false,
+ tags: [],
+ createdAt: "2023-10-31 09:12",
+ lastActiveAt: "2023-12-20 11:05",
+ appVersion: "2.9.4",
+ },
+ {
+ id: "d9f4b2a7-1e6c-4d8f-b3a5-7c0e9d2f1a8b",
+ platform: "Android",
+ deviceModel: "Galaxy Z Flip5",
+ osVersion: "Android 13",
+ service: "물류 시스템",
+ serviceCode: "SVC_LOGISTICS",
+ token: "k1l2m3n4r8s9o5p6q7Xa3bC5dE7fG9hJ1kL3mN5pQ7rS9tU1vW3x",
+ push: true,
+ ad: true,
+ tags: ["임직원"],
+ createdAt: "2023-10-30 18:30",
+ lastActiveAt: "2024-01-10 07:45",
+ appVersion: "3.0.2",
+ },
+ {
+ id: "e2a8c6d4-5b3f-4e1a-9c7d-0f8b2e6a4d1c",
+ platform: "iOS",
+ deviceModel: "iPad Pro 12.9",
+ osVersion: "iPadOS 17.1",
+ service: "파트너 센터",
+ serviceCode: "SVC_PARTNER",
+ token: "r8s9t0u1y5z6v2w3x4Kb7cD9eF1gH3jK5lM7nP9qR1sT3uV5wX7z",
+ push: true,
+ ad: false,
+ tags: ["Test"],
+ createdAt: "2023-10-28 11:15",
+ lastActiveAt: "2024-01-12 15:00",
+ appVersion: "3.2.0",
+ },
+ {
+ id: "f1b7a3c5-9d2e-4f8a-b6c0-3e7d1a9f5b2c",
+ platform: "Android",
+ deviceModel: "Pixel 8 Pro",
+ osVersion: "Android 14",
+ service: "쇼핑몰 앱",
+ serviceCode: "SVC_MALL",
+ token: "Qw3eR5tY7uI9oP1aS3dF5gH7jK9lZ1xC3vB5nM7qW9eR1tY3uI5",
+ push: true,
+ ad: true,
+ tags: [],
+ createdAt: "2023-10-27 16:40",
+ lastActiveAt: "2024-01-08 12:10",
+ appVersion: "2.8.5",
+ },
+ {
+ id: "0a9b8c7d-6e5f-4a3b-2c1d-0e9f8a7b6c5d",
+ platform: "iOS",
+ deviceModel: "iPhone 13 mini",
+ osVersion: "iOS 16.1",
+ service: "물류 시스템",
+ serviceCode: "SVC_LOGISTICS",
+ token: "mN4pQ6rS8tU0vW2xY4zA6bC8dE0fG2hJ4kL6mN8pQ0rS2tU4vW6x",
+ push: false,
+ ad: false,
+ tags: [],
+ createdAt: "2023-10-25 10:05",
+ lastActiveAt: "2023-11-30 14:50",
+ appVersion: "2.7.0",
+ },
+ {
+ id: "7e6d5c4b-3a2f-1e0d-9c8b-7a6f5e4d3c2b",
+ platform: "Android",
+ deviceModel: "Galaxy A54",
+ osVersion: "Android 13",
+ service: "쇼핑몰 앱",
+ serviceCode: "SVC_MALL",
+ token: "yZ1aB3cD5eF7gH9iJ1kL3mN5oP7qR9sT1uV3wX5yZ7aB9cD1eF3g",
+ push: true,
+ ad: false,
+ tags: ["이벤트"],
+ createdAt: "2023-10-23 08:30",
+ lastActiveAt: "2024-01-05 16:40",
+ appVersion: "3.1.0",
+ },
+ {
+ id: "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
+ platform: "iOS",
+ deviceModel: "iPhone 15",
+ osVersion: "iOS 17.0",
+ service: "쇼핑몰 앱",
+ serviceCode: "SVC_MALL",
+ token: "Hg5fE3dC1bA9zY7xW5vU3tS1rQ9pO7nM5lK3jH1gF9eD7cB5aZ3",
+ push: true,
+ ad: true,
+ tags: ["VIP", "임직원"],
+ createdAt: "2023-10-20 14:55",
+ lastActiveAt: "2024-01-13 20:15",
+ appVersion: "3.2.1",
+ },
+ {
+ id: "8f9e0d1c-2b3a-4f5e-6d7c-8b9a0f1e2d3c",
+ platform: "Android",
+ deviceModel: "Galaxy Tab S9",
+ osVersion: "Android 14",
+ service: "파트너 센터",
+ serviceCode: "SVC_PARTNER",
+ token: "Tp8sR6qP4oN2mL0kJ8iH6gF4eD2cB0aZ8yX6wV4uT2sR0qP8oN6m",
+ push: true,
+ ad: false,
+ tags: ["신규"],
+ createdAt: "2023-10-18 09:20",
+ lastActiveAt: "2024-01-02 10:30",
+ appVersion: "3.0.0",
+ },
+];