refactor(stage6): 去掉热力图写死的默认区间与线上文件的演示数据
热力图默认区间
- 新增 src/shared/date-range.ts(近 N 天滚动窗口,按本地自然日)。
- 前端两个热力图与后端两个 query 模型原先都把默认区间写死为
2026-01-01 ~ 2026-07-13,会随时间永久指向一段历史数据;
现改为"近 30 天"滚动,并把 now 作为可注入参数以便测试。
- 两个 model 测试改为注入固定时钟并断言滚动窗口,不再硬编码日期。
氢能看板去演示数据(board/EnergyBiBoardApp.tsx,6554 -> 3765 行)
- 取消线上路径的 mock 兜底:省份下拉、站点汇总表、客户费用汇总表、
区域排行在 overview 未就绪时显示空,而不是假的 25 个站点 / Top30 账单。
- 删除已确认"零渲染点"的死代码(用 TypeScript AST 精确定位声明范围,
避免手工推断括号边界):
KpiDrillModal / CustomerBillDrillModal / StationBillDrillModal /
DrillPeriodControls / getYearTimeRange / getDrillTimeRange /
MOCK_STATION_SUMMARY_LIST / MOCK_CUSTOMER_SUMMARY_LIST
这些组件内含大量写死的 2026-08-08 快照日期与假流水,均不可达。
线上 KPI 下钻走的是 PrototypeDrillModal(真实 API)。
- 单站日报"最后更新时间"初值不再用伪造时间戳,改为与接口空态一致的文案。
注:本次未改动任何 DOM 结构与 CSS 类名;删除的均为不可达分支。
lint / test(134) / build 全绿。
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* 自然日区间工具(按本地日历日,不使用 UTC)。
|
||||
* 前后端都要按"上海/本地自然日"取数,散落各处的实现容易在跨日与月末出错,
|
||||
* 因此收敛到 shared 这一层。
|
||||
*/
|
||||
|
||||
export interface DayRange {
|
||||
start: string;
|
||||
end: string;
|
||||
}
|
||||
|
||||
function formatYmd(date: Date): string {
|
||||
return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* 近 N 天(含今天)的区间。
|
||||
*
|
||||
* 用于接口尚未返回数据水位(meta)时的兜底范围。此前代码把兜底写死成
|
||||
* `2026-01-01 ~ 2026-07-13`,会随着时间推移永久指向一段历史数据。
|
||||
*/
|
||||
export function recentDayRange(days = 30, now: Date = new Date()): DayRange {
|
||||
const span = Math.max(1, Math.floor(days));
|
||||
const end = new Date(now);
|
||||
end.setHours(0, 0, 0, 0);
|
||||
const start = new Date(end);
|
||||
start.setDate(start.getDate() - (span - 1));
|
||||
return { start: formatYmd(start), end: formatYmd(end) };
|
||||
}
|
||||
Reference in New Issue
Block a user