fix: show expiry-filter sample stats so ops map filter effect is visible

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-02 10:48:40 +08:00
parent 3e492eb46c
commit 56f58a12bd
6 changed files with 143 additions and 27 deletions
+12
View File
@@ -229,9 +229,21 @@ export type MovePointsStats = {
buckets: MoveBucket[];
};
export type ExpiryFilterMeta = {
min_hours_filter: number;
raw_sample_count: number;
filtered_sample_count: number;
raw_hours_min: number | null;
raw_hours_max: number | null;
filtered_hours_min?: number | null;
filtered_hours_max?: number | null;
};
export type OpsMap = {
leverage: LeverageStats;
move_points: MovePointsStats;
min_hours?: number;
expiry_filter?: ExpiryFilterMeta;
};
export async function fetchHealth(): Promise<Health> {
+18 -1
View File
@@ -88,8 +88,25 @@ export default function OpsMapPage() {
const lev: LeverageStats | undefined = data?.leverage;
const mov: MovePointsStats | undefined = data?.move_points;
const filt = data?.expiry_filter;
const rangeLabel = range === "day" ? "日" : range === "week" ? "近7日" : "近30日";
const sampleHint = (() => {
if (!filt) return `杠杆样本 ${lev?.sample_count ?? 0}`;
const raw = filt.raw_sample_count;
const kept = filt.filtered_sample_count;
const hMin = filt.raw_hours_min;
const hMax = filt.raw_hours_max;
const span =
hMin != null && hMax != null
? ` · 样本距到期约 ${Math.floor(hMin)}${Math.ceil(hMax)}h`
: "";
if (raw === kept) {
return `杠杆样本 ${kept}(≥${minHours}h 未减少)${span}`;
}
return `杠杆样本 ${kept}/${raw}(≥${minHours}h${span}`;
})();
return (
<div className="layout">
<div className="brand"></div>
@@ -152,7 +169,7 @@ export default function OpsMapPage() {
<div className="value" style={{ fontSize: "1.1rem" }}>
{lev.start_ymd} {lev.end_ymd}
</div>
<div className="hint"> {lev.sample_count}</div>
<div className="hint">{sampleHint}</div>
</div>
<div className="tile">
<div className="label">线</div>