@page "/dashboard" @attribute [Authorize] @using QuantEngine.Core.Infrastructure @inject HttpClient Http Quant Engine - Dashboard Quant Engine 운영 진입점입니다. 로그인 후 현재 스냅샷 상태와 리포트 경로만 표시합니다. Operational Report @ReportStateLabel @ReportPath Sections @SectionCountLabel Temp/operational_report.json Primary Route Open Operations Current State Status: @ReportChipLabel Generated: @GeneratedAtLabel Source: @SourceLabel Decision feed: @DecisionFeedLabel Factor feed: @FactorFeedLabel Raw feed: @RawFeedLabel Routing Notes
  • 운영 데이터는 snapshot 우선입니다.
  • Excel/GAS 의존 문구는 제거 대상입니다.
  • 숫자는 provenance 없으면 표시하지 않습니다.
Coverage Summary @if (Sections.Count == 0) { DATA_MISSING: operational_report.json이 비어 있거나 아직 생성되지 않았습니다. } else { Name Title Preview @context.Name @context.Title @context.Preview } @code { private readonly List Sections = new(); private string ReportStateLabel = "DATA_MISSING"; private string ReportChipLabel = "DATA_MISSING"; private string SectionCountLabel = "0"; private string GeneratedAtLabel = "n/a"; private string SourceLabel = "n/a"; private string DecisionFeedLabel = "DISCONNECTED"; private string FactorFeedLabel = "DISCONNECTED"; private string RawFeedLabel = "DISCONNECTED"; private string ReportPath = "n/a"; protected override async Task OnInitializedAsync() { try { var report = await Http.GetFromJsonAsync("api/operational-report"); if (report != null) { Sections.Clear(); Sections.AddRange(report.Sections); SectionCountLabel = report.SectionCount.ToString(); GeneratedAtLabel = report.GeneratedAt; SourceLabel = report.SourceJson; ReportStateLabel = Sections.Count > 0 ? "READY" : "DATA_MISSING"; ReportChipLabel = Sections.Count > 0 ? "READY" : "DATA_MISSING"; } } catch { ReportStateLabel = "DATA_MISSING"; ReportChipLabel = "DATA_MISSING"; } } }