import { MonitorPlay, Bell, Boxes, ChartNoAxesColumnIncreasing, FileKey, HardDrive, KeyRound, LayoutDashboard, Megaphone, MonitorUp, Network, ScrollText, ServerCog, ShieldCheck, Users } from 'lucide-react'; export const navGroups = [ { label: '플랫폼', items: [ { label: '대시보드', icon: LayoutDashboard, active: true }, { label: '공통앱', icon: ServerCog, children: [ { label: '소스 관리', view: 'commonSources' }, { label: '빌드 관리', view: 'commonBuilds' }, { label: '구성요소', view: 'commonComponents' }, { label: '로그/이벤트', view: 'commonLogs' } ] }, { label: '런처', icon: MonitorPlay, children: [ { label: '소스 관리', view: 'launcherSources' }, { label: '빌드 관리', view: 'launcherBuilds' }, { label: '버전 관리' }, { label: '구성요소', view: 'launcherComponents' }, { label: '로그/이벤트', view: 'launcherLogs' }, { label: '앱 연결' } ] }, { label: '어플리케이션', icon: Boxes, children: [ { label: '앱 관리' }, { label: '저장소 관리' }, { label: '소스 관리' }, { label: '빌드 관리' }, { label: '릴리즈 관리' }, { label: '실행 설정' }, { label: '배포 관리' }, { label: '마이그레이션' }, { label: '로그/이벤트' } ] }, { label: '테일스케일', icon: Network, children: [ { label: '노드 현황' }, { label: '라우트' }, { label: 'ACL' } ] }, { label: '에이전트', icon: MonitorUp, children: [ { label: '장비 등록' }, { label: '장비 제어' }, { label: '설치 상태' }, { label: 'SSH 키 배포' }, { label: '원격 명령' } ] }, { label: '인프라', icon: HardDrive, children: [ { label: '클러스터', view: 'infraCluster' }, { label: '워크로드', view: 'infraWorkloads' }, { label: '네트워크', view: 'infraNetwork' }, { label: '스토리지', view: 'infraStorage' } ] } ] }, { label: '운영', items: [ { label: '관리자 관리', icon: ShieldCheck }, { label: '조직 관리', icon: Boxes }, { label: '사용자 관리', icon: Users }, { label: '라이센스', icon: FileKey }, { label: '공지사항', icon: Megaphone }, { label: '약관', icon: ScrollText }, { label: '매뉴얼', icon: ScrollText } ] }, { label: '시스템', items: [ { label: '모니터링', icon: ChartNoAxesColumnIncreasing }, { label: '정책', icon: ShieldCheck } ] } ]; export const metrics = [ { label: '활성 앱', value: '10', delta: '+0', hint: '런처 등록 앱 10개', tone: 'emerald' }, { label: '접속 사용자', value: '1,284', delta: '+9.8%', hint: '활성 세션 176개', tone: 'sky' }, { label: '라이센스 사용률', value: '72%', delta: '+4%', hint: '468 / 650 시트', tone: 'amber' }, { label: '런타임 정상률', value: '96.4%', delta: '-1.2%', hint: '주의 워크로드 3개', tone: 'rose' } ]; export const launcherVersions = [ { name: 'Autonomy Studio Launcher', appKey: 'launcher', latestVersion: '1.0.1', minimumSupportedVersion: '1.0.0', status: '활성', artifact: 'autonomy-studio-launcher-1.0.1.deb', downloadUrl: 'https://testfile.autonomystudio.net/media/platform/autonomy-studio-launcher-1.0.1.deb', releaseNotes: '런처 업데이트 확인 및 앱별 설치 상태 판단 기능이 추가되었습니다.' } ]; export const authApiEndpoints = [ { group: '상태', method: 'GET', path: '/health', purpose: '서비스 및 Redis 상태 확인', auth: '없음' }, { group: '인증', method: 'POST', path: '/auth/login', purpose: 'access token 발급 및 refresh cookie 설정', auth: '없음' }, { group: '인증', method: 'POST', path: '/auth/refresh', purpose: 'refresh token 회전 및 access token 재발급', auth: '쿠키/토큰' }, { group: '인증', method: 'POST', path: '/auth/logout', purpose: 'refresh token 폐기 및 쿠키 제거', auth: '쿠키/토큰' }, { group: '사용자', method: 'GET', path: '/auth/me', purpose: '현재 사용자, 앱 권한, 라이센스, 소속 조회', auth: 'Bearer' }, { group: '앱 연결', method: 'POST', path: '/auth/handoff', purpose: '런처에서 앱으로 넘길 handoff token 생성', auth: 'Bearer' }, { group: '앱 연결', method: 'POST', path: '/auth/handoff/exchange', purpose: 'handoff token을 앱용 token pair로 교환', auth: '없음' }, { group: '관리자', method: 'POST', path: '/auth/admin/users', purpose: '관리자 사용자 생성, 소속, 라이센스 할당', auth: 'ADMIN' }, { group: '관리자', method: 'GET', path: '/auth/admin/organizations', purpose: '조직 목록 조회', auth: 'ADMIN' } ]; export const apps = [ { name: 'ADS IDE', key: 'ADS IDE', status: '활성', version: '1.1.0', containers: 2, cpu: 52, memory: 68, gitea: './apps/ads-ide/ads-ide-fe', release: 'ADS-IDE-1.1.0.AppImage', secrets: 8, launcherLinked: true, launcherOrder: 1, launchUrl: 'Ingress 예정 / localhost:5175' }, { name: 'LMS', key: 'LMS', status: '활성', version: '1.0.0', containers: 3, cpu: 74, memory: 81, gitea: './apps/lms/lms-fe', release: 'LMS-1.0.0.AppImage', secrets: 11, launcherLinked: true, launcherOrder: 2, launchUrl: 'Ingress 예정 / localhost:5176' }, { name: 'Data Management', key: 'Data Management', status: '준비중', version: '1.0.0', containers: 0, cpu: 31, memory: 48, gitea: '미연결', release: 'data-management', secrets: 0, launcherLinked: false, launcherOrder: null, launchUrl: '미설정' }, { name: 'FMS', key: 'FMS', status: '활성', version: '2.3.1', containers: 0, cpu: 63, memory: 57, gitea: '미연결', release: 'fms', secrets: 0, launcherLinked: true, launcherOrder: 3, launchUrl: '미설정' }, { name: 'ADS Education', key: 'ADS Education', status: '활성', version: '1.0.0', containers: 0, cpu: 18, memory: 22, gitea: '미연결', release: 'ads-education', secrets: 0, launcherLinked: true, launcherOrder: 4, launchUrl: '미설정' }, { name: 'Calibration', key: 'Calibration', status: '활성', version: '1.0.4', containers: 0, cpu: 21, memory: 26, gitea: '미연결', release: 'calibration', secrets: 0, launcherLinked: false, launcherOrder: null, launchUrl: '미설정' }, { name: 'HDMAP Builder', key: 'HDMAP Builder', status: '활성', version: '1.0.0', containers: 0, cpu: 15, memory: 19, gitea: '미연결', release: 'hdmap-builder', secrets: 0, launcherLinked: false, launcherOrder: null, launchUrl: '미설정' } ]; export const sessions = [ { user: 'kim.admin', role: '소유자', location: '서울', device: 'Chrome macOS', state: '활성', lastSeen: '2분 전' }, { user: 'park.ops', role: '운영자', location: '판교', device: 'Edge Windows', state: '활성', lastSeen: '7분 전' }, { user: 'lee.viewer', role: '조회자', location: '부산', device: 'Safari iOS', state: '대기', lastSeen: '31분 전' }, { user: 'choi.dev', role: '개발자', location: '서울', device: 'Firefox Linux', state: '잠김', lastSeen: '1시간 전' }, { user: 'han.pm', role: '관리자', location: '대전', device: 'Chrome Windows', state: '활성', lastSeen: '12분 전' }, { user: 'jung.viewer', role: '조회자', location: '광주', device: 'Safari macOS', state: '대기', lastSeen: '46분 전' }, { user: 'yoon.ops', role: '운영자', location: '서울', device: 'Edge Windows', state: '활성', lastSeen: '5분 전' }, { user: 'seo.admin', role: '관리자', location: '판교', device: 'Chrome Linux', state: '활성', lastSeen: '1분 전' }, { user: 'moon.dev', role: '개발자', location: '부산', device: 'Firefox Linux', state: '잠김', lastSeen: '2시간 전' }, { user: 'lim.user', role: '사용자', location: '인천', device: 'Chrome Android', state: '대기', lastSeen: '28분 전' }, { user: 'oh.instructor', role: '강사', location: '서울', device: 'Safari iPadOS', state: '활성', lastSeen: '9분 전' } ]; export const licensePlans = [ { code: 'FREE', name: 'Free', description: '기본 무료 라이선스', defaultDurationDays: 365, assigned: 182, activeUsers: 164, expiringSoon: 18, status: '활성' }, { code: 'EDU', name: 'Education', description: '교육기관용 라이선스', defaultDurationDays: 365, assigned: 296, activeUsers: 271, expiringSoon: 21, status: '활성' }, { code: 'PRO', name: 'Professional', description: '전문가용 라이선스', defaultDurationDays: 365, assigned: 172, activeUsers: 158, expiringSoon: 3, status: '활성' } ]; export const userLicenseAssignments = [ { user: 'admin@futuredrive.net', name: 'ATNMY Studio Admin', code: 'PRO', licenseName: 'Professional', startsAt: '06.01.', expiresAt: '무기한', assignedBy: 'system', status: '활성' }, { user: 'teacher@futuredrive.net', name: 'Future Drive Teacher', code: 'EDU', licenseName: 'Education', startsAt: '06.02.', expiresAt: '06.02.', assignedBy: 'admin@futuredrive.net', status: '활성' }, { user: 'teacher@yu.ac.kr', name: 'YU Instructor', code: 'EDU', licenseName: 'Education', startsAt: '06.02.', expiresAt: '06.02.', assignedBy: 'admin@futuredrive.net', status: '활성' }, { user: 'student01@example.com', name: 'student01', code: 'FREE', licenseName: 'Free', startsAt: '06.05.', expiresAt: '06.05.', assignedBy: 'system', status: '활성' }, { user: 'student03@example.com', name: 'student03', code: 'FREE', licenseName: 'Free', startsAt: '06.05.', expiresAt: '06.05.', assignedBy: 'system', status: '활성' }, { user: 'ops@autonomystudio.local', name: 'ops', code: 'PRO', licenseName: 'Professional', startsAt: '06.10.', expiresAt: '06.10.', assignedBy: 'admin@futuredrive.net', status: '활성' }, { user: 'viewer@example.com', name: 'viewer', code: 'FREE', licenseName: 'Free', startsAt: '07.01.', expiresAt: '07.01.', assignedBy: 'system', status: '주의' } ]; export const appBundles = [ { name: 'LMS', key: 'LMS', status: '활성', namespace: 'stdo-lms', launcherTarget: 'lms-fe', launcherArtifact: 'LMS-1.0.0.AppImage', ingress: 'https://lms.apps.autonomystudio.local', release: 'lms-1.0.0', components: [ { name: 'lms-fe', role: '런처 다운로드 앱', type: 'electron', workload: 'artifact', image: 'LMS-1.0.0.AppImage', replicas: '-', status: '배포됨', repository: './apps/lms/lms-fe' }, { name: 'lms-be', role: 'API 서버', type: 'deployment', workload: 'Deployment/lms-api', image: 'registry.local/lms-be:1.0.0', replicas: '2/2', status: '실행 중', repository: './apps/lms/lms-be' }, { name: 'lms-adm-fe', role: '강사용 웹 어드민', type: 'deployment', workload: 'Deployment/lms-adm-web', image: 'registry.local/lms-adm-fe:0.1.0', replicas: '1/1', status: '실행 중', repository: './apps/lms/lms-adm-fe' }, { name: 'lms-db', role: 'PostgreSQL', type: 'statefulset', workload: 'StatefulSet/lms-postgres', image: 'postgres:16', replicas: '1/1', status: '실행 중', repository: 'PVC/lms-postgres-data' } ] }, { name: 'ADS IDE', key: 'ADS IDE', status: '활성', namespace: 'stdo-ads-ide', launcherTarget: 'ads-ide-fe', launcherArtifact: 'ADS-IDE-1.1.0.AppImage', ingress: 'https://ads-ide.apps.autonomystudio.local', release: 'ads-ide-1.1.0', components: [ { name: 'ads-ide-fe', role: '런처 다운로드 앱', type: 'electron', workload: 'artifact', image: 'ADS-IDE-1.1.0.AppImage', replicas: '-', status: '배포됨', repository: './apps/ads-ide/ads-ide-fe' }, { name: 'ads-ide-be', role: 'API 서버', type: 'deployment', workload: 'Deployment/ads-ide-api', image: 'registry.local/ads-ide-be:0.1.0', replicas: '1/1', status: '주의', repository: './apps/ads-ide/ads-ide-be' } ] }, { name: 'Data Management', key: 'Data Management', status: '준비중', namespace: 'stdo-data', launcherTarget: 'data-management-fe', launcherArtifact: '미등록', ingress: '미설정', release: 'data-management-1.0.0', components: [ { name: 'data-management-fe', role: '런처 다운로드 앱', type: 'electron', workload: 'artifact', image: '미등록', replicas: '-', status: '준비중', repository: '미연결' }, { name: 'data-api', role: 'API 서버', type: 'deployment', workload: 'Deployment/data-api', image: 'registry.local/data-api:1.0.0', replicas: '0/1', status: '준비중', repository: '미연결' } ] } ]; export const appSourceConfigs = [ { app: 'LMS', component: 'lms-fe', repository: 'platform/lms-fe', branch: 'release', commit: '8d41c2a', sourceType: 'electron', target: 'LMS-1.0.0.AppImage', status: '활성' }, { app: 'LMS', component: 'lms-be', repository: 'platform/lms-be', branch: 'release', commit: '3ac92ef', sourceType: 'container', target: 'registry.local/lms-be:1.0.0', status: '활성' }, { app: 'LMS', component: 'lms-adm-fe', repository: 'platform/lms-adm-fe', branch: 'release', commit: 'f17ab31', sourceType: 'static-web', target: 'registry.local/lms-adm-fe:0.1.0', status: '활성' }, { app: 'LMS', component: 'lms-db', repository: 'platform/lms-be', branch: 'release', commit: '3ac92ef', sourceType: 'migration', target: 'prisma/migrations', status: '활성' }, { app: 'ADS IDE', component: 'ads-ide-fe', repository: 'platform/ads-ide-fe', branch: 'develop', commit: 'b902a11', sourceType: 'electron', target: 'ADS-IDE-1.1.0.AppImage', status: '활성' }, { app: 'ADS IDE', component: 'ads-ide-be', repository: 'platform/ads-ide-be', branch: 'develop', commit: '10fd8b0', sourceType: 'container', target: 'registry.local/ads-ide-be:0.1.0', status: '주의' } ]; export const appBuildJobs = [ { app: 'LMS', component: 'lms-fe', branch: 'release', job: 'electron build', artifact: 'LMS-1.0.0.AppImage', duration: '6분 12초', status: '완료', time: '12분 전' }, { app: 'LMS', component: 'lms-be', branch: 'release', job: 'image build', artifact: 'registry.local/lms-be:1.0.0', duration: '4분 31초', status: '완료', time: '10분 전' }, { app: 'LMS', component: 'lms-adm-fe', branch: 'release', job: 'web image build', artifact: 'registry.local/lms-adm-fe:0.1.0', duration: '3분 18초', status: '완료', time: '9분 전' }, { app: 'ADS IDE', component: 'ads-ide-be', branch: 'develop', job: 'image build', artifact: 'registry.local/ads-ide-be:0.1.0', duration: '진행 중', status: '실행 중', time: '3분 전' }, { app: 'FMS', component: 'fms-api', branch: 'develop', job: 'image build', artifact: '미생성', duration: '1분 44초', status: '주의', time: '24분 전' } ]; export const appReleasePipelines = [ { app: 'LMS', version: '1.0.0', sourceBranch: 'release', releaseBranch: 'main', commit: '3ac92ef', artifacts: 'electron 1, images 2, migrations 4', status: '배포됨', createdAt: '06.18.' }, { app: 'ADS IDE', version: '1.1.0', sourceBranch: 'develop', releaseBranch: 'release', commit: 'b902a11', artifacts: 'electron 1, images 1', status: '카나리', createdAt: '06.16.' }, { app: 'FMS', version: '2.3.1', sourceBranch: 'develop', releaseBranch: 'release', commit: 'c82f09d', artifacts: 'images 1', status: '초안', createdAt: '06.14.' } ]; export const appDeploymentJobs = [ { app: 'LMS', environment: '운영', release: '1.0.0', strategy: 'rolling update', target: 'stdo-lms', status: '완료', requestedBy: 'kim.admin', time: '8분 전' }, { app: 'ADS IDE', environment: '개발', release: '1.1.0-canary', strategy: 'redeploy', target: 'stdo-ads-ide', status: '실행 중', requestedBy: 'park.ops', time: '2분 전' }, { app: 'FMS', environment: '개발', release: '2.3.1-dev', strategy: 'deploy', target: 'stdo-fms', status: '주의', requestedBy: 'choi.dev', time: '27분 전' } ]; export const appMigrationJobs = [ { app: 'LMS', component: 'lms-db', branch: 'release', path: 'prisma/migrations', version: '20260618091000_add_course_indexes', status: '완료', time: '7분 전' }, { app: 'LMS', component: 'lms-db', branch: 'release', path: 'prisma/migrations', version: '20260617083000_add_assignment_status', status: '완료', time: '1일 전' }, { app: 'ADS IDE', component: 'ads-ide-db', branch: 'develop', path: 'migrations', version: '20260616070000_workspace_schema', status: '대기', time: '대기 중' } ]; export const containers = [ { name: 'launcher-api', app: 'Autonomy Studio Launcher', image: 'atnmy-stdo-v2-be:local', cpu: 43, memory: 62, status: '실행 중' }, { name: 'launcher-postgres', app: 'Autonomy Studio Launcher', image: 'postgres:launcher', cpu: 24, memory: 39, status: '실행 중' }, { name: 'lms-api', app: 'LMS', image: 'lms-be:local', cpu: 67, memory: 59, status: '실행 중' }, { name: 'ads-ide-api', app: 'ADS IDE', image: 'ads-ide-be:local', cpu: 89, memory: 84, status: '주의' } ]; export const k3sWorkloads = [ { namespace: 'stdo-launcher', app: 'Autonomy Studio Launcher', workload: 'Deployment/launcher-api', pod: 'launcher-api-7c9d85f9b7-q2x4m', image: 'registry.local/atnmy-stdo-v2-be:1.0.1', replicas: '2/2', node: 'cluster-master-01', cpu: 43, memory: 62, restarts: 0, age: '3d', status: '실행 중' }, { namespace: 'stdo-launcher', app: 'Autonomy Studio Launcher', workload: 'StatefulSet/launcher-postgres', pod: 'launcher-postgres-0', image: 'postgres:16', replicas: '1/1', node: 'cluster-master-01', cpu: 24, memory: 39, restarts: 0, age: '3d', status: '실행 중' }, { namespace: 'stdo-lms', app: 'LMS', workload: 'Deployment/lms-api', pod: 'lms-api-5f6db8d675-jt2xk', image: 'registry.local/lms-be:1.0.0', replicas: '2/2', node: 'cluster-worker-01', cpu: 67, memory: 59, restarts: 1, age: '18h', status: '실행 중' }, { namespace: 'stdo-lms', app: 'LMS', workload: 'Deployment/lms-adm-web', pod: 'lms-adm-web-778b4d4f9b-bxz92', image: 'registry.local/lms-adm-fe:0.1.0', replicas: '1/1', node: 'cluster-worker-02', cpu: 31, memory: 44, restarts: 0, age: '18h', status: '실행 중' }, { namespace: 'stdo-lms', app: 'LMS', workload: 'StatefulSet/lms-postgres', pod: 'lms-postgres-0', image: 'postgres:16', replicas: '1/1', node: 'cluster-worker-01', cpu: 18, memory: 71, restarts: 0, age: '18h', status: '실행 중' }, { namespace: 'stdo-ads-ide', app: 'ADS IDE', workload: 'Deployment/ads-ide-api', pod: 'ads-ide-api-84b8787d7d-r8qkp', image: 'registry.local/ads-ide-be:0.1.0', replicas: '1/1', node: 'cluster-worker-02', cpu: 89, memory: 84, restarts: 4, age: '7h', status: '주의' } ]; export const containerBlueprints = [ { app: 'LMS', namespace: 'stdo-lms', release: 'lms-1.0.0', resources: [ { name: 'lms-api', kind: 'Deployment', image: 'registry.local/lms-be:1.0.0', replicas: 2, ports: '4000/TCP', env: 14, secrets: 5, storage: '-', ingress: 'api.lms.apps.local', status: '구성완료' }, { name: 'lms-adm-web', kind: 'Deployment', image: 'registry.local/lms-adm-fe:0.1.0', replicas: 1, ports: '80/TCP', env: 6, secrets: 2, storage: '-', ingress: 'admin.lms.apps.local', status: '구성완료' }, { name: 'lms-postgres', kind: 'StatefulSet', image: 'postgres:16', replicas: 1, ports: '5432/TCP', env: 8, secrets: 3, storage: '20Gi / RWO', ingress: '-', status: '구성완료' } ] }, { app: 'ADS IDE', namespace: 'stdo-ads-ide', release: 'ads-ide-1.1.0', resources: [ { name: 'ads-ide-api', kind: 'Deployment', image: 'registry.local/ads-ide-be:0.1.0', replicas: 1, ports: '4300/TCP', env: 9, secrets: 4, storage: '-', ingress: 'api.ads-ide.apps.local', status: '검토필요' } ] } ]; export const tailscaleNodes = [ { name: 'cluster-master-01', ip: '100.64.0.10', role: 'control-plane', user: 'ops@autonomystudio.local', routes: '10.42.0.0/16, 10.43.0.0/16', lastSeen: '1분 전', status: '활성' }, { name: 'cluster-worker-01', ip: '100.64.0.11', role: 'worker', user: 'ops@autonomystudio.local', routes: '-', lastSeen: '3분 전', status: '활성' }, { name: 'gpu-runner-02', ip: '100.64.20.2', role: 'gpu-runner', user: 'mlops@autonomystudio.local', routes: '-', lastSeen: '오프라인', status: '주의' } ]; export const tailscaleSettings = [ { name: 'Tailnet', key: 'TAILSCALE_TAILNET', value: 'autonomy-studio.ts.net', status: '활성', description: '런처와 클러스터 운영 노드가 연결되는 tailnet' }, { name: 'Subnet Routes', key: 'TAILSCALE_ADVERTISE_ROUTES', value: '10.42.0.0/16,10.43.0.0/16', status: '활성', description: 'Pod/Service CIDR 접근용 광고 라우트' }, { name: 'Platform Gateway 연동', key: 'TAILSCALE_GATEWAY_PROVIDER', value: 'platform-gateway', status: '활성', description: '런처에는 연결 상태만 제공하고 세부 조회는 플랫폼 게이트웨이가 담당' } ]; export const gatewayConnections = [ { name: 'Headscale Server', endpoint: 'https://headscale.autonomystudio.local', role: '노드/ACL 동기화', status: '활성', lastSync: '1분 전' }, { name: 'Autonomy Agent', endpoint: 'agent heartbeat stream', role: 'Agent 등록/상태 집계', status: '활성', lastSync: '30초 전' }, { name: 'Platform Gitea', endpoint: 'https://gitea.autonomystudio.local', role: '런처/앱 소스 버전 저장소', status: '활성', lastSync: '5분 전' }, { name: 'Platform Runtime', endpoint: 'runtime command bus', role: '원격 명령/로그/이벤트', status: '주의', lastSync: '12분 전' } ]; export const agentDevices = [ { name: 'lab-mkmini-01', account: 'student01@example.com', status: '활성', workspace: '~/autonomy-studio/workspaces', sshKey: '배포됨', lastSeen: '2분 전' }, { name: 'lab-f1tenth-03', account: 'student03@example.com', status: '활성', workspace: '~/autonomy-studio/workspaces', sshKey: '배포됨', lastSeen: '4분 전' }, { name: 'sim-runner-02', account: 'instructor@example.com', status: '주의', workspace: '/opt/studio/workspaces', sshKey: '대기', lastSeen: '35분 전' } ]; export const runtimeCommands = [ { target: 'lab-mkmini-01', command: 'workspace sync', status: '완료', requestedBy: 'park.ops', time: '8분 전' }, { target: 'lab-f1tenth-03', command: 'build module', status: '실행 중', requestedBy: 'kim.admin', time: '3분 전' }, { target: 'sim-runner-02', command: 'collect logs', status: '주의', requestedBy: 'choi.dev', time: '22분 전' } ]; export const notices = [ { scope: '런처', title: 'v1.0.1 업데이트 안내', audience: '전체 사용자', status: '게시됨', date: '04.23.' }, { scope: 'ADS IDE', title: '정기 점검 안내', audience: 'ADS IDE 사용자', status: '게시됨', date: '04.10.' }, { scope: 'LMS', title: '신규 과제 검토 요청', audience: '강사', status: '게시됨', date: '06.02.' }, { scope: '런처', title: '로그인 화면 점검 배너', audience: '전체 사용자', status: '예약됨', date: '06.24.' }, { scope: 'FMS', title: 'FMS 릴리즈 사전 안내', audience: 'FMS 사용자', status: '초안', date: '06.25.' }, { scope: 'ADS Education', title: '교육 콘텐츠 업데이트', audience: 'ADS Education 사용자', status: '게시됨', date: '06.12.' }, { scope: 'Data Management', title: '베타 신청 접수', audience: '운영자', status: '초안', date: '06.18.' }, { scope: '런처', title: '구버전 런처 지원 종료 안내', audience: '전체 사용자', status: '예약됨', date: '07.01.' }, { scope: 'Calibration', title: '캘리브레이션 템플릿 변경', audience: 'Calibration 사용자', status: '게시됨', date: '06.09.' }, { scope: 'HDMAP Builder', title: 'HDMAP Builder 등록 예정', audience: '운영자', status: '초안', date: '06.28.' }, { scope: '런처', title: '파일 서버 점검 공지', audience: '전체 사용자', status: '게시됨', date: '06.15.' }, { scope: 'ADS IDE', title: 'IDE 확장 기능 업데이트', audience: 'ADS IDE 사용자', status: '예약됨', date: '06.30.' } ]; export const alerts = [ { icon: Bell, label: '확인이 필요한 워크로드 3개' }, { icon: FileKey, label: '14일 내 만료되는 라이센스 42개' }, { icon: KeyRound, label: '이번 주 교체된 시크릿 5개' } ];