using Fleet.Core; using MoShiro.Backend.Analysis; namespace MoShiro.Backend.Application; public sealed record SummaryResult( IReadOnlyDictionary Values, IReadOnlyDictionary Samples, double Coverage); public sealed record GapInfo(long FromMs, long ToMs, string Reason); public sealed record SeriesResult( LineKey Line, QueryRange Range, SourcePlan Plan, IReadOnlyList T, IReadOnlyDictionary Values, SummaryResult Summary, IReadOnlyList Gaps, IReadOnlyList Events, IReadOnlyDictionary Versions); public sealed record OverviewLine(LineView Line, SummaryResult Summary, TestRecord? LastTest); public sealed record OverviewResult(QueryRange Range, IReadOnlyList Lines, SourcePlan Plan); public sealed record DistributionBucket(double Le, ulong Count); public sealed record DistributionResult( string Metric, string Unit, IReadOnlyList Buckets, double? P50, double? P95, double? P99, ulong Count); public sealed record HeatmapResult(IReadOnlyList T, IReadOnlyList Edges, IReadOnlyList> Counts, QueryRange Range, SourcePlan Plan); public sealed record CompareResult( IReadOnlyList T, IReadOnlyDictionary Values, IReadOnlyDictionary Summary, string Metric, QueryRange Range, SourcePlan Plan); /// 单个 Agent 任务(目标任务)的时序:和线路时序同一套分层与汇总,只是没有线路、事件和评分。 public sealed record TargetSeriesResult( QueryRange Range, SourcePlan Plan, IReadOnlyList T, IReadOnlyDictionary Values, SummaryResult Summary, IReadOnlyDictionary Versions);