在 #544、#545、#546 的原作者 merge commit 之后独立修复:保留上传 Promise、处理重复上传与复制失败、格式对齐,以及易支付网关、订单证据、签名、通知幂等与安全关单校验。同步重建六平台插件产物和包。 验证:前端 1832 tests、build/typecheck、lint、相关格式检查通过;财务 SQLite、支付、插件 RPC 与产物专项通过。后端全量出现一项未改动的素材删除 SQLite 表锁失败,单独复跑 3 次通过,保留全量未通过记录。浏览器与真实商户验收待完成。#543 因迁移历史与能力限制回退暂缓。
43 lines
1.9 KiB
TypeScript
43 lines
1.9 KiB
TypeScript
import { expect, test } from "bun:test";
|
|
import type { AdminAnalytics, AnalyticsFinance } from "../src/services/api/auth";
|
|
import { analyticsFinanceColumns } from "../src/pages/admin/components/analytics-finance";
|
|
|
|
function renderFinanceCells(finance?: AnalyticsFinance | null) {
|
|
const row: AdminAnalytics["models"][number] = {
|
|
model: "example",
|
|
capability: "text",
|
|
tasks: 1,
|
|
requests: 1,
|
|
uniqueUsers: 1,
|
|
taskSuccessRate: 100,
|
|
requestSuccessRate: 100,
|
|
p50DurationMs: 100,
|
|
p95DurationMs: 100,
|
|
inputTokens: 10,
|
|
outputTokens: 10,
|
|
cachedTokens: 0,
|
|
usageAvailable: true,
|
|
mediaCount: 0,
|
|
videoSeconds: 0,
|
|
...(finance === undefined ? {} : { finance }),
|
|
};
|
|
return analyticsFinanceColumns.map((column) => ("render" in column ? column.render?.(undefined, row, 0) : undefined));
|
|
}
|
|
|
|
test("model finance cells tolerate missing and null backend finance", () => {
|
|
expect(renderFinanceCells()).toEqual(["--", "--", "--", "--"]);
|
|
expect(renderFinanceCells(null)).toEqual(["--", "--", "--", "--"]);
|
|
});
|
|
|
|
test("model finance cells preserve real zero values and unknown margins", () => {
|
|
expect(renderFinanceCells({ settledOrders: 1, costedOrders: 1, revenueMicrocredits: 0, costMicrocredits: 0, profitMicrocredits: 0, profitMargin: null })).toEqual(["0", "0", "0", "--"]);
|
|
});
|
|
|
|
test("model finance cells show partial costs without inventing profits", () => {
|
|
expect(renderFinanceCells({ settledOrders: 2, costedOrders: 1, revenueMicrocredits: 1500000, costMicrocredits: 250000, profitMicrocredits: null, profitMargin: null })).toEqual(["1.5", "0.25(部分)", "--", "--"]);
|
|
});
|
|
|
|
test("model finance cells display known losses", () => {
|
|
expect(renderFinanceCells({ settledOrders: 1, costedOrders: 1, revenueMicrocredits: 1000000, costMicrocredits: 1500000, profitMicrocredits: -500000, profitMargin: -50 })).toEqual(["1", "1.5", "-0.5", "-50.0%"]);
|
|
});
|