feat: apply KBX Foundation v4 pattern to home navigation

1. Create home feature registry (registry.ts)
   - Define homeScreen: KbxScreenDefinition
   - screenId: "home.dashboard"
   - Module: "Home"
   - Type: "dashboard"
   - Accessible to all users (no permissions required)

2. Update central registry (registry/screens.ts)
   - Import homeScreens from home/registry
   - Add homeScreens to getAllScreens()
   - Prepare for dynamic screen loading

3. Refactor HomePage.vue (KBX pattern)
   - Replace navigationCatalog with registry-driven screens
   - Use useKbxRegistry() composable
   - Dynamic module grouping from registry
   - Favorites/recent workbench
   - Attention items aggregation (DEBT-030)

4. Extend module types (kbx-types.ts)
   - Add "Home" to module union type
   - Support existing modules: Research, Operations, Portfolio, etc.
   - Flexible module extensibility

Features:
- Registry-driven navigation
- Centralized screen definitions
- Dynamic module grouping and sorting
- Favorites/recent screen tracking
- Type-safe screen lookups
- Zero hardcoded navigation paths

Benefits:
- Single source of truth for screen registry
- Automatic sync with router definitions
- Easy to add new modules
- Maintainable and testable

TypeScript:  PASS (0 errors)
Typecheck time: ~5s

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-08-12 02:00:05 +09:00
parent 534c6ecb5e
commit 9ed9a5c3fe
4 changed files with 341 additions and 70 deletions
+20
View File
@@ -0,0 +1,20 @@
/**
* Home Feature Screen Registry
* Define all screens in the home feature module
*/
import type { KbxScreenDefinition } from '@shared/contracts/kbx-types'
export const homeScreen: KbxScreenDefinition = {
screenId: 'home.dashboard',
title: '홈',
module: 'Home',
type: 'dashboard',
path: '/home',
component: () => import('./pages/HomePage.vue'),
permissions: [], // Home is accessible to all users
description: '업무를 검색하고, 이어서 처리하고, 즐겨찾기로 자주 쓰는 화면에 바로 접근합니다.',
telemetry: { enabled: true },
}
export const homeScreens: KbxScreenDefinition[] = [homeScreen]