-
-
{{ entry.title }}
+
+ {{ screen.title }}
+ :aria-pressed="isFavorite(screen.screenId)"
+ :aria-label="
+ isFavorite(screen.screenId) ? `${screen.title} 즐겨찾기 해제` : `${screen.title} 즐겨찾기 추가`
+ "
+ @click="toggleFavorite(screen.screenId)"
+ >
+ {{ isFavorite(screen.screenId) ? '★' : '☆' }}
+
@@ -96,33 +185,194 @@ const attentionItems = ref
([])
diff --git a/frontend/src/features/home/registry.ts b/frontend/src/features/home/registry.ts
new file mode 100644
index 00000000..3c165d9f
--- /dev/null
+++ b/frontend/src/features/home/registry.ts
@@ -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]
diff --git a/frontend/src/registry/screens.ts b/frontend/src/registry/screens.ts
index c6dd4cc3..84408885 100644
--- a/frontend/src/registry/screens.ts
+++ b/frontend/src/registry/screens.ts
@@ -4,9 +4,9 @@
*/
import type { KbxScreenDefinition } from '@shared/contracts/kbx-types'
+import { homeScreens } from '@features/home/registry'
// Import screen definitions from each feature module
-// (these will be created in Task 4)
// import { shadowRunScreens } from '@features/shadow-run/registry'
// import { modelScreens } from '@features/models/registry'
@@ -61,7 +61,8 @@ export const exampleScreens: KbxScreenDefinition[] = [
export function getAllScreens(): KbxScreenDefinition[] {
const screens: KbxScreenDefinition[] = []
- // Add screens from all modules (to be populated as features are created)
+ // Add screens from all modules
+ screens.push(...homeScreens)
// screens.push(...shadowRunScreens)
// screens.push(...modelScreens)
diff --git a/frontend/src/shared/contracts/kbx-types.ts b/frontend/src/shared/contracts/kbx-types.ts
index b8e0d17a..786b202e 100644
--- a/frontend/src/shared/contracts/kbx-types.ts
+++ b/frontend/src/shared/contracts/kbx-types.ts
@@ -7,7 +7,7 @@
export interface KbxScreenDefinition {
screenId: string // e.g., "model-ops.shadow-run.list"
title: string // e.g., "Shadow Run Validation"
- module: 'ModelOps' | 'SignalEngine' | 'Admin'
+ module: 'Home' | 'ModelOps' | 'SignalEngine' | 'Admin' | 'Research' | 'Operations' | 'Portfolio' | 'Design System' | 'Internal' | 'Other'
type: 'list' | 'detail' | 'form' | 'dashboard'
path: string // Vue Router path
component: () => Promise // Lazy-loaded component