fix(energy): 无车牌或未关联羚牛车辆的订单不再计入待核对
待核对原先只看「未核对 + 期初之后」,会把没有核对对象的流水也算进 待核对笔数与金额,虚高 KPI 并污染下钻列表。 在 unverified 过滤条件里补两条限定: - NULLIF(TRIM(license_plate), '') IS NOT NULL:无车牌无核对对象 - COALESCE(vehicle_id, 0) <> 0:vehicle_id 为 NULL/0 即未关联羚牛车辆库 条件加在 buildFilterClauses 的 unverified 分支,汇总 KPI 与下钻共用, 因此两处口径自动一致;all / verified 不受影响。下钻弹窗提示同步说明口径。
This commit is contained in:
@@ -768,6 +768,10 @@ export function buildFilterClauses(input: {
|
||||
"LOWER(COALESCE(NULLIF(TRIM(b.verify_status), ''), 'unverified')) <> 'verified'",
|
||||
// 待核对只统计核对上线期初(含当日)之后的订单,期初之前的历史订单不算待核对。
|
||||
`b.refuel_time >= '${HYDROGEN_VERIFY_START_DATE}'`,
|
||||
// 无车牌的订单没有核对对象;未关联羚牛车辆(vehicle_id 为 NULL 或 0)的订单
|
||||
// 无法与车辆库对账,两者都不进入待核对范围。
|
||||
"NULLIF(TRIM(b.license_plate), '') IS NOT NULL",
|
||||
"COALESCE(b.vehicle_id, 0) <> 0",
|
||||
);
|
||||
return { clauses, params };
|
||||
}
|
||||
|
||||
@@ -35,7 +35,13 @@ interface CacheCall {
|
||||
test("待核对的汇总和下钻统一从核对上线期初起统计,不影响其他核对范围", async () => {
|
||||
// 期初日期以字面量锁定:它同时被前端文案引用,改动必须是有意的。
|
||||
assert.equal(HYDROGEN_VERIFY_START_DATE, "2026-01-01");
|
||||
const cutoverClause = `b.refuel_time >= '${HYDROGEN_VERIFY_START_DATE}'`;
|
||||
const unverifiedOnlyClauses = [
|
||||
// 期初之前的订单不算待核对。
|
||||
`b.refuel_time >= '${HYDROGEN_VERIFY_START_DATE}'`,
|
||||
// 无车牌、或未关联羚牛车辆(vehicle_id 为 NULL/0)的订单没有核对对象。
|
||||
"NULLIF(TRIM(b.license_plate), '') IS NOT NULL",
|
||||
"COALESCE(b.vehicle_id, 0) <> 0",
|
||||
];
|
||||
for (const scope of ["unverified", "all", "verified"]) {
|
||||
for (const endpoint of ["overview", "drill"]) {
|
||||
const calls: QueryCall[] = [];
|
||||
@@ -48,7 +54,13 @@ test("待核对的汇总和下钻统一从核对上线期初起统计,不影
|
||||
const ledgerQueries = calls.filter(({ sql }) => sql.includes("FROM hydrogen_fuel_ledger b"));
|
||||
assert.ok(ledgerQueries.length > 0);
|
||||
for (const { sql } of ledgerQueries) {
|
||||
assert.equal(sql.includes(cutoverClause), scope === "unverified");
|
||||
for (const clause of unverifiedOnlyClauses) {
|
||||
assert.equal(
|
||||
sql.includes(clause),
|
||||
scope === "unverified",
|
||||
`${endpoint}/${scope} 对待核对限定条件「${clause}」的处理不符合预期`,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user