j.jiang
4ea833d0d8
perf: 业绩明细差额规则落库,切月份统计从数十秒降到亚秒级
业绩明细页的「差额合计」「差额异常备注」「差额(有/无)」原先都在查询时
逐行现算同一套规则链(生成 SQL 24KB/50KB,含 36 处 ops_jst_orders 关联
子查询)。整月 32.4 万行实测:联动统计 14.5~41.6 秒,页面主体 2.7~4.6 秒。
- 新增物化列 difference_reason_index / base_difference / has_difference,
以及 (report_month, difference_reason_index)、(report_month, has_difference)、
(report_month, store_name, platform) 三个索引和物化状态表;
- 新增 store-receipt:materialize-differences 命令(分批写入、支持 --dry-run
三项一致性校验,默认连带重算相邻月份以覆盖跨月备注);
- store-receipt:order-match:sync 成功后自动物化(--skip-materialize 可关闭);
- 页面聚合、联动统计、备注/差额筛选改读物化列,规则指纹不匹配或未物化时
自动回退实时表达式,功能不受影响;
- 月份下拉缓存 6 小时、指标卡聚合 5 分钟、联动统计 1 小时,缓存键带规则
指纹、物化状态与数据版本,物化后自动失效;
- 前端联动统计改为展开下拉时按需请求,页面加载不再同步统计整月。
规则表达式仍以 Pages 的静态方法为唯一口径,物化命令直接复用,不在 PHP 中
重写规则。本地用 7,907 行副本验证:三项一致性差异为 0,数字与实时口径完全
一致;联动统计 76ms→21ms、页面 56ms→41ms(同一数据)。详见
docs/业绩明细差额物化.md。
2026-10-26 16:36:13 +08:00
..
2026-08-31 17:50:42 +08:00
2026-10-26 12:01:25 +08:00
2026-10-23 16:21:15 +08:00
2026-10-23 17:27:31 +08:00
2026-09-07 12:56:31 +08:00
2026-10-19 17:53:14 +08:00
2026-07-20 18:20:25 +08:00
2026-09-07 12:50:09 +08:00
2026-08-31 18:49:00 +08:00
2026-07-20 18:20:25 +08:00
2026-10-23 16:21:15 +08:00
2026-08-31 19:43:03 +08:00
2026-09-24 13:30:09 +08:00
2026-07-20 18:20:25 +08:00
2026-07-20 18:20:25 +08:00
2026-10-08 13:19:53 +08:00
2026-10-16 22:27:46 +08:00
2026-10-06 17:26:41 +08:00
2026-10-16 17:19:37 +08:00
2026-10-26 11:09:22 +08:00
2026-09-11 12:25:36 +08:00
2026-10-08 13:20:01 +08:00
2026-10-20 19:08:47 +08:00
2026-09-22 19:07:11 +08:00
2026-09-22 10:42:38 +08:00
2026-10-19 16:06:55 +08:00
2026-10-19 16:06:55 +08:00
2026-10-06 22:08:08 +08:00
2026-10-23 15:02:03 +08:00
2026-09-21 01:08:46 +08:00
2026-09-22 16:48:33 +08:00
2026-09-24 11:44:44 +08:00
2026-10-07 11:14:04 +08:00
2026-10-07 16:53:55 +08:00
2026-10-25 17:06:19 +08:00
2026-09-22 14:55:44 +08:00
2026-09-30 09:50:50 +08:00
2026-08-25 15:34:39 +08:00
2026-10-23 16:21:15 +08:00
2026-10-26 11:09:22 +08:00
2026-10-13 20:13:53 +08:00
2026-10-19 10:38:36 +08:00
2026-10-23 15:47:39 +08:00
2026-10-26 11:44:03 +08:00
2026-09-19 01:52:45 +08:00
2026-09-27 17:25:04 +08:00
2026-09-24 10:29:59 +08:00
2026-09-12 20:29:43 +08:00
2026-08-31 18:49:00 +08:00
2026-07-24 12:18:01 +08:00
2026-07-20 18:20:25 +08:00
2026-07-20 18:20:25 +08:00
2026-07-24 13:40:03 +08:00
2026-09-23 18:29:15 +08:00
2026-10-07 13:52:18 +08:00
2026-09-23 18:29:15 +08:00
2026-10-26 16:36:13 +08:00
2026-09-02 16:07:16 +08:00
2026-10-23 21:42:36 +08:00
2026-10-12 09:33:24 +08:00
2026-10-12 09:33:24 +08:00
2026-10-13 19:54:01 +08:00
2026-10-13 19:54:01 +08:00
2026-10-13 20:04:02 +08:00
2026-10-19 16:06:55 +08:00
2026-07-20 18:20:25 +08:00
2026-07-24 12:18:01 +08:00
2026-10-19 17:53:14 +08:00
2026-09-09 12:05:38 +08:00
2026-10-23 16:21:15 +08:00
2026-10-19 17:53:14 +08:00
2026-10-19 17:53:14 +08:00
2026-10-19 17:53:14 +08:00
2026-07-20 18:20:25 +08:00
2026-07-20 18:20:25 +08:00
2026-08-13 12:35:06 +08:00
2026-10-11 12:11:15 +08:00
2026-09-09 10:46:17 +08:00
2026-08-29 09:34:07 +08:00
2026-10-21 10:37:59 +08:00
2026-10-24 20:37:29 +08:00
2026-10-19 14:56:54 +08:00
2026-10-20 19:08:47 +08:00
2026-10-08 09:35:34 +08:00
2026-09-09 12:05:38 +08:00
2026-08-14 15:21:49 +08:00
2026-09-22 18:50:23 +08:00
2026-10-26 16:36:13 +08:00
2026-10-26 12:17:57 +08:00
2026-10-17 00:19:09 +08:00
2026-10-19 10:47:29 +08:00
2026-10-13 19:54:01 +08:00
2026-10-11 13:57:28 +08:00
2026-09-20 15:44:01 +08:00
2026-07-20 18:20:25 +08:00
2026-07-20 18:20:25 +08:00
2026-07-20 18:20:25 +08:00
2026-07-20 18:20:25 +08:00
2026-07-24 20:45:09 +08:00
2026-08-03 19:15:19 +08:00
2026-07-24 18:20:33 +08:00
2026-08-31 18:49:00 +08:00
2026-07-20 18:20:25 +08:00
2026-10-20 13:26:20 +08:00
2026-10-19 16:06:55 +08:00
2026-08-31 17:50:42 +08:00
2026-10-19 14:56:54 +08:00
2026-09-24 16:14:17 +08:00