@page "/operations" @attribute [Authorize] @using QuantEngine.Core.Infrastructure @inject HttpClient Http QuantEngine - Operations Operational Report Temp/operational_report.json만 읽는 운영 고정 화면입니다. Schema @SchemaVersion Sections @SectionCountLabel Source @SourceJson Generated @GeneratedAt @foreach (var section in HighlightSections) { @(section.Name) @(section.Title) @(section.Preview) } Report Health Status: @HealthLabel Path: @ReportPath Sections rendered: @RenderedSectionCountLabel Sections @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 readonly List HighlightSections = new(); private string SchemaVersion = "n/a"; private string SourceJson = "n/a"; private string GeneratedAt = "n/a"; private string SectionCountLabel = "0"; private string RenderedSectionCountLabel = "0"; private string HealthLabel = "DATA_MISSING"; private string ReportPath = "n/a"; protected override async Task OnInitializedAsync() { try { var report = await Http.GetFromJsonAsync("api/operational-report"); if (report != null) { SchemaVersion = report.SchemaVersion; SourceJson = report.SourceJson; GeneratedAt = report.GeneratedAt; Sections.Clear(); Sections.AddRange(report.Sections); HighlightSections.Clear(); HighlightSections.AddRange(Sections.Take(4)); SectionCountLabel = report.SectionCount.ToString(); RenderedSectionCountLabel = Sections.Count.ToString(); HealthLabel = Sections.Count > 0 ? "PASS" : "DATA_MISSING"; } } catch { HealthLabel = "DATA_MISSING"; } } }