mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-07 04:11:35 +00:00
fix(ui): correct usage range totals and muted styles
This commit is contained in:
@@ -371,4 +371,57 @@ describe("session cost usage", () => {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it("preserves totals and cumulative values when downsampling timeseries", async () => {
|
||||
const root = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-timeseries-downsample-"));
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-downsample.jsonl");
|
||||
|
||||
const entries = Array.from({ length: 10 }, (_, i) => {
|
||||
const idx = i + 1;
|
||||
return {
|
||||
type: "message",
|
||||
timestamp: new Date(Date.UTC(2026, 1, 12, 10, idx, 0)).toISOString(),
|
||||
message: {
|
||||
role: "assistant",
|
||||
provider: "openai",
|
||||
model: "gpt-5.2",
|
||||
usage: {
|
||||
input: idx,
|
||||
output: idx * 2,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
totalTokens: idx * 3,
|
||||
cost: { total: idx * 0.001 },
|
||||
},
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
await fs.writeFile(
|
||||
sessionFile,
|
||||
entries.map((entry) => JSON.stringify(entry)).join("\n"),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
const timeseries = await loadSessionUsageTimeSeries({
|
||||
sessionFile,
|
||||
maxPoints: 3,
|
||||
});
|
||||
|
||||
expect(timeseries).toBeTruthy();
|
||||
expect(timeseries?.points.length).toBe(3);
|
||||
|
||||
const points = timeseries?.points ?? [];
|
||||
const totalTokens = points.reduce((sum, point) => sum + point.totalTokens, 0);
|
||||
const totalCost = points.reduce((sum, point) => sum + point.cost, 0);
|
||||
const lastPoint = points[points.length - 1];
|
||||
|
||||
// Full-series totals: sum(1..10)*3 = 165 tokens, sum(1..10)*0.001 = 0.055 cost.
|
||||
expect(totalTokens).toBe(165);
|
||||
expect(totalCost).toBeCloseTo(0.055, 8);
|
||||
expect(lastPoint?.cumulativeTokens).toBe(165);
|
||||
expect(lastPoint?.cumulativeCost).toBeCloseTo(0.055, 8);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user