From 3a9fb2dd5c3cbda5171fcafdb677665e0ebc403d Mon Sep 17 00:00:00 2001 From: Wickedness Date: Tue, 9 Jun 2026 14:12:32 +0900 Subject: [PATCH] Add RFP coverage tracking --- .../ViewModels/MainViewModel.cs | 13 ++ .../ViewModels/ShellModels.cs | 7 ++ TornadoAce_CJOnStyle/Views/MainPage.xaml | 116 +++++++++++++----- docs/poc-requirements.md | 39 ++++++ 4 files changed, 142 insertions(+), 33 deletions(-) create mode 100644 docs/poc-requirements.md diff --git a/TornadoAce_CJOnStyle/ViewModels/MainViewModel.cs b/TornadoAce_CJOnStyle/ViewModels/MainViewModel.cs index 449f248..26755c9 100644 --- a/TornadoAce_CJOnStyle/ViewModels/MainViewModel.cs +++ b/TornadoAce_CJOnStyle/ViewModels/MainViewModel.cs @@ -43,6 +43,7 @@ namespace TornadoAce_CJOnStyle.ViewModels LoadPipelineSteps(); LoadFieldMappings(); LoadEndpoints(); + LoadRequirementCoverage(); LoadInspectionQueue(initialInspectionSummary.Results); } @@ -123,6 +124,8 @@ namespace TornadoAce_CJOnStyle.ViewModels public ObservableCollection Endpoints { get; } = []; + public ObservableCollection RequirementCoverage { get; } = []; + public ObservableCollection InspectionQueue { get; } = []; public string LoginOperatorName @@ -241,6 +244,16 @@ namespace TornadoAce_CJOnStyle.ViewModels Endpoints.Add(new IntegrationEndpointViewModel("LLM 검수", "POST /api/inspection/llm", "Internal LLM", "정책 확인", Brush(0xFFB48CFF))); } + private void LoadRequirementCoverage() + { + RequirementCoverage.Add(new PocRequirementViewModel("RFP-01", "큐시트 API 연동", "PoC", "샘플 큐시트 선택", Brush(0xFF45D6D1))); + RequirementCoverage.Add(new PocRequirementViewModel("RFP-02", "ERP 편성 연동", "대기", "엔드포인트 자리", Brush(0xFFFFB547))); + RequirementCoverage.Add(new PocRequirementViewModel("RFP-03", "Data Field Mapping", "PoC", "Scene 스냅샷 생성", Brush(0xFF37D67A))); + RequirementCoverage.Add(new PocRequirementViewModel("RFP-04", "Tornado Scene API", "PoC", "Text/Image 추출 샘플", Brush(0xFF37D67A))); + RequirementCoverage.Add(new PocRequirementViewModel("RFP-05", "관리자 매핑 기능", "초안", "매핑표 UI", Brush(0xFFB48CFF))); + RequirementCoverage.Add(new PocRequirementViewModel("RFP-06", "1·2단계 자동 검수", "PoC", "Diff + LLM 후보", Brush(0xFF45D6D1))); + } + private void LoadInspectionQueue(IEnumerable results) { InspectionQueue.Clear(); diff --git a/TornadoAce_CJOnStyle/ViewModels/ShellModels.cs b/TornadoAce_CJOnStyle/ViewModels/ShellModels.cs index 34199cb..af966ab 100644 --- a/TornadoAce_CJOnStyle/ViewModels/ShellModels.cs +++ b/TornadoAce_CJOnStyle/ViewModels/ShellModels.cs @@ -60,6 +60,13 @@ namespace TornadoAce_CJOnStyle.ViewModels public string OwnerAndStatus => $"{Owner} / {Status}"; } + public sealed record PocRequirementViewModel( + string RequirementId, + string Title, + string Status, + string Evidence, + SolidColorBrush StatusBrush); + public sealed record InspectionQueueItemViewModel( string ProgramTitle, string SceneName, diff --git a/TornadoAce_CJOnStyle/Views/MainPage.xaml b/TornadoAce_CJOnStyle/Views/MainPage.xaml index 5b3b827..4756e67 100644 --- a/TornadoAce_CJOnStyle/Views/MainPage.xaml +++ b/TornadoAce_CJOnStyle/Views/MainPage.xaml @@ -350,40 +350,90 @@ BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="1" CornerRadius="8"> - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + FontFamily="Cascadia Mono" + FontSize="12" + Foreground="{StaticResource TextMutedBrush}" + Text="{x:Bind RequirementId}" /> + + + + + + + + + + + + +