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-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-24 12:18:01 +08:00
2026-08-04 14:47:27 +08:00
2026-07-22 15:19:30 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 18:43:52 +08:00
2026-07-21 19:20:55 +08:00
2026-08-04 14:23:06 +08:00
2026-07-22 15:16:57 +08:00
2026-07-23 13:31:39 +08:00
2026-07-24 12:18:01 +08:00
2026-07-24 13:40:03 +08:00
2026-07-24 18:20:33 +08:00
2026-08-15 16:48:12 +08:00
2026-08-14 15:21:49 +08:00
2026-08-15 16:48:12 +08:00
2026-08-14 16:38:33 +08:00
2026-09-22 18:50:23 +08:00
2026-08-25 15:34:39 +08:00
2026-08-29 11:29:04 +08:00
2026-08-29 09:34:07 +08:00
2026-08-29 11:29:04 +08:00
2026-08-29 11:29:04 +08:00
2026-08-31 16:37:38 +08:00
2026-08-31 18:49:00 +08:00
2026-09-01 09:15:17 +08:00
2026-09-01 11:34:37 +08:00
2026-09-01 12:59:03 +08:00
2026-09-02 16:53:42 +08:00
2026-09-02 18:22:17 +08:00
2026-09-02 18:22:17 +08:00
2026-09-03 15:42:46 +08:00
2026-09-04 23:38:56 +08:00
2026-09-07 09:41:59 +08:00
2026-09-07 14:41:37 +08:00
2026-09-07 11:55:37 +08:00
2026-09-09 10:46:17 +08:00
2026-09-09 10:46:17 +08:00
2026-09-09 10:46:17 +08:00
2026-09-08 07:02:25 +08:00
2026-09-08 14:30:48 +08:00
2026-09-09 13:56:38 +08:00
2026-09-09 14:04:43 +08:00
2026-09-09 14:38:43 +08:00
2026-09-09 15:26:41 +08:00
2026-09-09 15:38:44 +08:00
2026-09-09 16:54:08 +08:00
2026-09-09 17:53:36 +08:00
2026-09-14 14:28:20 +08:00
2026-09-11 11:23:21 +08:00
2026-09-11 12:25:36 +08:00
2026-09-20 15:44:01 +08:00
2026-09-14 11:38:56 +08:00
2026-09-12 20:29:43 +08:00
2026-09-12 19:39:21 +08:00
2026-09-12 20:29:43 +08:00
2026-09-15 09:32:44 +08:00
2026-09-14 11:02:29 +08:00
2026-09-15 09:21:09 +08:00
2026-09-14 13:55:28 +08:00
2026-09-16 18:20:25 +08:00
2026-09-22 14:49:09 +08:00
2026-09-18 14:27:39 +08:00
2026-09-18 15:07:43 +08:00
2026-09-20 15:44:01 +08:00
2026-09-20 15:44:01 +08:00
2026-09-20 22:19:11 +08:00
2026-09-21 10:42:13 +08:00
2026-09-21 01:08:46 +08:00
2026-09-21 18:20:15 +08:00
2026-09-22 14:55:44 +08:00
2026-09-23 11:09:24 +08:00
2026-09-22 19:07:11 +08:00
2026-09-22 18:50:23 +08:00
2026-09-24 10:29:59 +08:00
2026-09-26 22:45:37 +08:00
2026-09-28 16:33:38 +08:00
2026-09-27 17:25:04 +08:00
2026-09-29 15:21:47 +08:00
2026-09-29 15:33:20 +08:00
2026-09-30 16:36:24 +08:00
2026-09-30 09:50:50 +08:00
2026-09-30 09:55:51 +08:00
2026-09-30 16:40:16 +08:00
2026-10-06 18:42:12 +08:00
2026-10-06 18:42:12 +08:00
2026-10-06 22:08:08 +08:00
2026-10-06 13:42:30 +08:00
2026-10-06 13:42:30 +08:00
2026-10-06 14:43:49 +08:00
2026-10-06 19:02:22 +08:00
2026-10-07 10:41:00 +08:00
2026-10-07 11:20:03 +08:00
2026-10-07 11:20:03 +08:00
2026-10-07 17:08:46 +08:00
2026-10-07 14:08:20 +08:00
2026-10-08 11:26:46 +08:00
2026-10-08 13:30:55 +08:00
2026-10-08 13:30:55 +08:00
2026-10-08 15:37:11 +08:00
2026-10-12 09:33:24 +08:00
2026-10-09 17:36:14 +08:00
2026-10-10 13:41:03 +08:00
2026-10-10 16:06:02 +08:00
2026-10-14 13:47:00 +08:00
2026-10-12 11:56:00 +08:00
2026-10-14 13:47:00 +08:00
2026-10-14 13:47:00 +08:00
2026-10-13 11:31:50 +08:00
2026-10-13 11:32:27 +08:00
2026-10-13 19:54:01 +08:00
2026-10-14 13:47:00 +08:00
2026-10-13 19:54:01 +08:00
2026-10-13 19:54:01 +08:00
2026-10-14 13:47:00 +08:00
2026-10-14 13:47:00 +08:00
2026-10-14 13:47:00 +08:00
2026-10-14 18:31:25 +08:00
2026-10-16 14:56:44 +08:00
2026-10-16 17:34:06 +08:00
2026-10-16 17:58:35 +08:00
2026-10-16 17:19:37 +08:00
2026-10-16 22:27:46 +08:00
2026-10-16 22:27:46 +08:00
2026-10-17 00:19:09 +08:00
2026-10-17 20:58:04 +08:00
2026-10-20 19:08:47 +08:00
2026-10-18 22:27:16 +08:00
2026-10-19 10:38:36 +08:00
2026-10-19 14:24:42 +08:00
2026-10-19 14:22:43 +08:00
2026-10-19 16:06:55 +08:00
2026-10-19 17:53:14 +08:00
2026-10-19 17:53:14 +08:00
2026-10-19 18:14:37 +08:00
2026-10-20 10:00:53 +08:00
2026-10-20 10:00:55 +08:00
2026-10-20 10:20:55 +08:00
2026-10-20 10:36:24 +08:00
2026-10-20 11:03:06 +08:00
2026-10-21 11:00:56 +08:00
2026-10-21 11:00:56 +08:00
2026-10-20 19:08:47 +08:00
2026-10-21 13:03:24 +08:00
2026-10-21 11:59:04 +08:00
2026-10-21 16:11:55 +08:00
2026-10-21 16:24:15 +08:00
2026-10-21 16:11:55 +08:00
2026-10-21 17:59:29 +08:00
2026-10-22 10:54:21 +08:00
2026-10-22 10:55:40 +08:00
2026-10-23 17:31:58 +08:00
2026-10-23 21:42:36 +08:00
2026-10-24 16:27:19 +08:00
2026-10-24 17:27:29 +08:00
2026-10-24 20:37:29 +08:00
2026-10-25 02:34:23 +08:00
2026-10-25 16:23:08 +08:00
2026-10-25 17:06:19 +08:00
2026-10-26 12:01:25 +08:00
2026-10-26 11:09:22 +08:00
2026-10-26 11:30:01 +08:00
2026-10-26 16:36:13 +08:00