feat(infra): NAS↔Windows 워커 파이프라인 관측 페이지 /infra (Three.js)
분산 워커 관측 Part C — useNodeStatus 3초 폴링 훅 + statusVisual 색/라벨 매핑 + 2D 워커 카드 그리드 + raw three.js 파이프라인 시각화(정상=시안 파티클 흐름 / busy=가속 / paused=앰버 정지 / degraded=주황 / down=빨강 끊김, Redis 끊김=버스 빨강). GET /api/agent-office/nodes(Part B) 소비. r3f 대신 기설치 three 직접 사용. WebGL 미지원 시 카드 폴백 + 3D/그리드 토글. vitest 10 passed, build OK. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019LV86jBozkNhSFXJA412fq
This commit is contained in:
@@ -41,6 +41,7 @@ const SajuToday = lazy(() => import('./pages/saju/Today'));
|
||||
const Compatibility = lazy(() => import('./pages/saju/Compatibility'));
|
||||
const CompatibilityResult = lazy(() => import('./pages/saju/CompatibilityResult'));
|
||||
const SajuMe = lazy(() => import('./pages/saju/Me'));
|
||||
const InfraMonitor = lazy(() => import('./pages/infra/InfraMonitor'));
|
||||
|
||||
export const navLinks = [
|
||||
{
|
||||
@@ -142,6 +143,15 @@ export const navLinks = [
|
||||
icon: <span style={{fontSize:'1.2em'}}>🏢</span>,
|
||||
accent: '#8b5cf6',
|
||||
},
|
||||
{
|
||||
id: 'infra',
|
||||
label: 'Infra',
|
||||
path: '/infra',
|
||||
subtitle: 'NODE PIPELINE',
|
||||
description: 'NAS↔Windows 워커 파이프라인 실시간 관측',
|
||||
icon: <span style={{fontSize:'1.2em'}}>🛰️</span>,
|
||||
accent: '#22d3ee',
|
||||
},
|
||||
{
|
||||
id: 'lab',
|
||||
label: 'Lab',
|
||||
@@ -240,6 +250,10 @@ export const appRoutes = [
|
||||
path: 'agent-office',
|
||||
lazy: () => import('./pages/agent-office/AgentOffice'),
|
||||
},
|
||||
{
|
||||
path: 'infra',
|
||||
element: <InfraMonitor />,
|
||||
},
|
||||
{
|
||||
path: 'tarot',
|
||||
element: <Tarot />,
|
||||
|
||||
Reference in New Issue
Block a user