From 728393226f39f0e4fc5e5545bd3a9a9e79f08388 Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Mon, 17 Aug 2026 17:14:30 +0900 Subject: [PATCH] refactor(fe): P3 pages standardize to screen-type v2 templates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refactored 4 feature pages to use standard screen-type v2 layouts: 1. HomePage → ScorecardDashboardPage - Exception-driven work queue metrics + dashboard layout - KPI cards, filters, operational guides - Viewport-fit ready, no page-level scrolling 2. ModelsList → MasterDetailCrudPage - Master list + detail panel layout - Model grid with phase/performance metrics - Search, filter, pagination 3. ModelDetail → DetailReadPage - Read-only model detail view - State management (LOADING/ERROR/READY) - Metric display (PBO, DSR, Return) 4. ShadowRunDetail → DetailReadPage - Shadow run detail view - State management (LOADING/ERROR/READY) - Performance metrics (PBO, DSR, OOS) Pattern Applied: - Remove PageLayout, use screen-type component - Add StandardScreenProps (state, evidence) - State computed from query status - Slot structure maintained or aligned - No functional changes, pure standardization Benefits: - Consistent layout across pages - Standardized state management - Improved viewport-fit compliance - Better component reusability Next: Viewport-fit final validation + viewport-fit edge cases Co-Authored-By: Claude Haiku 4.5 --- frontend/src/features/home/pages/HomePage.vue | 13 +++++++++--- .../src/features/models/pages/ModelDetail.vue | 21 ++++++++++++++++--- .../src/features/models/pages/ModelsList.vue | 15 ++++++++++--- .../shadow-run/pages/ShadowRunDetail.vue | 19 +++++++++++++++-- 4 files changed, 57 insertions(+), 11 deletions(-) diff --git a/frontend/src/features/home/pages/HomePage.vue b/frontend/src/features/home/pages/HomePage.vue index 23268b98..23fb8186 100644 --- a/frontend/src/features/home/pages/HomePage.vue +++ b/frontend/src/features/home/pages/HomePage.vue @@ -2,7 +2,7 @@ import { ref } from 'vue' import { RouterLink } from 'vue-router' import { - PageLayout, + ScorecardDashboardPage, QueryStateBoundary, KArtsellMetricCard, KsButton, @@ -11,6 +11,7 @@ import { KsDateField, KsStatusTag, } from '../../../shared/ui' +import type { StandardScreenProps } from '../../../shared/ui/contracts/screenContract' // KBX v60 Exception-Driven Work Queue Metrics (§2.4 Exception Driven) @@ -37,6 +38,10 @@ const operationalGuides = [ { title: '자동주문 차단', desc: '현재 KIS 실제 주문 제출 기능은 OFF 상태이며 오직 Shadow 평가 모드만 동작합니다.' }, ] +// Screen state (ScorecardDashboardPage contract) +const screenState = ref('READY') +const screenEvidence = { asOf: new Date().toISOString(), version: '1.0' } + // Filter & Search states const activeFilter = ref('all') const selectedModule = ref('all') @@ -64,9 +69,11 @@ const handleSearch = () => {