@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";
}
}
}