diff --git a/frontend/src/registry/screens.ts b/frontend/src/registry/screens.ts index 08472e9f..ac70919f 100644 --- a/frontend/src/registry/screens.ts +++ b/frontend/src/registry/screens.ts @@ -1,77 +1,83 @@ /** - * Central Screen Registry + * Central Screen Registry (KBX v60) * Merge all feature screen definitions here */ -import type { KbxScreenDefinition } from '@shared/contracts/kbx-types' -import { homeScreens } from '@features/home/registry' -import { shadowRunScreens } from '@features/shadow-run/registry' -import { modelScreens } from '@features/models/registry' +import type { ScreenDefinition } from '@kbx/contracts' -// Temporary: define a few example screens -export const exampleScreens: KbxScreenDefinition[] = [ +// Import KBX v60 pages (registered routes) +const kbxPages: ScreenDefinition[] = [ { - screenId: 'model-ops.shadow-run.list', - title: 'Shadow Run Validation', - module: 'ModelOps', - type: 'list', - path: '/model-ops/shadow-runs', - component: () => import('@features/shadow-run/pages/ShadowRunList.vue'), - permissions: ['model.read'], - description: 'View and manage shadow run validations', + screenId: 'model-ops.shadow-run.queue', + title: 'Shadow Run Jobs', + module: 'ERP', + path: '/model-ops/shadow-run-jobs', + component: () => import('@features/shadow-run/pages/ShadowRunQueue.vue'), + permissions: ['model.view'], + template: 'T06', help: { - title: 'Shadow Run Validation', + title: 'Shadow Run Job Queue', sections: [ { title: 'What is a Shadow Run?', - content: 'A shadow run validates model performance on historical data without executing trades.', - }, - { - title: 'How to Use', - content: 'Click the search button to run a new shadow run. View results in the list below.', + content: 'Monitor and manage shadow run validation jobs (252+ trading days)', }, ], - relatedScreens: ['model-ops.models.list'], + relatedScreens: [], }, - shortcuts: [ - { key: 'F3', label: 'Search', action: 'search' }, - { key: 'Ctrl+N', label: 'New', action: 'new' }, - ], - telemetry: { enabled: true }, }, { - screenId: 'model-ops.models.list', - title: 'Model Management', - module: 'ModelOps', - type: 'list', - path: '/model-ops/models', - component: () => import('@features/models/pages/ModelsList.vue'), - permissions: ['model.read'], - description: 'Manage trading models and their lifecycle', - shortcuts: [{ key: 'F3', label: 'Search', action: 'search' }], - telemetry: { enabled: true }, + screenId: 'model-ops.models.master', + title: 'Models', + module: 'ERP', + path: '/model-ops/models-master', + component: () => import('@features/models/pages/ModelList.vue'), + permissions: ['model.view'], + template: 'T02', + help: { + title: 'Model Master-Detail', + sections: [ + { + title: 'Model Lifecycle', + content: 'Browse and manage trading models', + }, + ], + relatedScreens: [], + }, + }, + { + screenId: 'governance.approval.queue', + title: 'Approval Queue', + module: 'ERP', + path: '/governance/approvals', + component: () => import('@features/approval/pages/ApprovalQueue.vue'), + permissions: ['approval.review'], + template: 'T03', + help: { + title: 'Maker-Checker Approvals', + sections: [ + { + title: 'Review & Approve', + content: 'Review and approve model activation requests', + }, + ], + relatedScreens: [], + }, }, ] /** - * Merged screen registry (all features) + * Get all screens */ -export function getAllScreens(): KbxScreenDefinition[] { - const screens: KbxScreenDefinition[] = [] - - // Add screens from all modules - screens.push(...homeScreens) - screens.push(...shadowRunScreens) - screens.push(...modelScreens) - - return screens +export function getAllScreens(): ScreenDefinition[] { + return kbxPages } /** - * Screen index by ID for fast lookup + * Screen index by ID */ -export function buildScreenIndex(): Map { - const index = new Map() +export function buildScreenIndex(): Map { + const index = new Map() getAllScreens().forEach(screen => { index.set(screen.screenId, screen) }) diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index a89b1275..33c3b42f 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -10,6 +10,7 @@ export default defineConfig({ alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), '@shared': fileURLToPath(new URL('./src/shared', import.meta.url)), + '@kbx': fileURLToPath(new URL('./src/shared/@kbx', import.meta.url)), '@features': fileURLToPath(new URL('./src/features', import.meta.url)), }, extensions: ['.ts', '.tsx', '.vue', '.js', '.jsx', '.json']