diff --git a/src/modules/energy/hydrogen/board/EnergyBiBoardApp.tsx b/src/modules/energy/hydrogen/board/EnergyBiBoardApp.tsx
index da259cb..e1fb6a7 100644
--- a/src/modules/energy/hydrogen/board/EnergyBiBoardApp.tsx
+++ b/src/modules/energy/hydrogen/board/EnergyBiBoardApp.tsx
@@ -21,6 +21,7 @@ import {
Zap,
} from 'lucide-react';
import { exportAoaSheet } from '../../../../shared/xlsx';
+import { HYDROGEN_VERIFY_START_DATE } from '../../../../shared/hydrogen-verify';
import { MobileListFullscreenButton } from '../common/MobileListFullscreenButton';
import {
SOURCE_LABEL,
@@ -2136,7 +2137,7 @@ export const EnergyBiBoardApp: React.FC = () => {
@@ -2155,7 +2156,7 @@ export const EnergyBiBoardApp: React.FC = () => {
月度环比{liveMonthComparison ? `${liveMonthComparison.value >= 0 ? '+' : ''}${liveMonthComparison.value.toFixed(1)}%` : '—'}{liveMonthComparison?.label ?? '暂无可比月份'}
单公斤毛利¥{unitProfitYuan}/kg按累计加氢量计算
-
+
diff --git a/src/modules/energy/hydrogen/drill/prototype-real-drills.tsx b/src/modules/energy/hydrogen/drill/prototype-real-drills.tsx
index 0ca77cf..54623cf 100644
--- a/src/modules/energy/hydrogen/drill/prototype-real-drills.tsx
+++ b/src/modules/energy/hydrogen/drill/prototype-real-drills.tsx
@@ -5,6 +5,7 @@ import { ChevronDown, ChevronLeft, Download, Search, SlidersHorizontal, Truck, X
import { MobileListFullscreenButton } from "../common/MobileListFullscreenButton";
import { fetchAllH2BiDrill, fetchH2BiDrill, fetchH2BiMeta } from "../api";
import { exportAoaSheet } from "../../../../shared/xlsx";
+import { HYDROGEN_VERIFY_START_DATE } from "../../../../shared/hydrogen-verify";
import { bearingLabels } from "../model/bearing-labels";
import { formatFixed } from "../model/display-format";
import type {
@@ -1236,7 +1237,7 @@ export function PrototypeDrillModal({
) : null}
-{cleanLabel === "待核对订单" ? 核对功能上线期初:2026-05-01(含)。仅统计当前查询范围与上线期初之后的交集;此前订单不计入待核对。
: null}
+{cleanLabel === "待核对订单" ? 核对功能上线期初:{HYDROGEN_VERIFY_START_DATE}(含)。仅统计当前查询范围与上线期初之后的交集;此前订单不计入待核对。
: null}
{cleanLabel === "加氢利润" && customerBearingScope ? (
利润口径:客户承担订单的对客总价 ¥
diff --git a/src/server/routes/energy/constants.ts b/src/server/routes/energy/constants.ts
index c2487c8..f8797cb 100644
--- a/src/server/routes/energy/constants.ts
+++ b/src/server/routes/energy/constants.ts
@@ -1,5 +1,8 @@
export const HYDROGEN_MIN_DATE = '2024-01-01';
+// 核对功能上线期初(含当日):待核对口径的唯一起算日,前端文案同样引用该常量。
+export { HYDROGEN_VERIFY_START_DATE } from '../../../shared/hydrogen-verify.js';
+
// hydrogen_fuel_ledger.refuel_time 已是业务本地时间字面值,直接使用即可(不再 +8 小时)
export const HYDROGEN_TABLE = 'hydrogen_fuel_ledger';
export const HYDROGEN_LOCAL = `refuel_time`;
diff --git a/src/server/routes/energy/repository.ts b/src/server/routes/energy/repository.ts
index de20e0c..b43b304 100644
--- a/src/server/routes/energy/repository.ts
+++ b/src/server/routes/energy/repository.ts
@@ -13,6 +13,7 @@ import {
HYDROGEN_MIN_DATE,
HYDROGEN_TABLE,
HYDROGEN_TENANT_ID,
+ HYDROGEN_VERIFY_START_DATE,
MANUAL_RECHARGE_SOURCE,
NORMALIZED_PLATE,
NORMALIZED_PLATE_UNICODE,
@@ -765,7 +766,8 @@ export function buildFilterClauses(input: {
if (verifyScope === "unverified")
clauses.push(
"LOWER(COALESCE(NULLIF(TRIM(b.verify_status), ''), 'unverified')) <> 'verified'",
- "b.refuel_time >= '2026-05-01'",
+ // 待核对只统计核对上线期初(含当日)之后的订单,期初之前的历史订单不算待核对。
+ `b.refuel_time >= '${HYDROGEN_VERIFY_START_DATE}'`,
);
return { clauses, params };
}
diff --git a/src/server/routes/energy/routes.test.ts b/src/server/routes/energy/routes.test.ts
index a8498e2..e288b6c 100644
--- a/src/server/routes/energy/routes.test.ts
+++ b/src/server/routes/energy/routes.test.ts
@@ -20,6 +20,7 @@ import {
registerHydrogenBiV2Routes,
type HydrogenBiV2Dependencies,
} from "./hydrogen-bi-v2.js";
+import { HYDROGEN_VERIFY_START_DATE } from "./constants.js";
interface QueryCall {
sql: string;
@@ -32,6 +33,9 @@ interface CacheCall {
}
test("待核对的汇总和下钻统一从核对上线期初起统计,不影响其他核对范围", async () => {
+ // 期初日期以字面量锁定:它同时被前端文案引用,改动必须是有意的。
+ assert.equal(HYDROGEN_VERIFY_START_DATE, "2026-01-01");
+ const cutoverClause = `b.refuel_time >= '${HYDROGEN_VERIFY_START_DATE}'`;
for (const scope of ["unverified", "all", "verified"]) {
for (const endpoint of ["overview", "drill"]) {
const calls: QueryCall[] = [];
@@ -44,7 +48,7 @@ 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("b.refuel_time >= '2026-05-01'"), scope === "unverified");
+ assert.equal(sql.includes(cutoverClause), scope === "unverified");
}
}
}
diff --git a/src/shared/hydrogen-verify.ts b/src/shared/hydrogen-verify.ts
new file mode 100644
index 0000000..7b99213
--- /dev/null
+++ b/src/shared/hydrogen-verify.ts
@@ -0,0 +1,9 @@
+/**
+ * 核对功能上线期初(含当日)。
+ *
+ * 「待核对订单」只统计这一天及之后的加氢订单:起算日之前的历史订单视为核对范围之外,
+ * 不计入待核对笔数与金额。该口径同时决定后端 SQL 过滤(energy/repository.ts)与前端
+ * 展示文案(看板诊断卡、下钻弹窗提示),因此收敛到 shared 这一层,避免只改了一处导致
+ * 口径与文案不一致。
+ */
+export const HYDROGEN_VERIFY_START_DATE = '2026-01-01';