合并
This commit is contained in:
3
etl_billiards/reports/__init__.py
Normal file
3
etl_billiards/reports/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Reports package."""
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
会员名称,会员手机号,订单号,开始时间,助教课时,结账时间
|
||||
葛先生,13811638071,2987682979566149,2025-12-01 00:08:19,小燕(2h0m),2025-12-01 00:08:25
|
||||
葛先生,13811638071,2996398357319941,2025-12-07 03:54:04,小燕(6h0m),2025-12-07 03:54:45
|
||||
葛先生,13811638071,3003030187398085,2025-12-11 20:20:19,小燕(4h0m),2025-12-11 20:20:22
|
||||
葛先生,13811638071,3008791223945669,2025-12-15 22:00:44,小燕(2h0m),2025-12-15 22:00:48
|
||||
葛先生,13811638071,3010440130430917,2025-12-17 01:58:06,小燕(2h0m),2025-12-17 01:58:11
|
||||
葛先生,13811638071,3025720252254149,2025-12-27 21:01:50,小燕(4h0m),2025-12-27 21:01:53
|
||||
|
@@ -0,0 +1,153 @@
|
||||
会员名称,会员手机号,订单号,桌台(房间)名称,开始时间,持续时间,助教挂钟信息,结账时间
|
||||
葛先生,13811638071,2957496003612357,B8,2025-11-09 16:20:32,2h 0m,周周(1h57m),2025-11-09 18:27:12
|
||||
葛先生,13811638071,2982280563167941,A2,2025-11-27 04:32:42,4h 53m,阿清(4h49m) 小燕(4h53m),2025-11-27 11:33:19
|
||||
葛先生,13811638071,2984703823612613,VIP5,2025-11-28 21:37:46,10h 8m,小燕(8h39m) 阿清(10h7m),2025-11-29 07:46:38
|
||||
葛先生,13811638071,2986305074877125,VIP5,2025-11-30 00:46:38,6h 16m,小燕(6h15m),2025-11-30 07:06:16
|
||||
葛先生,13811638071,2987452433699397,S1,2025-11-30 20:13:48,2h 15m,小燕(1h59m) 乔西(2h15m),2025-11-30 22:29:58
|
||||
葛先生,13811638071,2990547445273157,TV,2025-12-03 00:42:12,8h 10m,小燕(8h10m),2025-12-03 08:52:52
|
||||
葛先生,13811638071,2991901466284741,A3,2025-12-03 23:39:35,7h 16m,小燕(7h16m),2025-12-04 09:59:55
|
||||
葛先生,13811638071,2993396100174533,A3,2025-12-05 01:00:00,0h 25m,,2025-12-05 09:16:58
|
||||
葛先生,13811638071,2993421047679685,TV,2025-12-05 01:25:23,7h 50m,小燕(8h16m),2025-12-05 09:16:58
|
||||
葛先生,13811638071,2994596202270981,B3,2025-12-05 21:20:49,0h 35m,,2025-12-06 03:19:33
|
||||
葛先生,13811638071,2994624795250949,TV,2025-12-05 21:49:54,5h 29m,小燕(5h29m),2025-12-06 03:19:33
|
||||
葛先生,13811638071,3002915771880325,TV,2025-12-11 18:23:55,1h 6m,球球(1h6m),2025-12-12 05:16:57
|
||||
葛先生,13811638071,3003029803307781,A6,2025-12-11 20:19:55,2h 50m,小燕(2h50m),2025-12-12 01:50:19
|
||||
葛先生,13811638071,3003192948659141,888,2025-12-11 23:05:52,6h 0m,涛涛(5h51m) 小燕(5h56m) 梦梦(2h52m) 年糕(2h38m),2025-12-12 05:16:57
|
||||
葛先生,13811638071,3003354125276101,A1,2025-12-12 01:49:50,0h 0m,,2025-12-12 01:50:19
|
||||
葛先生,13811638071,3003355747341189,补时长4,2025-12-12 01:51:29,0h 1m,,2025-12-12 01:51:48
|
||||
葛先生,13811638071,3004579787884613,TV,2025-12-12 22:36:38,8h 10m,小燕(8h10m),2025-12-13 06:47:52
|
||||
葛先生,13811638071,3005655255435397,A11,2025-12-13 16:50:40,4h 53m,小燕(4h53m),2025-12-13 21:44:28
|
||||
葛先生,13811638071,3005944536778822,补时长7,2025-12-13 21:44:56,2h 0m,,2025-12-13 21:45:20
|
||||
葛先生,13811638071,3006295607298309,A1,2025-12-14 03:42:04,0h 43m,小燕(0h43m),2025-12-14 04:26:40
|
||||
葛先生,13811638071,3007126951397381,A1,2025-12-14 17:47:45,2h 5m,小燕(2h5m),2025-12-14 19:53:51
|
||||
葛先生,13811638071,3007250978523205,补时长5,2025-12-14 19:53:55,0h 1m,,2025-12-14 19:54:17
|
||||
葛先生,13811638071,3007446854797445,TV,2025-12-14 23:13:10,5h 57m,阿清(4h5m) 阿清(1h5m) 小燕(5h57m),2025-12-15 05:11:18
|
||||
葛先生,13811638071,3008791817832389,A1,2025-12-15 22:01:20,2h 19m,小燕(2h19m),2025-12-16 02:42:42
|
||||
葛先生,13811638071,3008834924841285,S1,2025-12-15 22:45:11,3h 55m,苏苏(2h28m),2025-12-16 02:42:42
|
||||
葛先生,13811638071,3009076506036165,A2,2025-12-16 02:50:56,3h 40m,小燕(3h39m),2025-12-16 06:32:44
|
||||
葛先生,13811638071,3009492999244293,补时长7,2025-12-16 09:54:37,3h 0m,,2025-12-16 09:54:56
|
||||
葛先生,13811638071,3010218131671557,A1,2025-12-16 22:12:16,3h 18m,小燕(3h18m) 阿清(2h43m),2025-12-17 01:31:11
|
||||
葛先生,13811638071,3011469546309317,A1,2025-12-17 19:25:16,1h 34m,小燕(1h34m),2025-12-17 22:04:09
|
||||
葛先生,13811638071,3011552955975237,C2,2025-12-17 20:50:07,1h 13m,小燕(1h3m),2025-12-17 22:04:09
|
||||
葛先生,13811638071,3011630421837381,A18,2025-12-17 22:08:55,3h 3m,小燕(3h3m),2025-12-18 01:12:30
|
||||
葛先生,13811638071,3012931996487173,TV,2025-12-18 20:12:57,5h 38m,小燕(5h38m),2025-12-19 01:53:16
|
||||
葛先生,13811638071,3013266727145349,补时长5,2025-12-19 01:53:27,2h 0m,,2025-12-19 01:53:55
|
||||
葛先生,13811638071,3013302603681669,A6,2025-12-19 02:29:57,0h 30m,小燕(0h29m),2025-12-19 03:00:10
|
||||
葛先生,13811638071,3013331369283205,A1,2025-12-19 02:59:12,0h 18m,,2025-12-19 02:59:41
|
||||
葛先生,13811638071,3014164982173317,A6,2025-12-19 17:07:12,11h 18m,小燕(11h18m) 阿清(2h0m),2025-12-20 06:59:01
|
||||
葛先生,13811638071,3014479760183173,TV,2025-12-19 22:27:25,8h 31m,阿清(8h22m) 小燕(2h53m),2025-12-20 06:59:01
|
||||
葛先生,13811638071,3015171680994757,补时长7,2025-12-20 10:11:16,3h 0m,,2025-12-20 10:11:36
|
||||
葛先生,13811638071,3015847664387653,S2,2025-12-20 21:38:55,0h 56m,球球(0h56m),2025-12-20 22:38:26
|
||||
葛先生,13811638071,3015856577545861,S1,2025-12-20 21:47:59,1h 12m,小燕(1h12m),2025-12-20 23:01:49
|
||||
葛先生,13811638071,3015974337283525,补时长6,2025-12-20 23:47:46,3h 0m,,2025-12-20 23:48:13
|
||||
葛先生,13811638071,3015974988367429,C4,2025-12-20 23:48:26,4h 28m,小燕(4h28m),2025-12-21 04:17:32
|
||||
葛先生,13811638071,3016300766643845,TV,2025-12-21 05:19:50,0h 56m,小燕(0h56m),2025-12-21 06:16:53
|
||||
葛先生,13811638071,3016653147375173,补时长7,2025-12-21 11:18:18,2h 0m,,2025-12-21 11:18:40
|
||||
葛先生,13811638071,3017225201927749,S1,2025-12-21 21:00:13,1h 28m,,2025-12-21 22:30:16
|
||||
葛先生,13811638071,3017273506465285,C5,2025-12-21 21:49:21,1h 24m,千千(1h12m),2025-12-21 23:45:38
|
||||
葛先生,13811638071,3017388287231429,补时长6,2025-12-21 23:46:07,0h 0m,,2025-12-21 23:46:27
|
||||
葛先生,13811638071,3017486080099845,A1,2025-12-22 01:25:36,1h 49m,小燕(1h49m),2025-12-22 03:15:17
|
||||
葛先生,13811638071,3017593957697157,补时长6,2025-12-22 03:15:20,0h 0m,,2025-12-22 03:15:37
|
||||
葛先生,13811638071,3017596515419717,A1,2025-12-22 03:17:56,3h 49m,小燕(3h49m),2025-12-22 07:08:11
|
||||
葛先生,13811638071,3018642766775813,S1,2025-12-22 21:02:14,1h 7m,小燕(1h7m),2025-12-22 22:10:33
|
||||
葛先生,13811638071,3018644316587589,补时长7,2025-12-22 21:03:49,0h 0m,,2025-12-22 21:04:09
|
||||
葛先生,13811638071,3018709942093445,S1,2025-12-22 22:10:34,0h 43m,小燕(0h43m),2025-12-22 22:54:21
|
||||
葛先生,13811638071,3018710150219205,补时长6,2025-12-22 22:10:47,0h 0m,,2025-12-22 22:11:08
|
||||
葛先生,13811638071,3018753009468933,S1,2025-12-22 22:54:23,1h 3m,小燕(1h3m),2025-12-22 23:58:44
|
||||
葛先生,13811638071,3018766856488389,补时长6,2025-12-22 23:08:28,0h 0m,,2025-12-22 23:08:51
|
||||
葛先生,13811638071,3018816489850309,补时长7,2025-12-22 23:58:58,0h 0m,,2025-12-22 23:59:34
|
||||
葛先生,13811638071,3018826595370437,M7,2025-12-23 00:09:14,4h 0m,小燕(3h59m),2025-12-23 04:23:37
|
||||
葛先生,13811638071,3019076971070917,补时长6,2025-12-23 04:23:56,2h 0m,,2025-12-23 04:24:21
|
||||
葛先生,13811638071,3019077416650181,A1,2025-12-23 04:24:23,3h 7m,小燕(3h7m),2025-12-23 07:32:22
|
||||
葛先生,13811638071,3019262758979077,补时长6,2025-12-23 07:32:56,0h 0m,,2025-12-23 07:34:10
|
||||
葛先生,13811638071,3020101562009093,A6,2025-12-23 21:46:12,10h 2m,小燕(10h1m),2025-12-24 07:48:47
|
||||
葛先生,13811638071,3020694538569157,补时长5,2025-12-24 07:49:25,3h 0m,,2025-12-24 07:49:46
|
||||
葛先生,13811638071,3021420856576006,S1,2025-12-24 20:08:16,1h 22m,小燕(1h22m),2025-12-24 21:30:46
|
||||
葛先生,13811638071,3021501988194373,S1,2025-12-24 21:30:47,1h 50m,小燕(1h49m),2025-12-24 23:21:38
|
||||
葛先生,13811638071,3021610987734853,S1,2025-12-24 23:21:40,2h 21m,小燕(2h21m),2025-12-25 01:43:51
|
||||
葛先生,13811638071,3021770635823109,A6,2025-12-25 02:04:04,7h 56m,小燕(7h56m),2025-12-25 12:08:55
|
||||
葛先生,13811638071,3022365496854533,补时长6,2025-12-25 12:09:12,4h 0m,,2025-12-25 12:09:46
|
||||
葛先生,13811638071,3022873228429253,S1,2025-12-25 20:45:41,1h 55m,小燕(1h55m),2025-12-25 22:42:03
|
||||
葛先生,13811638071,3022987729340421,S1,2025-12-25 22:42:10,1h 9m,小燕(1h9m),2025-12-25 23:52:24
|
||||
葛先生,13811638071,3023056813000773,S1,2025-12-25 23:52:26,0h 58m,小燕(0h58m),2025-12-26 00:51:10
|
||||
葛先生,13811638071,3023057336322053,补时长5,2025-12-25 23:52:58,0h 0m,,2025-12-25 23:53:18
|
||||
葛先生,13811638071,3023118312458181,A6,2025-12-26 00:55:00,5h 59m,小燕(5h59m),2025-12-26 06:55:32
|
||||
葛先生,13811638071,3024330328901573,C1,2025-12-26 21:27:56,3h 14m,小燕(3h14m),2025-12-27 00:42:31
|
||||
葛先生,13811638071,3024521672149061,A6,2025-12-27 00:42:34,4h 56m,小燕(4h56m),2025-12-27 05:43:00
|
||||
葛先生,13811638071,3024522484762565,补时长6,2025-12-27 00:43:24,2h 0m,,2025-12-27 00:43:51
|
||||
葛先生,13811638071,3025075373508677,补时长7,2025-12-27 10:05:50,2h 0m,,2025-12-27 10:06:18
|
||||
葛先生,13811638071,3025697485457477,A12,2025-12-27 20:38:40,0h 24m,小燕(0h24m),2025-12-27 21:03:38
|
||||
葛先生,13811638071,3025926993020741,A18,2025-12-28 00:32:08,3h 59m,小燕(3h58m),2025-12-28 04:31:30
|
||||
葛先生,13811638071,3026162441734149,补时长5,2025-12-28 04:31:39,1h 40m,,2025-12-28 04:32:29
|
||||
葛先生,13811638071,3027018732144709,A8,2025-12-28 19:02:43,1h 5m,小燕(1h5m),2025-12-28 20:08:25
|
||||
葛先生,13811638071,3027082894100549,S1,2025-12-28 20:07:59,0h 47m,小燕(0h47m),2025-12-28 20:55:54
|
||||
葛先生,13811638071,3027086248364101,A8,2025-12-28 20:11:24,0h 32m,,2025-12-28 20:11:45
|
||||
葛先生,13811638071,3027130023888837,S1,2025-12-28 20:55:56,0h 42m,,2025-12-28 22:48:42
|
||||
葛先生,13811638071,3027130329974789,A6,2025-12-28 20:56:14,0h 32m,,2025-12-28 20:56:31
|
||||
葛先生,13811638071,3027171803039749,VIP5,2025-12-28 21:38:25,1h 9m,小燕(1h52m),2025-12-28 22:48:42
|
||||
葛先生,13811638071,3027240911620101,VIP5,2025-12-28 22:48:44,0h 42m,小燕(0h42m),2025-12-28 23:32:00
|
||||
葛先生,13811638071,3027274797680709,A1,2025-12-28 23:23:12,0h 4m,,2025-12-29 00:45:50
|
||||
葛先生,13811638071,3027279097726917,C2,2025-12-28 23:27:34,1h 17m,婉婉(1h17m),2025-12-29 00:45:50
|
||||
葛先生,13811638071,3027283487705029,VIP5,2025-12-28 23:32:02,1h 38m,小燕(1h38m),2025-12-29 01:10:27
|
||||
葛先生,13811638071,3027381047756741,补时长7,2025-12-29 01:11:17,0h 0m,,2025-12-29 01:11:47
|
||||
葛先生,13811638071,3027494215747397,A1,2025-12-29 03:06:24,0h 0m,小燕(1h50m),2025-12-29 03:06:51
|
||||
葛先生,13811638071,3027520016877573,补时长5,2025-12-29 03:32:39,1h 40m,,2025-12-29 03:33:33
|
||||
葛先生,13811638071,3028365240272837,A6,2025-12-29 17:52:27,2h 3m,小燕(2h3m),2025-12-29 19:58:42
|
||||
葛先生,13811638071,3028488531724357,M5,2025-12-29 19:57:52,3h 3m,小燕(3h3m),2025-12-29 23:04:58
|
||||
葛先生,13811638071,3028489795159877,A6,2025-12-29 19:59:09,1h 2m,,2025-12-29 19:59:31
|
||||
葛先生,13811638071,3028620706809861,VIP5,2025-12-29 22:12:19,1h 2m,小柔(1h2m) 小燕(0h6m),2025-12-29 23:16:04
|
||||
葛先生,13811638071,3028672505759557,补时长7,2025-12-29 23:05:01,0h 0m,,2025-12-29 23:05:28
|
||||
葛先生,13811638071,3028796631942981,A1,2025-12-30 01:11:17,0h 0m,小燕(1h12m),2025-12-30 01:12:20
|
||||
葛先生,13811638071,3028797785933637,补时长6,2025-12-30 01:12:28,0h 0m,,2025-12-30 01:12:43
|
||||
葛先生,13811638071,3028798611277893,A6,2025-12-30 01:13:18,0h 51m,小燕(0h50m),2025-12-30 02:04:34
|
||||
葛先生,13811638071,3029823520163653,A6,2025-12-30 18:35:53,1h 30m,小燕(1h30m),2025-12-30 20:06:17
|
||||
葛先生,13811638071,3029912671930309,A2,2025-12-30 20:06:35,0h 45m,,2025-12-30 20:07:12
|
||||
葛先生,13811638071,3029920336283461,S1,2025-12-30 20:14:23,1h 9m,小燕(1h8m),2025-12-30 21:26:01
|
||||
葛先生,13811638071,3029953608239109,S3,2025-12-30 20:48:13,0h 54m,,2025-12-30 21:43:22
|
||||
葛先生,13811638071,3029990793086789,S1,2025-12-30 21:26:03,1h 22m,小燕(1h1m) 阿清(0h20m),2025-12-30 22:48:21
|
||||
葛先生,13811638071,3029991615416389,A6,2025-12-30 21:26:53,0h 50m,,2025-12-30 21:27:30
|
||||
葛先生,13811638071,3030051846162437,A6,2025-12-30 22:28:09,1h 35m,小燕(1h13m),2025-12-31 00:03:58
|
||||
葛先生,13811638071,3030071938451269,S1,2025-12-30 22:48:36,0h 45m,阿清(0h45m),2025-12-30 23:34:52
|
||||
葛先生,13811638071,3030329100781637,补时长2,2025-12-31 03:10:12,0h 1m,,2025-12-31 03:10:58
|
||||
葛先生,13811638071,3031047867485317,VIP1,2025-12-31 15:21:22,2h 15m,小燕(2h15m),2025-12-31 18:30:37
|
||||
葛先生,13811638071,3031246571603653,补时长2,2025-12-31 18:43:30,0h 0m,,2025-12-31 18:44:20
|
||||
葛先生,13811638071,3031246638532229,补时长3,2025-12-31 18:43:34,0h 0m,,2025-12-31 18:44:20
|
||||
葛先生,13811638071,3036870032656645,A6,2026-01-04 18:03:58,2h 15m,小燕(2h15m),2026-01-04 20:20:13
|
||||
葛先生,13811638071,3037004116691653,补时长7,2026-01-04 20:20:22,0h 0m,,2026-01-04 20:20:58
|
||||
葛先生,13811638071,3037130243574469,A7,2026-01-04 22:28:40,0h 0m,小燕(2h3m),2026-01-04 22:29:02
|
||||
葛先生,13811638071,3037131328588485,M5,2026-01-04 22:29:47,3h 9m,,2026-01-05 01:44:43
|
||||
葛先生,13811638071,3037318211751109,补时长7,2026-01-05 01:39:53,0h 0m,,2026-01-05 01:40:11
|
||||
葛先生,13811638071,3038443483466437,A6,2026-01-05 20:44:34,0h 21m,,2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038464422284485,M5,2026-01-05 21:05:52,3h 0m,,2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038582201207493,S1,2026-01-05 23:05:41,0h 57m,乔西(0h57m) 小燕(0h21m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038597488594117,补时长7,2026-01-05 23:21:14,0h 0m,小燕(2h35m),2026-01-05 23:22:18
|
||||
葛先生,13811638071,3038663145786693,TV,2026-01-06 00:28:01,0h 0m,阿清(1h59m) 小燕(1h59m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038663954582853,TV,2026-01-06 00:28:51,1h 59m,阿清(1h59m) 小燕(1h59m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3039616315803525,A1,2026-01-06 16:37:38,8h 50m,小燕(8h50m),2026-01-07 01:28:11
|
||||
葛先生,13811638071,3039824130983749,M7,2026-01-06 20:09:02,3h 22m,小燕(3h22m),2026-01-06 23:36:08
|
||||
葛先生,13811638071,3040027900495749,补时长7,2026-01-06 23:36:19,2h 0m,,2026-01-06 23:36:43
|
||||
葛先生,13811638071,3040128992692037,TV,2026-01-07 01:19:10,2h 46m,小燕(2h37m),2026-01-07 04:06:07
|
||||
葛先生,13811638071,3040137917564805,补时长7,2026-01-07 01:28:14,3h 0m,,2026-01-07 01:28:39
|
||||
葛先生,13811638071,3040888209426117,A6,2026-01-07 14:11:29,10h 24m,小燕(10h24m),2026-01-08 05:48:14
|
||||
葛先生,13811638071,3041240108402437,VIP5,2026-01-07 20:09:27,1h 11m,小燕(1h11m),2026-01-07 21:21:15
|
||||
葛先生,13811638071,3041310718166853,VIP5,2026-01-07 21:21:16,0h 46m,小燕(0h46m) 小燕(0h0m),2026-01-07 22:08:05
|
||||
葛先生,13811638071,3041356781012741,VIP5,2026-01-07 22:08:08,1h 2m,小燕(1h1m),2026-01-07 23:10:30
|
||||
葛先生,13811638071,3041418120349573,VIP5,2026-01-07 23:10:32,0h 49m,小燕(0h48m),2026-01-08 00:04:02
|
||||
葛先生,13811638071,3041502086645445,TV,2026-01-08 00:35:57,5h 11m,小燕(5h11m) 阿清(1h55m),2026-01-08 05:48:14
|
||||
葛先生,13811638071,3042589002975045,A6,2026-01-08 19:01:37,4h 9m,小燕(0h0m) 小燕(4h9m) 小燕(0h0m),2026-01-08 23:11:19
|
||||
葛先生,13811638071,3042590786307781,S1,2026-01-08 19:03:26,1h 50m,小燕(0h0m),2026-01-08 21:21:03
|
||||
葛先生,13811638071,3042699136239301,VIP5,2026-01-08 20:53:38,0h 27m,小燕(2h17m),2026-01-08 21:21:03
|
||||
葛先生,13811638071,3042723784541957,TV,2026-01-08 21:18:43,1h 13m,年糕(0h19m) 年糕(0h0m) 年糕(1h28m),2026-01-09 00:02:40
|
||||
葛先生,13811638071,3042726147917509,VIP5,2026-01-08 21:21:07,1h 22m,小燕(1h23m),2026-01-08 22:43:49
|
||||
葛先生,13811638071,3042796595971845,TV,2026-01-08 22:32:47,1h 28m,年糕(0h19m) 年糕(0h0m) 年糕(1h28m),2026-01-09 00:02:40
|
||||
葛先生,13811638071,3042807473456837,VIP5,2026-01-08 22:43:51,0h 26m,小燕(0h26m),2026-01-08 23:11:19
|
||||
葛先生,13811638071,3042835118278341,补时长7,2026-01-08 23:11:58,2h 0m,,2026-01-08 23:12:30
|
||||
葛先生,13811638071,3042885054465733,补时长7,2026-01-09 00:02:46,0h 0m,,2026-01-09 00:03:28
|
||||
葛先生,13811638071,3043910456903429,A6,2026-01-09 17:25:52,7h 34m,小燕(0h0m) 小燕(7h34m) 小燕(0h0m),2026-01-10 01:01:10
|
||||
葛先生,13811638071,3044081890182917,S2,2026-01-09 20:20:15,2h 15m,千千(2h13m),2026-01-09 22:38:08
|
||||
葛先生,13811638071,3044086761490309,666,2026-01-09 20:25:13,1h 54m,,2026-01-09 22:22:52
|
||||
葛先生,13811638071,3044105870411525,M7,2026-01-09 20:44:39,3h 49m,小燕(0h0m) 小燕(3h43m),2026-01-10 00:39:15
|
||||
葛先生,13811638071,3044358662178117,补时长6,2026-01-10 01:01:48,4h 0m,,2026-01-10 01:02:29
|
||||
葛先生,13811638071,3045217778599621,A6,2026-01-10 15:35:44,7h 33m,小燕(0h0m) 小燕(7h33m),2026-01-10 23:10:26
|
||||
葛先生,13811638071,3045663905318661,VIP5,2026-01-10 23:09:34,3h 7m,小燕(3h7m),2026-01-11 02:17:13
|
||||
葛先生,13811638071,3045763277047109,补时长5,2026-01-11 00:50:39,2h 2m,,2026-01-11 02:04:36
|
||||
|
@@ -0,0 +1,174 @@
|
||||
会员名称,会员手机号,订单号,桌台(房间)名称,开始时间,持续时间,助教挂钟信息,结账时间
|
||||
葛先生,13811638071,2955001404426373,TV,2025-11-07 22:02:54,6h 17m,周周(6h17m),2025-11-08 04:22:47
|
||||
葛先生,13811638071,2957496003612357,B8,2025-11-09 16:20:32,2h 0m,周周(1h57m),2025-11-09 18:27:12
|
||||
葛先生,13811638071,2958114600914629,TV,2025-11-09 21:09:49,2h 46m,周周(2h46m) 素素(5h52m),2025-11-10 05:50:36
|
||||
葛先生,13811638071,2958114600914629,S1,2025-11-09 23:55:55,2h 53m,,2025-11-10 05:50:36
|
||||
葛先生,13811638071,2958114600914629,TV,2025-11-10 02:49:48,2h 59m,周周(2h46m) 素素(5h52m),2025-11-10 05:50:36
|
||||
葛先生,13811638071,2963565616418565,VIP5,2025-11-13 23:14:52,3h 31m,年糕(3h28m),2025-11-14 02:46:30
|
||||
葛先生,13811638071,2965176087987909,S1,2025-11-15 00:32:38,2h 0m,,2025-11-15 05:16:43
|
||||
葛先生,13811638071,2965176087987909,TV,2025-11-15 02:33:07,2h 43m,千千(4h43m) 小燕(2h48m),2025-11-15 05:16:43
|
||||
葛先生,13811638071,2966373430363909,888,2025-11-15 22:51:07,3h 25m,柚子(3h25m) 千千(3h21m) 素素(3h12m) 年糕(3h16m) 球球(0h55m),2025-11-16 02:23:36
|
||||
葛先生,13811638071,2970984317881221,TV,2025-11-18 21:32:20,7h 7m,,2025-11-19 05:34:46
|
||||
葛先生,13811638071,2970984317881221,补时长6,2025-11-19 05:01:34,0h 0m,梦梦(4h27m) 千千(3h7m) 小燕(2h49m),2025-11-19 05:34:46
|
||||
葛先生,13811638071,2972114730570373,VIP5,2025-11-19 22:30:59,1h 40m,小燕(1h39m),2025-11-20 02:40:52
|
||||
葛先生,13811638071,2972114730570373,TV,2025-11-20 00:11:28,2h 29m,小燕(2h29m),2025-11-20 02:40:52
|
||||
葛先生,13811638071,2972261781556293,补时长3,2025-11-20 02:41:04,0h 0m,,2025-11-20 02:41:33
|
||||
葛先生,13811638071,2972261781556293,补时长4,2025-11-20 02:41:06,0h 0m,,2025-11-20 02:41:33
|
||||
葛先生,13811638071,2973537861161797,TV,2025-11-21 00:19:09,5h 41m,小燕(5h41m) Amy(1h34m),2025-11-21 06:02:46
|
||||
葛先生,13811638071,2976440977246341,TV,2025-11-23 01:32:22,5h 53m,小燕(5h53m),2025-11-23 07:26:33
|
||||
葛先生,13811638071,2979199778228165,S1,2025-11-24 23:22:58,0h 56m,阿清(0h54m) 小燕(0h9m),2025-11-25 01:10:58
|
||||
葛先生,13811638071,2979199778228165,TV,2025-11-25 00:18:45,0h 44m,小燕(0h44m) 阿清(0h44m),2025-11-25 01:10:58
|
||||
葛先生,13811638071,2979241077901253,M3,2025-11-25 01:00:46,3h 10m,千千(3h10m) 小燕(3h8m) 阿清(3h8m),2025-11-25 04:13:47
|
||||
葛先生,13811638071,2980539547354565,A2,2025-11-25 22:44:25,0h 24m,小燕(0h24m),2025-11-26 05:10:08
|
||||
葛先生,13811638071,2980539547354565,VIP5,2025-11-25 23:01:38,6h 7m,小燕(6h0m),2025-11-26 05:10:08
|
||||
葛先生,13811638071,2982280563167941,A2,2025-11-27 04:32:42,4h 53m,小燕(4h53m) 阿清(4h49m),2025-11-27 11:33:19
|
||||
葛先生,13811638071,2984703823612613,VIP5,2025-11-28 21:37:46,10h 8m,阿清(10h7m) 小燕(8h39m),2025-11-29 07:46:38
|
||||
葛先生,13811638071,2986305074877125,VIP5,2025-11-30 00:46:38,6h 16m,小燕(6h15m),2025-11-30 07:06:16
|
||||
葛先生,13811638071,2987452433699397,S1,2025-11-30 20:13:48,2h 15m,乔西(2h15m) 小燕(1h59m),2025-11-30 22:29:58
|
||||
葛先生,13811638071,2990547445273157,TV,2025-12-03 00:42:12,8h 10m,小燕(8h10m),2025-12-03 08:52:52
|
||||
葛先生,13811638071,2991901466284741,A3,2025-12-03 23:39:35,7h 16m,小燕(7h16m),2025-12-04 09:59:55
|
||||
葛先生,13811638071,2993421047679685,A3,2025-12-05 01:00:00,0h 25m,,2025-12-05 09:16:58
|
||||
葛先生,13811638071,2993421047679685,TV,2025-12-05 01:25:23,7h 50m,小燕(8h16m),2025-12-05 09:16:58
|
||||
葛先生,13811638071,2994624795250949,B3,2025-12-05 21:20:49,0h 35m,,2025-12-06 03:19:33
|
||||
葛先生,13811638071,2994624795250949,TV,2025-12-05 21:49:54,5h 29m,小燕(5h29m),2025-12-06 03:19:33
|
||||
葛先生,13811638071,3003192948659141,TV,2025-12-11 18:23:55,1h 6m,球球(1h6m),2025-12-12 05:16:57
|
||||
葛先生,13811638071,3003354125276101,A6,2025-12-11 20:19:55,2h 50m,小燕(2h50m),2025-12-12 01:50:19
|
||||
葛先生,13811638071,3003192948659141,888,2025-12-11 23:05:52,6h 0m,小燕(5h56m) 梦梦(2h52m) 涛涛(5h51m) 年糕(2h38m),2025-12-12 05:16:57
|
||||
葛先生,13811638071,3003354125276101,A1,2025-12-12 01:49:50,0h 0m,,2025-12-12 01:50:19
|
||||
葛先生,13811638071,3003355747341189,补时长4,2025-12-12 01:51:29,0h 1m,,2025-12-12 01:51:48
|
||||
葛先生,13811638071,3004579787884613,TV,2025-12-12 22:36:38,8h 10m,小燕(8h10m),2025-12-13 06:47:52
|
||||
葛先生,13811638071,3005655255435397,A11,2025-12-13 16:50:40,4h 53m,小燕(4h53m),2025-12-13 21:44:28
|
||||
葛先生,13811638071,3005944536778822,补时长7,2025-12-13 21:44:56,2h 0m,,2025-12-13 21:45:20
|
||||
葛先生,13811638071,3006295607298309,A1,2025-12-14 03:42:04,0h 43m,小燕(0h43m),2025-12-14 04:26:40
|
||||
葛先生,13811638071,3007126951397381,A1,2025-12-14 17:47:45,2h 5m,小燕(2h5m),2025-12-14 19:53:51
|
||||
葛先生,13811638071,3007250978523205,补时长5,2025-12-14 19:53:55,0h 1m,,2025-12-14 19:54:17
|
||||
葛先生,13811638071,3007446854797445,TV,2025-12-14 23:13:10,5h 57m,小燕(5h57m) 阿清(5h10m),2025-12-15 05:11:18
|
||||
葛先生,13811638071,3008834924841285,A1,2025-12-15 22:01:20,2h 19m,小燕(2h19m),2025-12-16 02:42:42
|
||||
葛先生,13811638071,3008834924841285,S1,2025-12-15 22:45:11,3h 55m,苏苏(2h28m),2025-12-16 02:42:42
|
||||
葛先生,13811638071,3009076506036165,A2,2025-12-16 02:50:56,3h 40m,小燕(3h39m),2025-12-16 06:32:44
|
||||
葛先生,13811638071,3009492999244293,补时长7,2025-12-16 09:54:37,3h 0m,,2025-12-16 09:54:56
|
||||
葛先生,13811638071,3010218131671557,A1,2025-12-16 22:12:16,3h 18m,小燕(3h18m) 阿清(2h43m),2025-12-17 01:31:11
|
||||
葛先生,13811638071,3011552955975237,A1,2025-12-17 19:25:16,1h 34m,小燕(1h34m),2025-12-17 22:04:09
|
||||
葛先生,13811638071,3011552955975237,C2,2025-12-17 20:50:07,1h 13m,小燕(1h3m),2025-12-17 22:04:09
|
||||
葛先生,13811638071,3011630421837381,A18,2025-12-17 22:08:55,3h 3m,小燕(3h3m),2025-12-18 01:12:30
|
||||
葛先生,13811638071,3012931996487173,TV,2025-12-18 20:12:57,5h 38m,小燕(5h38m),2025-12-19 01:53:16
|
||||
葛先生,13811638071,3013266727145349,补时长5,2025-12-19 01:53:27,2h 0m,,2025-12-19 01:53:55
|
||||
葛先生,13811638071,3013302603681669,A6,2025-12-19 02:29:57,0h 30m,小燕(0h29m),2025-12-19 03:00:10
|
||||
葛先生,13811638071,3013331369283205,A1,2025-12-19 02:59:12,0h 18m,,2025-12-19 02:59:41
|
||||
葛先生,13811638071,3014479760183173,A6,2025-12-19 17:07:12,11h 18m,小燕(11h18m) 阿清(2h0m),2025-12-20 06:59:01
|
||||
葛先生,13811638071,3014479760183173,TV,2025-12-19 22:27:25,8h 31m,小燕(2h53m) 阿清(8h22m),2025-12-20 06:59:01
|
||||
葛先生,13811638071,3015171680994757,补时长7,2025-12-20 10:11:16,3h 0m,,2025-12-20 10:11:36
|
||||
葛先生,13811638071,3015904480560645,S2,2025-12-20 21:38:55,0h 56m,球球(0h56m),2025-12-20 22:38:26
|
||||
葛先生,13811638071,3015928035247749,S1,2025-12-20 21:47:59,1h 12m,小燕(1h12m),2025-12-20 23:01:49
|
||||
葛先生,13811638071,3015974337283525,补时长6,2025-12-20 23:47:46,3h 0m,,2025-12-20 23:48:13
|
||||
葛先生,13811638071,3015974988367429,C4,2025-12-20 23:48:26,4h 28m,小燕(4h28m),2025-12-21 04:17:32
|
||||
葛先生,13811638071,3016300766643845,TV,2025-12-21 05:19:50,0h 56m,小燕(0h56m),2025-12-21 06:16:53
|
||||
葛先生,13811638071,3016653147375173,补时长7,2025-12-21 11:18:18,2h 0m,,2025-12-21 11:18:40
|
||||
葛先生,13811638071,3017225201927749,S1,2025-12-21 21:00:13,1h 28m,,2025-12-21 22:30:16
|
||||
葛先生,13811638071,3017273506465285,C5,2025-12-21 21:49:21,1h 24m,千千(1h12m),2025-12-21 23:45:38
|
||||
葛先生,13811638071,3017388287231429,补时长6,2025-12-21 23:46:07,0h 0m,,2025-12-21 23:46:27
|
||||
葛先生,13811638071,3017486080099845,A1,2025-12-22 01:25:36,1h 49m,小燕(1h49m),2025-12-22 03:15:17
|
||||
葛先生,13811638071,3017593957697157,补时长6,2025-12-22 03:15:20,0h 0m,,2025-12-22 03:15:37
|
||||
葛先生,13811638071,3017596515419717,A1,2025-12-22 03:17:56,3h 49m,小燕(3h49m),2025-12-22 07:08:11
|
||||
葛先生,13811638071,3018642766775813,S1,2025-12-22 21:02:14,1h 7m,小燕(1h7m),2025-12-22 22:10:33
|
||||
葛先生,13811638071,3018644316587589,补时长7,2025-12-22 21:03:49,0h 0m,,2025-12-22 21:04:09
|
||||
葛先生,13811638071,3018709942093445,S1,2025-12-22 22:10:34,0h 43m,小燕(0h43m),2025-12-22 22:54:21
|
||||
葛先生,13811638071,3018710150219205,补时长6,2025-12-22 22:10:47,0h 0m,,2025-12-22 22:11:08
|
||||
葛先生,13811638071,3018753009468933,S1,2025-12-22 22:54:23,1h 3m,小燕(1h3m),2025-12-22 23:58:44
|
||||
葛先生,13811638071,3018766856488389,补时长6,2025-12-22 23:08:28,0h 0m,,2025-12-22 23:08:51
|
||||
葛先生,13811638071,3018816489850309,补时长7,2025-12-22 23:58:58,0h 0m,,2025-12-22 23:59:34
|
||||
葛先生,13811638071,3018826595370437,M7,2025-12-23 00:09:14,4h 0m,小燕(3h59m),2025-12-23 04:23:37
|
||||
葛先生,13811638071,3019076971070917,补时长6,2025-12-23 04:23:56,2h 0m,,2025-12-23 04:24:21
|
||||
葛先生,13811638071,3019077416650181,A1,2025-12-23 04:24:23,3h 7m,小燕(3h7m),2025-12-23 07:32:22
|
||||
葛先生,13811638071,3019262758979077,补时长6,2025-12-23 07:32:56,0h 0m,,2025-12-23 07:34:10
|
||||
葛先生,13811638071,3020101562009093,A6,2025-12-23 21:46:12,10h 2m,小燕(10h1m),2025-12-24 07:48:47
|
||||
葛先生,13811638071,3020694538569157,补时长5,2025-12-24 07:49:25,3h 0m,,2025-12-24 07:49:46
|
||||
葛先生,13811638071,3021420856576006,S1,2025-12-24 20:08:16,1h 22m,小燕(1h22m),2025-12-24 21:30:46
|
||||
葛先生,13811638071,3021501988194373,S1,2025-12-24 21:30:47,1h 50m,小燕(1h49m),2025-12-24 23:21:38
|
||||
葛先生,13811638071,3021610987734853,S1,2025-12-24 23:21:40,2h 21m,小燕(2h21m),2025-12-25 01:43:51
|
||||
葛先生,13811638071,3021770635823109,A6,2025-12-25 02:04:04,7h 56m,小燕(7h56m),2025-12-25 12:08:55
|
||||
葛先生,13811638071,3022365496854533,补时长6,2025-12-25 12:09:12,4h 0m,,2025-12-25 12:09:46
|
||||
葛先生,13811638071,3022873228429253,S1,2025-12-25 20:45:41,1h 55m,小燕(1h55m),2025-12-25 22:42:03
|
||||
葛先生,13811638071,3022987729340421,S1,2025-12-25 22:42:10,1h 9m,小燕(1h9m),2025-12-25 23:52:24
|
||||
葛先生,13811638071,3023056813000773,S1,2025-12-25 23:52:26,0h 58m,小燕(0h58m),2025-12-26 00:51:10
|
||||
葛先生,13811638071,3023057336322053,补时长5,2025-12-25 23:52:58,0h 0m,,2025-12-25 23:53:18
|
||||
葛先生,13811638071,3023118312458181,A6,2025-12-26 00:55:00,5h 59m,小燕(5h59m),2025-12-26 06:55:32
|
||||
葛先生,13811638071,3024330328901573,C1,2025-12-26 21:27:56,3h 14m,小燕(3h14m),2025-12-27 00:42:31
|
||||
葛先生,13811638071,3024521672149061,A6,2025-12-27 00:42:34,4h 56m,小燕(4h56m),2025-12-27 05:43:00
|
||||
葛先生,13811638071,3024522484762565,补时长6,2025-12-27 00:43:24,2h 0m,,2025-12-27 00:43:51
|
||||
葛先生,13811638071,3025075373508677,补时长7,2025-12-27 10:05:50,2h 0m,,2025-12-27 10:06:18
|
||||
葛先生,13811638071,3025697485457477,A12,2025-12-27 20:38:40,0h 24m,小燕(0h24m),2025-12-27 21:03:38
|
||||
葛先生,13811638071,3025926993020741,A18,2025-12-28 00:32:08,3h 59m,小燕(3h58m),2025-12-28 04:31:30
|
||||
葛先生,13811638071,3026162441734149,补时长5,2025-12-28 04:31:39,1h 40m,,2025-12-28 04:32:29
|
||||
葛先生,13811638071,3027018732144709,A8,2025-12-28 19:02:43,1h 5m,小燕(1h5m),2025-12-28 20:08:25
|
||||
葛先生,13811638071,3027082894100549,S1,2025-12-28 20:07:59,0h 47m,小燕(0h47m),2025-12-28 20:55:54
|
||||
葛先生,13811638071,3027086248364101,A8,2025-12-28 20:11:24,0h 32m,,2025-12-28 20:11:45
|
||||
葛先生,13811638071,3027171803039749,S1,2025-12-28 20:55:56,0h 42m,,2025-12-28 22:48:42
|
||||
葛先生,13811638071,3027130329974789,A6,2025-12-28 20:56:14,0h 32m,,2025-12-28 20:56:31
|
||||
葛先生,13811638071,3027171803039749,VIP5,2025-12-28 21:38:25,1h 9m,小燕(1h52m),2025-12-28 22:48:42
|
||||
葛先生,13811638071,3027240911620101,VIP5,2025-12-28 22:48:44,0h 42m,小燕(0h42m),2025-12-28 23:32:00
|
||||
葛先生,13811638071,3027279097726917,A1,2025-12-28 23:23:12,0h 4m,,2025-12-29 00:45:50
|
||||
葛先生,13811638071,3027279097726917,C2,2025-12-28 23:27:34,1h 17m,婉婉(1h17m),2025-12-29 00:45:50
|
||||
葛先生,13811638071,3027283487705029,VIP5,2025-12-28 23:32:02,1h 38m,小燕(1h38m),2025-12-29 01:10:27
|
||||
葛先生,13811638071,3027381047756741,补时长7,2025-12-29 01:11:17,0h 0m,,2025-12-29 01:11:47
|
||||
葛先生,13811638071,3027494215747397,A1,2025-12-29 03:06:24,0h 0m,小燕(1h50m),2025-12-29 03:06:51
|
||||
葛先生,13811638071,3027520016877573,补时长5,2025-12-29 03:32:39,1h 40m,,2025-12-29 03:33:33
|
||||
葛先生,13811638071,3028365240272837,A6,2025-12-29 17:52:27,2h 3m,小燕(2h3m),2025-12-29 19:58:42
|
||||
葛先生,13811638071,3028488531724357,M5,2025-12-29 19:57:52,3h 3m,小燕(3h3m),2025-12-29 23:04:58
|
||||
葛先生,13811638071,3028489795159877,A6,2025-12-29 19:59:09,1h 2m,,2025-12-29 19:59:31
|
||||
葛先生,13811638071,3028620706809861,VIP5,2025-12-29 22:12:19,1h 2m,小柔(1h2m) 小燕(0h6m),2025-12-29 23:16:04
|
||||
葛先生,13811638071,3028672505759557,补时长7,2025-12-29 23:05:01,0h 0m,,2025-12-29 23:05:28
|
||||
葛先生,13811638071,3028796631942981,A1,2025-12-30 01:11:17,0h 0m,小燕(1h12m),2025-12-30 01:12:20
|
||||
葛先生,13811638071,3028797785933637,补时长6,2025-12-30 01:12:28,0h 0m,,2025-12-30 01:12:43
|
||||
葛先生,13811638071,3028798611277893,A6,2025-12-30 01:13:18,0h 51m,小燕(0h50m),2025-12-30 02:04:34
|
||||
葛先生,13811638071,3029823520163653,A6,2025-12-30 18:35:53,1h 30m,小燕(1h30m),2025-12-30 20:06:17
|
||||
葛先生,13811638071,3029912671930309,A2,2025-12-30 20:06:35,0h 45m,,2025-12-30 20:07:12
|
||||
葛先生,13811638071,3029920336283461,S1,2025-12-30 20:14:23,1h 9m,小燕(1h8m),2025-12-30 21:26:01
|
||||
葛先生,13811638071,3029953608239109,S3,2025-12-30 20:48:13,0h 54m,,2025-12-30 21:43:22
|
||||
葛先生,13811638071,3029990793086789,S1,2025-12-30 21:26:03,1h 22m,小燕(1h1m) 阿清(0h20m),2025-12-30 22:48:21
|
||||
葛先生,13811638071,3029991615416389,A6,2025-12-30 21:26:53,0h 50m,,2025-12-30 21:27:30
|
||||
葛先生,13811638071,3030051846162437,A6,2025-12-30 22:28:09,1h 35m,小燕(1h13m),2025-12-31 00:03:58
|
||||
葛先生,13811638071,3030071938451269,S1,2025-12-30 22:48:36,0h 45m,阿清(0h45m),2025-12-30 23:34:52
|
||||
葛先生,13811638071,3030329100781637,补时长2,2025-12-31 03:10:12,0h 1m,,2025-12-31 03:10:58
|
||||
葛先生,13811638071,3031047867485317,VIP1,2025-12-31 15:21:22,2h 15m,小燕(2h15m),2025-12-31 18:30:37
|
||||
葛先生,13811638071,3031246638532229,补时长2,2025-12-31 18:43:30,0h 0m,,2025-12-31 18:44:20
|
||||
葛先生,13811638071,3031246638532229,补时长3,2025-12-31 18:43:34,0h 0m,,2025-12-31 18:44:20
|
||||
葛先生,13811638071,3036870032656645,A6,2026-01-04 18:03:58,2h 15m,小燕(2h15m),2026-01-04 20:20:13
|
||||
葛先生,13811638071,3037004116691653,补时长7,2026-01-04 20:20:22,0h 0m,,2026-01-04 20:20:58
|
||||
葛先生,13811638071,3037130243574469,A7,2026-01-04 22:28:40,0h 0m,小燕(2h3m),2026-01-04 22:29:02
|
||||
葛先生,13811638071,3037131328588485,M5,2026-01-04 22:29:47,3h 9m,,2026-01-05 01:44:43
|
||||
葛先生,13811638071,3037318211751109,补时长7,2026-01-05 01:39:53,0h 0m,,2026-01-05 01:40:11
|
||||
葛先生,13811638071,3038663954582853,A6,2026-01-05 20:44:34,0h 21m,,2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038663954582853,M5,2026-01-05 21:05:52,3h 0m,,2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038663954582853,S1,2026-01-05 23:05:41,0h 57m,乔西(0h57m) 小燕(0h21m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038597488594117,补时长7,2026-01-05 23:21:14,0h 0m,小燕(2h35m),2026-01-05 23:22:18
|
||||
葛先生,13811638071,3038663954582853,TV,2026-01-06 00:28:01,0h 0m,小燕(1h59m) 阿清(1h59m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038663954582853,TV,2026-01-06 00:28:51,1h 59m,小燕(1h59m) 阿清(1h59m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3039616315803525,A1,2026-01-06 16:37:38,8h 50m,小燕(8h50m),2026-01-07 01:28:11
|
||||
葛先生,13811638071,3039824130983749,M7,2026-01-06 20:09:02,3h 22m,小燕(3h22m),2026-01-06 23:36:08
|
||||
葛先生,13811638071,3040027900495749,补时长7,2026-01-06 23:36:19,2h 0m,,2026-01-06 23:36:43
|
||||
葛先生,13811638071,3040128992692037,TV,2026-01-07 01:19:10,2h 46m,小燕(2h37m),2026-01-07 04:06:07
|
||||
葛先生,13811638071,3040137917564805,补时长7,2026-01-07 01:28:14,3h 0m,,2026-01-07 01:28:39
|
||||
葛先生,13811638071,3041502086645445,A6,2026-01-07 14:11:29,10h 24m,小燕(10h24m),2026-01-08 05:48:14
|
||||
葛先生,13811638071,3041240108402437,VIP5,2026-01-07 20:09:27,1h 11m,小燕(1h11m),2026-01-07 21:21:15
|
||||
葛先生,13811638071,3041310718166853,VIP5,2026-01-07 21:21:16,0h 46m,小燕(0h46m),2026-01-07 22:08:05
|
||||
葛先生,13811638071,3041356781012741,VIP5,2026-01-07 22:08:08,1h 2m,小燕(1h1m),2026-01-07 23:10:30
|
||||
葛先生,13811638071,3041418120349573,VIP5,2026-01-07 23:10:32,0h 49m,小燕(0h48m),2026-01-08 00:04:02
|
||||
葛先生,13811638071,3041502086645445,TV,2026-01-08 00:35:57,5h 11m,阿清(1h55m) 小燕(5h11m),2026-01-08 05:48:14
|
||||
葛先生,13811638071,3042589002975045,A6,2026-01-08 19:01:37,4h 9m,小燕(6h9m),2026-01-08 23:11:19
|
||||
葛先生,13811638071,3042699136239301,S1,2026-01-08 19:03:26,1h 50m,,2026-01-08 21:21:03
|
||||
葛先生,13811638071,3042699136239301,VIP5,2026-01-08 20:53:38,0h 27m,小燕(2h17m),2026-01-08 21:21:03
|
||||
葛先生,13811638071,3042796595971845,TV,2026-01-08 21:18:43,1h 13m,年糕(1h47m),2026-01-09 00:02:40
|
||||
葛先生,13811638071,3042726147917509,VIP5,2026-01-08 21:21:07,1h 22m,小燕(1h23m),2026-01-08 22:43:49
|
||||
葛先生,13811638071,3042796595971845,TV,2026-01-08 22:32:47,1h 28m,年糕(1h47m),2026-01-09 00:02:40
|
||||
葛先生,13811638071,3042589002975045,VIP5,2026-01-08 22:43:51,0h 26m,小燕(0h26m),2026-01-08 23:11:19
|
||||
葛先生,13811638071,3042835118278341,补时长7,2026-01-08 23:11:58,2h 0m,,2026-01-08 23:12:30
|
||||
葛先生,13811638071,3042885054465733,补时长7,2026-01-09 00:02:46,0h 0m,,2026-01-09 00:03:28
|
||||
葛先生,13811638071,3043910456903429,A6,2026-01-09 17:25:52,7h 34m,小燕(10h34m),2026-01-10 01:01:10
|
||||
葛先生,13811638071,3044081890182917,S2,2026-01-09 20:20:15,2h 15m,千千(2h13m),2026-01-09 22:38:08
|
||||
葛先生,13811638071,3044086761490309,666,2026-01-09 20:25:13,1h 54m,,2026-01-09 22:22:52
|
||||
葛先生,13811638071,3044105870411525,M7,2026-01-09 20:44:39,3h 49m,小燕(3h43m),2026-01-10 00:39:15
|
||||
葛先生,13811638071,3044358662178117,补时长6,2026-01-10 01:01:48,4h 0m,,2026-01-10 01:02:29
|
||||
葛先生,13811638071,3045217778599621,A6,2026-01-10 15:35:44,7h 33m,小燕(7h33m),2026-01-10 23:10:26
|
||||
葛先生,13811638071,3045663905318661,VIP5,2026-01-10 23:09:34,3h 7m,小燕(3h7m),2026-01-11 02:17:13
|
||||
葛先生,13811638071,3045763277047109,补时长5,2026-01-11 00:50:39,2h 2m,,2026-01-11 02:04:36
|
||||
|
@@ -0,0 +1,27 @@
|
||||
会员名称,会员手机号,订单号,桌台(房间)名称,开始时间,持续时间,助教挂钟信息,结账时间
|
||||
葛先生,13811638071,2957821891038725,,2025-11-09 21:52:03,0h 0m,,2025-11-09 21:52:08
|
||||
葛先生,13811638071,2966177428162245,,2025-11-15 19:31:45,0h 0m,,2025-11-15 19:31:50
|
||||
葛先生,13811638071,2980458746317189,,2025-11-25 21:39:27,0h 0m,,2025-11-25 21:39:32
|
||||
葛先生,13811638071,2982035921635973,,2025-11-27 00:23:50,0h 0m,,2025-11-27 00:23:54
|
||||
葛先生,13811638071,2986261249411781,,2025-11-30 00:02:04,0h 0m,,2025-11-30 00:02:10
|
||||
葛先生,13811638071,2987682979566149,,2025-12-01 00:08:19,0h 0m,,2025-12-01 00:08:25
|
||||
葛先生,13811638071,2996398357319941,,2025-12-07 03:54:04,0h 0m,,2025-12-07 03:54:45
|
||||
葛先生,13811638071,3000142759381509,,2025-12-09 19:23:04,0h 0m,,2025-12-09 19:23:08
|
||||
葛先生,13811638071,3000218457131525,,2025-12-09 20:40:04,0h 0m,,2025-12-09 20:40:07
|
||||
葛先生,13811638071,3000309702920709,,2025-12-09 22:12:54,0h 1m,,2025-12-09 22:14:06
|
||||
葛先生,13811638071,3000373824244293,,2025-12-09 23:18:07,0h 0m,,2025-12-09 23:18:10
|
||||
葛先生,13811638071,3000377913346565,,2025-12-09 23:22:17,0h 0m,,2025-12-09 23:22:22
|
||||
葛先生,13811638071,3000415061690757,,2025-12-10 00:00:04,0h 0m,,2025-12-10 00:00:08
|
||||
葛先生,13811638071,3003030187398085,,2025-12-11 20:20:19,0h 0m,,2025-12-11 20:20:22
|
||||
葛先生,13811638071,3005540084271109,,2025-12-13 14:53:31,0h 0m,,2025-12-13 14:53:34
|
||||
葛先生,13811638071,3005540596467845,,2025-12-13 14:54:02,0h 0m,,2025-12-13 14:54:03
|
||||
葛先生,13811638071,3005709583894533,,2025-12-13 17:45:56,0h 0m,,2025-12-13 17:45:58
|
||||
葛先生,13811638071,3008791223945669,,2025-12-15 22:00:44,0h 0m,,2025-12-15 22:00:48
|
||||
葛先生,13811638071,3010440130430917,,2025-12-17 01:58:06,0h 0m,,2025-12-17 01:58:11
|
||||
葛先生,13811638071,3014246545706757,,2025-12-19 18:30:11,0h 0m,,2025-12-19 18:30:15
|
||||
葛先生,13811638071,3017228572607941,,2025-12-21 21:03:39,0h 0m,,2025-12-21 21:03:41
|
||||
葛先生,13811638071,3025720252254149,,2025-12-27 21:01:50,0h 0m,,2025-12-27 21:01:53
|
||||
葛先生,13811638071,3041096056031110,,2026-01-07 17:42:55,0h 0m,,2026-01-07 17:43:01
|
||||
葛先生,13811638071,3045359793473221,,2026-01-10 18:00:13,0h 0m,,2026-01-10 18:00:16
|
||||
葛先生,13811638071,3045651477251973,,2026-01-10 22:56:56,0h 0m,,2026-01-10 22:56:58
|
||||
葛先生,13811638071,3047065961137861,,2026-01-11 22:55:49,0h 0m,,2026-01-11 22:55:51
|
||||
|
@@ -0,0 +1,168 @@
|
||||
会员名称,会员手机号,订单号,桌台(房间)名称,开始时间,持续时间,助教挂钟信息,结账时间
|
||||
葛先生,13811638071,2965176087987909,S1,2025-11-15 00:32:38,2h 0m,,2025-11-15 05:16:43
|
||||
葛先生,13811638071,2965176087987909,TV,2025-11-15 02:33:07,2h 43m,千千(4h43m) 小燕(2h48m),2025-11-15 05:16:43
|
||||
葛先生,13811638071,2966373430363909,888,2025-11-15 22:51:07,3h 25m,柚子(3h25m) 千千(3h21m) 素素(3h12m) 年糕(3h16m) 球球(0h55m),2025-11-16 02:23:36
|
||||
葛先生,13811638071,2970984317881221,TV,2025-11-18 21:32:20,7h 7m,,2025-11-19 05:34:46
|
||||
葛先生,13811638071,2970984317881221,补时长6,2025-11-19 05:01:34,0h 0m,梦梦(4h27m) 千千(3h7m) 小燕(2h49m),2025-11-19 05:34:46
|
||||
葛先生,13811638071,2972114730570373,VIP5,2025-11-19 22:30:59,1h 40m,小燕(1h39m),2025-11-20 02:40:52
|
||||
葛先生,13811638071,2972114730570373,TV,2025-11-20 00:11:28,2h 29m,小燕(2h29m),2025-11-20 02:40:52
|
||||
葛先生,13811638071,2972261781556293,补时长3,2025-11-20 02:41:04,0h 0m,,2025-11-20 02:41:33
|
||||
葛先生,13811638071,2972261781556293,补时长4,2025-11-20 02:41:06,0h 0m,,2025-11-20 02:41:33
|
||||
葛先生,13811638071,2973537861161797,TV,2025-11-21 00:19:09,5h 41m,小燕(5h41m) Amy(1h34m),2025-11-21 06:02:46
|
||||
葛先生,13811638071,2976440977246341,TV,2025-11-23 01:32:22,5h 53m,小燕(5h53m),2025-11-23 07:26:33
|
||||
葛先生,13811638071,2979199778228165,S1,2025-11-24 23:22:58,0h 56m,阿清(0h54m) 小燕(0h9m),2025-11-25 01:10:58
|
||||
葛先生,13811638071,2979199778228165,TV,2025-11-25 00:18:45,0h 44m,小燕(0h44m) 阿清(0h44m),2025-11-25 01:10:58
|
||||
葛先生,13811638071,2979241077901253,M3,2025-11-25 01:00:46,3h 10m,千千(3h10m) 小燕(3h8m) 阿清(3h8m),2025-11-25 04:13:47
|
||||
葛先生,13811638071,2980539547354565,A2,2025-11-25 22:44:25,0h 24m,小燕(0h24m),2025-11-26 05:10:08
|
||||
葛先生,13811638071,2980539547354565,VIP5,2025-11-25 23:01:38,6h 7m,小燕(6h0m),2025-11-26 05:10:08
|
||||
葛先生,13811638071,2982280563167941,A2,2025-11-27 04:32:42,4h 53m,小燕(4h53m) 阿清(4h49m),2025-11-27 11:33:19
|
||||
葛先生,13811638071,2984703823612613,VIP5,2025-11-28 21:37:46,10h 8m,阿清(10h7m) 小燕(8h39m),2025-11-29 07:46:38
|
||||
葛先生,13811638071,2986305074877125,VIP5,2025-11-30 00:46:38,6h 16m,小燕(6h15m),2025-11-30 07:06:16
|
||||
葛先生,13811638071,2987452433699397,S1,2025-11-30 20:13:48,2h 15m,乔西(2h15m) 小燕(1h59m),2025-11-30 22:29:58
|
||||
葛先生,13811638071,2990547445273157,TV,2025-12-03 00:42:12,8h 10m,小燕(8h10m),2025-12-03 08:52:52
|
||||
葛先生,13811638071,2991901466284741,A3,2025-12-03 23:39:35,7h 16m,小燕(7h16m),2025-12-04 09:59:55
|
||||
葛先生,13811638071,2993421047679685,A3,2025-12-05 01:00:00,0h 25m,,2025-12-05 09:16:58
|
||||
葛先生,13811638071,2993421047679685,TV,2025-12-05 01:25:23,7h 50m,小燕(8h16m),2025-12-05 09:16:58
|
||||
葛先生,13811638071,2994624795250949,B3,2025-12-05 21:20:49,0h 35m,,2025-12-06 03:19:33
|
||||
葛先生,13811638071,2994624795250949,TV,2025-12-05 21:49:54,5h 29m,小燕(5h29m),2025-12-06 03:19:33
|
||||
葛先生,13811638071,3003192948659141,TV,2025-12-11 18:23:55,1h 6m,球球(1h6m),2025-12-12 05:16:57
|
||||
葛先生,13811638071,3003354125276101,A6,2025-12-11 20:19:55,2h 50m,小燕(2h50m),2025-12-12 01:50:19
|
||||
葛先生,13811638071,3003192948659141,888,2025-12-11 23:05:52,6h 0m,小燕(5h56m) 梦梦(2h52m) 涛涛(5h51m) 年糕(2h38m),2025-12-12 05:16:57
|
||||
葛先生,13811638071,3003354125276101,A1,2025-12-12 01:49:50,0h 0m,,2025-12-12 01:50:19
|
||||
葛先生,13811638071,3003355747341189,补时长4,2025-12-12 01:51:29,0h 1m,,2025-12-12 01:51:48
|
||||
葛先生,13811638071,3004579787884613,TV,2025-12-12 22:36:38,8h 10m,小燕(8h10m),2025-12-13 06:47:52
|
||||
葛先生,13811638071,3005655255435397,A11,2025-12-13 16:50:40,4h 53m,小燕(4h53m),2025-12-13 21:44:28
|
||||
葛先生,13811638071,3005944536778822,补时长7,2025-12-13 21:44:56,2h 0m,,2025-12-13 21:45:20
|
||||
葛先生,13811638071,3006295607298309,A1,2025-12-14 03:42:04,0h 43m,小燕(0h43m),2025-12-14 04:26:40
|
||||
葛先生,13811638071,3007126951397381,A1,2025-12-14 17:47:45,2h 5m,小燕(2h5m),2025-12-14 19:53:51
|
||||
葛先生,13811638071,3007250978523205,补时长5,2025-12-14 19:53:55,0h 1m,,2025-12-14 19:54:17
|
||||
葛先生,13811638071,3007446854797445,TV,2025-12-14 23:13:10,5h 57m,小燕(5h57m) 阿清(5h10m),2025-12-15 05:11:18
|
||||
葛先生,13811638071,3008834924841285,A1,2025-12-15 22:01:20,2h 19m,小燕(2h19m),2025-12-16 02:42:42
|
||||
葛先生,13811638071,3008834924841285,S1,2025-12-15 22:45:11,3h 55m,苏苏(2h28m),2025-12-16 02:42:42
|
||||
葛先生,13811638071,3009076506036165,A2,2025-12-16 02:50:56,3h 40m,小燕(3h39m),2025-12-16 06:32:44
|
||||
葛先生,13811638071,3009492999244293,补时长7,2025-12-16 09:54:37,3h 0m,,2025-12-16 09:54:56
|
||||
葛先生,13811638071,3010218131671557,A1,2025-12-16 22:12:16,3h 18m,小燕(3h18m) 阿清(2h43m),2025-12-17 01:31:11
|
||||
葛先生,13811638071,3011552955975237,A1,2025-12-17 19:25:16,1h 34m,小燕(1h34m),2025-12-17 22:04:09
|
||||
葛先生,13811638071,3011552955975237,C2,2025-12-17 20:50:07,1h 13m,小燕(1h3m),2025-12-17 22:04:09
|
||||
葛先生,13811638071,3011630421837381,A18,2025-12-17 22:08:55,3h 3m,小燕(3h3m),2025-12-18 01:12:30
|
||||
葛先生,13811638071,3012931996487173,TV,2025-12-18 20:12:57,5h 38m,小燕(5h38m),2025-12-19 01:53:16
|
||||
葛先生,13811638071,3013266727145349,补时长5,2025-12-19 01:53:27,2h 0m,,2025-12-19 01:53:55
|
||||
葛先生,13811638071,3013302603681669,A6,2025-12-19 02:29:57,0h 30m,小燕(0h29m),2025-12-19 03:00:10
|
||||
葛先生,13811638071,3013331369283205,A1,2025-12-19 02:59:12,0h 18m,,2025-12-19 02:59:41
|
||||
葛先生,13811638071,3014479760183173,A6,2025-12-19 17:07:12,11h 18m,小燕(11h18m) 阿清(2h0m),2025-12-20 06:59:01
|
||||
葛先生,13811638071,3014479760183173,TV,2025-12-19 22:27:25,8h 31m,小燕(2h53m) 阿清(8h22m),2025-12-20 06:59:01
|
||||
葛先生,13811638071,3015171680994757,补时长7,2025-12-20 10:11:16,3h 0m,,2025-12-20 10:11:36
|
||||
葛先生,13811638071,3015904480560645,S2,2025-12-20 21:38:55,0h 56m,球球(0h56m),2025-12-20 22:38:26
|
||||
葛先生,13811638071,3015928035247749,S1,2025-12-20 21:47:59,1h 12m,小燕(1h12m),2025-12-20 23:01:49
|
||||
葛先生,13811638071,3015974337283525,补时长6,2025-12-20 23:47:46,3h 0m,,2025-12-20 23:48:13
|
||||
葛先生,13811638071,3015974988367429,C4,2025-12-20 23:48:26,4h 28m,小燕(4h28m),2025-12-21 04:17:32
|
||||
葛先生,13811638071,3016300766643845,TV,2025-12-21 05:19:50,0h 56m,小燕(0h56m),2025-12-21 06:16:53
|
||||
葛先生,13811638071,3016653147375173,补时长7,2025-12-21 11:18:18,2h 0m,,2025-12-21 11:18:40
|
||||
葛先生,13811638071,3017225201927749,S1,2025-12-21 21:00:13,1h 28m,,2025-12-21 22:30:16
|
||||
葛先生,13811638071,3017273506465285,C5,2025-12-21 21:49:21,1h 24m,千千(1h12m),2025-12-21 23:45:38
|
||||
葛先生,13811638071,3017388287231429,补时长6,2025-12-21 23:46:07,0h 0m,,2025-12-21 23:46:27
|
||||
葛先生,13811638071,3017486080099845,A1,2025-12-22 01:25:36,1h 49m,小燕(1h49m),2025-12-22 03:15:17
|
||||
葛先生,13811638071,3017593957697157,补时长6,2025-12-22 03:15:20,0h 0m,,2025-12-22 03:15:37
|
||||
葛先生,13811638071,3017596515419717,A1,2025-12-22 03:17:56,3h 49m,小燕(3h49m),2025-12-22 07:08:11
|
||||
葛先生,13811638071,3018642766775813,S1,2025-12-22 21:02:14,1h 7m,小燕(1h7m),2025-12-22 22:10:33
|
||||
葛先生,13811638071,3018644316587589,补时长7,2025-12-22 21:03:49,0h 0m,,2025-12-22 21:04:09
|
||||
葛先生,13811638071,3018709942093445,S1,2025-12-22 22:10:34,0h 43m,小燕(0h43m),2025-12-22 22:54:21
|
||||
葛先生,13811638071,3018710150219205,补时长6,2025-12-22 22:10:47,0h 0m,,2025-12-22 22:11:08
|
||||
葛先生,13811638071,3018753009468933,S1,2025-12-22 22:54:23,1h 3m,小燕(1h3m),2025-12-22 23:58:44
|
||||
葛先生,13811638071,3018766856488389,补时长6,2025-12-22 23:08:28,0h 0m,,2025-12-22 23:08:51
|
||||
葛先生,13811638071,3018816489850309,补时长7,2025-12-22 23:58:58,0h 0m,,2025-12-22 23:59:34
|
||||
葛先生,13811638071,3018826595370437,M7,2025-12-23 00:09:14,4h 0m,小燕(3h59m),2025-12-23 04:23:37
|
||||
葛先生,13811638071,3019076971070917,补时长6,2025-12-23 04:23:56,2h 0m,,2025-12-23 04:24:21
|
||||
葛先生,13811638071,3019077416650181,A1,2025-12-23 04:24:23,3h 7m,小燕(3h7m),2025-12-23 07:32:22
|
||||
葛先生,13811638071,3019262758979077,补时长6,2025-12-23 07:32:56,0h 0m,,2025-12-23 07:34:10
|
||||
葛先生,13811638071,3020101562009093,A6,2025-12-23 21:46:12,10h 2m,小燕(10h1m),2025-12-24 07:48:47
|
||||
葛先生,13811638071,3020694538569157,补时长5,2025-12-24 07:49:25,3h 0m,,2025-12-24 07:49:46
|
||||
葛先生,13811638071,3021420856576006,S1,2025-12-24 20:08:16,1h 22m,小燕(1h22m),2025-12-24 21:30:46
|
||||
葛先生,13811638071,3021501988194373,S1,2025-12-24 21:30:47,1h 50m,小燕(1h49m),2025-12-24 23:21:38
|
||||
葛先生,13811638071,3021610987734853,S1,2025-12-24 23:21:40,2h 21m,小燕(2h21m),2025-12-25 01:43:51
|
||||
葛先生,13811638071,3021770635823109,A6,2025-12-25 02:04:04,7h 56m,小燕(7h56m),2025-12-25 12:08:55
|
||||
葛先生,13811638071,3022365496854533,补时长6,2025-12-25 12:09:12,4h 0m,,2025-12-25 12:09:46
|
||||
葛先生,13811638071,3022873228429253,S1,2025-12-25 20:45:41,1h 55m,小燕(1h55m),2025-12-25 22:42:03
|
||||
葛先生,13811638071,3022987729340421,S1,2025-12-25 22:42:10,1h 9m,小燕(1h9m),2025-12-25 23:52:24
|
||||
葛先生,13811638071,3023056813000773,S1,2025-12-25 23:52:26,0h 58m,小燕(0h58m),2025-12-26 00:51:10
|
||||
葛先生,13811638071,3023057336322053,补时长5,2025-12-25 23:52:58,0h 0m,,2025-12-25 23:53:18
|
||||
葛先生,13811638071,3023118312458181,A6,2025-12-26 00:55:00,5h 59m,小燕(5h59m),2025-12-26 06:55:32
|
||||
葛先生,13811638071,3024330328901573,C1,2025-12-26 21:27:56,3h 14m,小燕(3h14m),2025-12-27 00:42:31
|
||||
葛先生,13811638071,3024521672149061,A6,2025-12-27 00:42:34,4h 56m,小燕(4h56m),2025-12-27 05:43:00
|
||||
葛先生,13811638071,3024522484762565,补时长6,2025-12-27 00:43:24,2h 0m,,2025-12-27 00:43:51
|
||||
葛先生,13811638071,3025075373508677,补时长7,2025-12-27 10:05:50,2h 0m,,2025-12-27 10:06:18
|
||||
葛先生,13811638071,3025697485457477,A12,2025-12-27 20:38:40,0h 24m,小燕(0h24m),2025-12-27 21:03:38
|
||||
葛先生,13811638071,3025926993020741,A18,2025-12-28 00:32:08,3h 59m,小燕(3h58m),2025-12-28 04:31:30
|
||||
葛先生,13811638071,3026162441734149,补时长5,2025-12-28 04:31:39,1h 40m,,2025-12-28 04:32:29
|
||||
葛先生,13811638071,3027018732144709,A8,2025-12-28 19:02:43,1h 5m,小燕(1h5m),2025-12-28 20:08:25
|
||||
葛先生,13811638071,3027082894100549,S1,2025-12-28 20:07:59,0h 47m,小燕(0h47m),2025-12-28 20:55:54
|
||||
葛先生,13811638071,3027086248364101,A8,2025-12-28 20:11:24,0h 32m,,2025-12-28 20:11:45
|
||||
葛先生,13811638071,3027171803039749,S1,2025-12-28 20:55:56,0h 42m,,2025-12-28 22:48:42
|
||||
葛先生,13811638071,3027130329974789,A6,2025-12-28 20:56:14,0h 32m,,2025-12-28 20:56:31
|
||||
葛先生,13811638071,3027171803039749,VIP5,2025-12-28 21:38:25,1h 9m,小燕(1h52m),2025-12-28 22:48:42
|
||||
葛先生,13811638071,3027240911620101,VIP5,2025-12-28 22:48:44,0h 42m,小燕(0h42m),2025-12-28 23:32:00
|
||||
葛先生,13811638071,3027279097726917,A1,2025-12-28 23:23:12,0h 4m,,2025-12-29 00:45:50
|
||||
葛先生,13811638071,3027279097726917,C2,2025-12-28 23:27:34,1h 17m,婉婉(1h17m),2025-12-29 00:45:50
|
||||
葛先生,13811638071,3027283487705029,VIP5,2025-12-28 23:32:02,1h 38m,小燕(1h38m),2025-12-29 01:10:27
|
||||
葛先生,13811638071,3027381047756741,补时长7,2025-12-29 01:11:17,0h 0m,,2025-12-29 01:11:47
|
||||
葛先生,13811638071,3027494215747397,A1,2025-12-29 03:06:24,0h 0m,小燕(1h50m),2025-12-29 03:06:51
|
||||
葛先生,13811638071,3027520016877573,补时长5,2025-12-29 03:32:39,1h 40m,,2025-12-29 03:33:33
|
||||
葛先生,13811638071,3028365240272837,A6,2025-12-29 17:52:27,2h 3m,小燕(2h3m),2025-12-29 19:58:42
|
||||
葛先生,13811638071,3028488531724357,M5,2025-12-29 19:57:52,3h 3m,小燕(3h3m),2025-12-29 23:04:58
|
||||
葛先生,13811638071,3028489795159877,A6,2025-12-29 19:59:09,1h 2m,,2025-12-29 19:59:31
|
||||
葛先生,13811638071,3028620706809861,VIP5,2025-12-29 22:12:19,1h 2m,小柔(1h2m) 小燕(0h6m),2025-12-29 23:16:04
|
||||
葛先生,13811638071,3028672505759557,补时长7,2025-12-29 23:05:01,0h 0m,,2025-12-29 23:05:28
|
||||
葛先生,13811638071,3028796631942981,A1,2025-12-30 01:11:17,0h 0m,小燕(1h12m),2025-12-30 01:12:20
|
||||
葛先生,13811638071,3028797785933637,补时长6,2025-12-30 01:12:28,0h 0m,,2025-12-30 01:12:43
|
||||
葛先生,13811638071,3028798611277893,A6,2025-12-30 01:13:18,0h 51m,小燕(0h50m),2025-12-30 02:04:34
|
||||
葛先生,13811638071,3029823520163653,A6,2025-12-30 18:35:53,1h 30m,小燕(1h30m),2025-12-30 20:06:17
|
||||
葛先生,13811638071,3029912671930309,A2,2025-12-30 20:06:35,0h 45m,,2025-12-30 20:07:12
|
||||
葛先生,13811638071,3029920336283461,S1,2025-12-30 20:14:23,1h 9m,小燕(1h8m),2025-12-30 21:26:01
|
||||
葛先生,13811638071,3029953608239109,S3,2025-12-30 20:48:13,0h 54m,,2025-12-30 21:43:22
|
||||
葛先生,13811638071,3029990793086789,S1,2025-12-30 21:26:03,1h 22m,小燕(1h1m) 阿清(0h20m),2025-12-30 22:48:21
|
||||
葛先生,13811638071,3029991615416389,A6,2025-12-30 21:26:53,0h 50m,,2025-12-30 21:27:30
|
||||
葛先生,13811638071,3030051846162437,A6,2025-12-30 22:28:09,1h 35m,小燕(1h13m),2025-12-31 00:03:58
|
||||
葛先生,13811638071,3030071938451269,S1,2025-12-30 22:48:36,0h 45m,阿清(0h45m),2025-12-30 23:34:52
|
||||
葛先生,13811638071,3030329100781637,补时长2,2025-12-31 03:10:12,0h 1m,,2025-12-31 03:10:58
|
||||
葛先生,13811638071,3031047867485317,VIP1,2025-12-31 15:21:22,2h 15m,小燕(2h15m),2025-12-31 18:30:37
|
||||
葛先生,13811638071,3031246638532229,补时长2,2025-12-31 18:43:30,0h 0m,,2025-12-31 18:44:20
|
||||
葛先生,13811638071,3031246638532229,补时长3,2025-12-31 18:43:34,0h 0m,,2025-12-31 18:44:20
|
||||
葛先生,13811638071,3036870032656645,A6,2026-01-04 18:03:58,2h 15m,小燕(2h15m),2026-01-04 20:20:13
|
||||
葛先生,13811638071,3037004116691653,补时长7,2026-01-04 20:20:22,0h 0m,,2026-01-04 20:20:58
|
||||
葛先生,13811638071,3037130243574469,A7,2026-01-04 22:28:40,0h 0m,小燕(2h3m),2026-01-04 22:29:02
|
||||
葛先生,13811638071,3037131328588485,M5,2026-01-04 22:29:47,3h 9m,,2026-01-05 01:44:43
|
||||
葛先生,13811638071,3037318211751109,补时长7,2026-01-05 01:39:53,0h 0m,,2026-01-05 01:40:11
|
||||
葛先生,13811638071,3038663954582853,A6,2026-01-05 20:44:34,0h 21m,,2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038663954582853,M5,2026-01-05 21:05:52,3h 0m,,2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038663954582853,S1,2026-01-05 23:05:41,0h 57m,乔西(0h57m) 小燕(0h21m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038597488594117,补时长7,2026-01-05 23:21:14,0h 0m,小燕(2h35m),2026-01-05 23:22:18
|
||||
葛先生,13811638071,3038663954582853,TV,2026-01-06 00:28:01,0h 0m,小燕(1h59m) 阿清(1h59m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038663954582853,TV,2026-01-06 00:28:51,1h 59m,小燕(1h59m) 阿清(1h59m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3039616315803525,A1,2026-01-06 16:37:38,8h 50m,小燕(8h50m),2026-01-07 01:28:11
|
||||
葛先生,13811638071,3039824130983749,M7,2026-01-06 20:09:02,3h 22m,小燕(3h22m),2026-01-06 23:36:08
|
||||
葛先生,13811638071,3040027900495749,补时长7,2026-01-06 23:36:19,2h 0m,,2026-01-06 23:36:43
|
||||
葛先生,13811638071,3040128992692037,TV,2026-01-07 01:19:10,2h 46m,小燕(2h37m),2026-01-07 04:06:07
|
||||
葛先生,13811638071,3040137917564805,补时长7,2026-01-07 01:28:14,3h 0m,,2026-01-07 01:28:39
|
||||
葛先生,13811638071,3041502086645445,A6,2026-01-07 14:11:29,10h 24m,小燕(10h24m),2026-01-08 05:48:14
|
||||
葛先生,13811638071,3041240108402437,VIP5,2026-01-07 20:09:27,1h 11m,小燕(1h11m),2026-01-07 21:21:15
|
||||
葛先生,13811638071,3041310718166853,VIP5,2026-01-07 21:21:16,0h 46m,小燕(0h46m),2026-01-07 22:08:05
|
||||
葛先生,13811638071,3041356781012741,VIP5,2026-01-07 22:08:08,1h 2m,小燕(1h1m),2026-01-07 23:10:30
|
||||
葛先生,13811638071,3041418120349573,VIP5,2026-01-07 23:10:32,0h 49m,小燕(0h48m),2026-01-08 00:04:02
|
||||
葛先生,13811638071,3041502086645445,TV,2026-01-08 00:35:57,5h 11m,阿清(1h55m) 小燕(5h11m),2026-01-08 05:48:14
|
||||
葛先生,13811638071,3042589002975045,A6,2026-01-08 19:01:37,4h 9m,小燕(6h9m),2026-01-08 23:11:19
|
||||
葛先生,13811638071,3042699136239301,S1,2026-01-08 19:03:26,1h 50m,,2026-01-08 21:21:03
|
||||
葛先生,13811638071,3042699136239301,VIP5,2026-01-08 20:53:38,0h 27m,小燕(2h17m),2026-01-08 21:21:03
|
||||
葛先生,13811638071,3042796595971845,TV,2026-01-08 21:18:43,1h 13m,年糕(1h47m),2026-01-09 00:02:40
|
||||
葛先生,13811638071,3042726147917509,VIP5,2026-01-08 21:21:07,1h 22m,小燕(1h23m),2026-01-08 22:43:49
|
||||
葛先生,13811638071,3042796595971845,TV,2026-01-08 22:32:47,1h 28m,年糕(1h47m),2026-01-09 00:02:40
|
||||
葛先生,13811638071,3042589002975045,VIP5,2026-01-08 22:43:51,0h 26m,小燕(0h26m),2026-01-08 23:11:19
|
||||
葛先生,13811638071,3042835118278341,补时长7,2026-01-08 23:11:58,2h 0m,,2026-01-08 23:12:30
|
||||
葛先生,13811638071,3042885054465733,补时长7,2026-01-09 00:02:46,0h 0m,,2026-01-09 00:03:28
|
||||
葛先生,13811638071,3043910456903429,A6,2026-01-09 17:25:52,7h 34m,小燕(10h34m),2026-01-10 01:01:10
|
||||
葛先生,13811638071,3044081890182917,S2,2026-01-09 20:20:15,2h 15m,千千(2h13m),2026-01-09 22:38:08
|
||||
葛先生,13811638071,3044086761490309,666,2026-01-09 20:25:13,1h 54m,,2026-01-09 22:22:52
|
||||
葛先生,13811638071,3044105870411525,M7,2026-01-09 20:44:39,3h 49m,小燕(3h43m),2026-01-10 00:39:15
|
||||
葛先生,13811638071,3044358662178117,补时长6,2026-01-10 01:01:48,4h 0m,,2026-01-10 01:02:29
|
||||
葛先生,13811638071,3045217778599621,A6,2026-01-10 15:35:44,7h 33m,小燕(7h33m),2026-01-10 23:10:26
|
||||
葛先生,13811638071,3045663905318661,VIP5,2026-01-10 23:09:34,3h 7m,小燕(3h7m),2026-01-11 02:17:13
|
||||
葛先生,13811638071,3045763277047109,补时长5,2026-01-11 00:50:39,2h 2m,,2026-01-11 02:04:36
|
||||
|
@@ -0,0 +1,40 @@
|
||||
会员名称,会员手机号,订单号,桌台(房间)名称,开始时间,持续时间,助教挂钟信息,结账时间
|
||||
葛先生,13811638071,3036870032656645,A6,2026-01-04 18:03:58,2h 15m,小燕(2h15m),2026-01-04 20:20:13
|
||||
葛先生,13811638071,3037004116691653,补时长7,2026-01-04 20:20:22,0h 0m,,2026-01-04 20:20:58
|
||||
葛先生,13811638071,3037130243574469,A7,2026-01-04 22:28:40,0h 0m,小燕(2h3m),2026-01-04 22:29:02
|
||||
葛先生,13811638071,3037131328588485,M5,2026-01-04 22:29:47,3h 9m,,2026-01-05 01:44:43
|
||||
葛先生,13811638071,3037318211751109,补时长7,2026-01-05 01:39:53,0h 0m,,2026-01-05 01:40:11
|
||||
葛先生,13811638071,3038443483466437,A6,2026-01-05 20:44:34,0h 21m,,2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038464422284485,M5,2026-01-05 21:05:52,3h 0m,,2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038582201207493,S1,2026-01-05 23:05:41,0h 57m,乔西(0h57m) 小燕(0h21m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038597488594117,补时长7,2026-01-05 23:21:14,0h 0m,小燕(2h35m),2026-01-05 23:22:18
|
||||
葛先生,13811638071,3038663145786693,TV,2026-01-06 00:28:01,0h 0m,阿清(1h59m) 小燕(1h59m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3038663954582853,TV,2026-01-06 00:28:51,1h 59m,阿清(1h59m) 小燕(1h59m),2026-01-06 02:31:25
|
||||
葛先生,13811638071,3039616315803525,A1,2026-01-06 16:37:38,8h 50m,小燕(8h50m),2026-01-07 01:28:11
|
||||
葛先生,13811638071,3039824130983749,M7,2026-01-06 20:09:02,3h 22m,小燕(3h22m),2026-01-06 23:36:08
|
||||
葛先生,13811638071,3040027900495749,补时长7,2026-01-06 23:36:19,2h 0m,,2026-01-06 23:36:43
|
||||
葛先生,13811638071,3040128992692037,TV,2026-01-07 01:19:10,2h 46m,小燕(2h37m),2026-01-07 04:06:07
|
||||
葛先生,13811638071,3040137917564805,补时长7,2026-01-07 01:28:14,3h 0m,,2026-01-07 01:28:39
|
||||
葛先生,13811638071,3040888209426117,A6,2026-01-07 14:11:29,10h 24m,小燕(10h24m),2026-01-08 05:48:14
|
||||
葛先生,13811638071,3041240108402437,VIP5,2026-01-07 20:09:27,1h 11m,小燕(1h11m),2026-01-07 21:21:15
|
||||
葛先生,13811638071,3041310718166853,VIP5,2026-01-07 21:21:16,0h 46m,小燕(0h46m) 小燕(0h0m),2026-01-07 22:08:05
|
||||
葛先生,13811638071,3041356781012741,VIP5,2026-01-07 22:08:08,1h 2m,小燕(1h1m),2026-01-07 23:10:30
|
||||
葛先生,13811638071,3041418120349573,VIP5,2026-01-07 23:10:32,0h 49m,小燕(0h48m),2026-01-08 00:04:02
|
||||
葛先生,13811638071,3041502086645445,TV,2026-01-08 00:35:57,5h 11m,阿清(1h55m) 小燕(5h11m),2026-01-08 05:48:14
|
||||
葛先生,13811638071,3042589002975045,A6,2026-01-08 19:01:37,4h 9m,小燕(0h0m) 小燕(4h9m) 小燕(0h0m),2026-01-08 23:11:19
|
||||
葛先生,13811638071,3042590786307781,S1,2026-01-08 19:03:26,1h 50m,小燕(0h0m),2026-01-08 21:21:03
|
||||
葛先生,13811638071,3042699136239301,VIP5,2026-01-08 20:53:38,0h 27m,小燕(2h17m),2026-01-08 21:21:03
|
||||
葛先生,13811638071,3042723784541957,TV,2026-01-08 21:18:43,1h 13m,年糕(1h28m) 年糕(0h0m) 年糕(0h19m),2026-01-09 00:02:40
|
||||
葛先生,13811638071,3042726147917509,VIP5,2026-01-08 21:21:07,1h 22m,小燕(1h23m),2026-01-08 22:43:49
|
||||
葛先生,13811638071,3042796595971845,TV,2026-01-08 22:32:47,1h 28m,年糕(1h28m) 年糕(0h0m) 年糕(0h19m),2026-01-09 00:02:40
|
||||
葛先生,13811638071,3042807473456837,VIP5,2026-01-08 22:43:51,0h 26m,小燕(0h26m),2026-01-08 23:11:19
|
||||
葛先生,13811638071,3042835118278341,补时长7,2026-01-08 23:11:58,2h 0m,,2026-01-08 23:12:30
|
||||
葛先生,13811638071,3042885054465733,补时长7,2026-01-09 00:02:46,0h 0m,,2026-01-09 00:03:28
|
||||
葛先生,13811638071,3043910456903429,A6,2026-01-09 17:25:52,7h 34m,小燕(7h34m) 小燕(0h0m) 小燕(0h0m),2026-01-10 01:01:10
|
||||
葛先生,13811638071,3044081890182917,S2,2026-01-09 20:20:15,2h 15m,千千(2h13m),2026-01-09 22:38:08
|
||||
葛先生,13811638071,3044086761490309,666,2026-01-09 20:25:13,1h 54m,,2026-01-09 22:22:52
|
||||
葛先生,13811638071,3044105870411525,M7,2026-01-09 20:44:39,3h 49m,小燕(0h0m) 小燕(3h43m),2026-01-10 00:39:15
|
||||
葛先生,13811638071,3044358662178117,补时长6,2026-01-10 01:01:48,4h 0m,,2026-01-10 01:02:29
|
||||
葛先生,13811638071,3045217778599621,A6,2026-01-10 15:35:44,7h 33m,小燕(7h33m) 小燕(0h0m),2026-01-10 23:10:26
|
||||
葛先生,13811638071,3045663905318661,VIP5,2026-01-10 23:09:34,3h 7m,小燕(3h7m),2026-01-11 02:17:13
|
||||
葛先生,13811638071,3045763277047109,补时长5,2026-01-11 00:50:39,2h 2m,,2026-01-11 02:04:36
|
||||
|
@@ -0,0 +1,3 @@
|
||||
助教昵称,桌台(房间)名称,超休课时,超休金额,超休原因,记录时间
|
||||
小燕,A6,小燕(0h0m),0,,2026-01-08 05:48:14
|
||||
小燕,VIP5,小燕(43h21m),99.70,,2026-01-08 22:43:49
|
||||
|
19596
etl_billiards/reports/data_integrity_history_20260119_045009.json
Normal file
19596
etl_billiards/reports/data_integrity_history_20260119_045009.json
Normal file
File diff suppressed because it is too large
Load Diff
45066
etl_billiards/reports/data_integrity_history_20260119_060453.json
Normal file
45066
etl_billiards/reports/data_integrity_history_20260119_060453.json
Normal file
File diff suppressed because it is too large
Load Diff
45060
etl_billiards/reports/data_integrity_history_20260119_070903.json
Normal file
45060
etl_billiards/reports/data_integrity_history_20260119_070903.json
Normal file
File diff suppressed because it is too large
Load Diff
24517
etl_billiards/reports/data_integrity_history_20260119_082915.json
Normal file
24517
etl_billiards/reports/data_integrity_history_20260119_082915.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"mode": "history",
|
||||
"start": "2026-01-19T00:00:00+08:00",
|
||||
"end": "2026-01-19T00:00:00+08:00",
|
||||
"windows": [],
|
||||
"total_missing": 0,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-19T17:07:01.451073+08:00"
|
||||
}
|
||||
10555
etl_billiards/reports/data_integrity_history_20260120_041412.json
Normal file
10555
etl_billiards/reports/data_integrity_history_20260120_041412.json
Normal file
File diff suppressed because it is too large
Load Diff
19348
etl_billiards/reports/data_integrity_history_20260126_061648.json
Normal file
19348
etl_billiards/reports/data_integrity_history_20260126_061648.json
Normal file
File diff suppressed because it is too large
Load Diff
18946
etl_billiards/reports/data_integrity_history_20260126_192038.json
Normal file
18946
etl_billiards/reports/data_integrity_history_20260126_192038.json
Normal file
File diff suppressed because it is too large
Load Diff
11273
etl_billiards/reports/data_integrity_history_20260126_205212.json
Normal file
11273
etl_billiards/reports/data_integrity_history_20260126_205212.json
Normal file
File diff suppressed because it is too large
Load Diff
14940
etl_billiards/reports/data_integrity_history_20260126_213058.json
Normal file
14940
etl_billiards/reports/data_integrity_history_20260126_213058.json
Normal file
File diff suppressed because it is too large
Load Diff
12264
etl_billiards/reports/data_integrity_history_20260126_220521.json
Normal file
12264
etl_billiards/reports/data_integrity_history_20260126_220521.json
Normal file
File diff suppressed because it is too large
Load Diff
12704
etl_billiards/reports/data_integrity_history_20260126_225143.json
Normal file
12704
etl_billiards/reports/data_integrity_history_20260126_225143.json
Normal file
File diff suppressed because it is too large
Load Diff
12989
etl_billiards/reports/data_integrity_history_20260126_234946.json
Normal file
12989
etl_billiards/reports/data_integrity_history_20260126_234946.json
Normal file
File diff suppressed because it is too large
Load Diff
1690
etl_billiards/reports/data_integrity_history_20260127_024335.json
Normal file
1690
etl_billiards/reports/data_integrity_history_20260127_024335.json
Normal file
File diff suppressed because it is too large
Load Diff
1275
etl_billiards/reports/data_integrity_history_20260127_031951.json
Normal file
1275
etl_billiards/reports/data_integrity_history_20260127_031951.json
Normal file
File diff suppressed because it is too large
Load Diff
1980
etl_billiards/reports/data_integrity_window_20260119_222704.json
Normal file
1980
etl_billiards/reports/data_integrity_window_20260119_222704.json
Normal file
File diff suppressed because it is too large
Load Diff
1311
etl_billiards/reports/data_integrity_window_20260119_233704.json
Normal file
1311
etl_billiards/reports/data_integrity_window_20260119_233704.json
Normal file
File diff suppressed because it is too large
Load Diff
1096
etl_billiards/reports/data_integrity_window_20260120_003547.json
Normal file
1096
etl_billiards/reports/data_integrity_window_20260120_003547.json
Normal file
File diff suppressed because it is too large
Load Diff
1041
etl_billiards/reports/data_integrity_window_20260120_023005.json
Normal file
1041
etl_billiards/reports/data_integrity_window_20260120_023005.json
Normal file
File diff suppressed because it is too large
Load Diff
972
etl_billiards/reports/data_integrity_window_20260120_034306.json
Normal file
972
etl_billiards/reports/data_integrity_window_20260120_034306.json
Normal file
@@ -0,0 +1,972 @@
|
||||
{
|
||||
"mode": "window",
|
||||
"window": {
|
||||
"start": "2026-01-10T00:37:58+08:00",
|
||||
"end": "2026-01-20T05:37:58+08:00",
|
||||
"segments": 1
|
||||
},
|
||||
"windows": [
|
||||
{
|
||||
"mode": "window",
|
||||
"window": {
|
||||
"start": "2026-01-10T00:37:58+08:00",
|
||||
"end": "2026-01-20T05:37:58+08:00",
|
||||
"label": "segment_1",
|
||||
"granularity": "window"
|
||||
},
|
||||
"api_to_ods": {
|
||||
"window_split_unit": "none",
|
||||
"window_compensation_hours": 0,
|
||||
"start": "2026-01-10T00:37:58+08:00",
|
||||
"end": "2026-01-20T05:37:58+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 10,
|
||||
"window_hours": 0,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 136,
|
||||
"records_with_pk": 136,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1234,
|
||||
"records_with_pk": 1234,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9940,
|
||||
"records_with_pk": 9940,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 50,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 299,
|
||||
"records_with_pk": 299,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11894,
|
||||
"records_with_pk": 11894,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 60,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 37,
|
||||
"records_with_pk": 37,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16480,
|
||||
"records_with_pk": 16480,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 83,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 554,
|
||||
"records_with_pk": 554,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 943,
|
||||
"records_with_pk": 943,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 5,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2474,
|
||||
"records_with_pk": 2474,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 13,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 28,
|
||||
"records_with_pk": 28,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8282,
|
||||
"records_with_pk": 8282,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 42,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 1689,
|
||||
"records_with_pk": 1689,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3058615392274245
|
||||
}
|
||||
],
|
||||
"pages": 10,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1690,
|
||||
"records_with_pk": 1690,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 171,
|
||||
"records_with_pk": 171,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 1279,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 1279,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 1,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-20T03:43:01.888371+08:00"
|
||||
},
|
||||
"ods_to_dwd": {
|
||||
"tables": [
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_settlement_head",
|
||||
"ods_table": "billiards_ods.settlement_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 22622,
|
||||
"ods": 22622,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_settlement_head_ex",
|
||||
"ods_table": "billiards_ods.settlement_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 22622,
|
||||
"ods": 22622,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_log",
|
||||
"ods_table": "billiards_ods.table_fee_transactions",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 1091,
|
||||
"ods": 1091,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "adjust_amount",
|
||||
"dwd_sum": 26391.76,
|
||||
"ods_sum": 26391.76,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "coupon_promotion_amount",
|
||||
"dwd_sum": 56895.59,
|
||||
"ods_sum": 56895.59,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 133626.16,
|
||||
"ods_sum": 133626.16,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 7778.22,
|
||||
"ods_sum": 7778.22,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "real_table_charge_money",
|
||||
"dwd_sum": 53929.55,
|
||||
"ods_sum": 53929.55,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_log_ex",
|
||||
"ods_table": "billiards_ods.table_fee_transactions",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 17711,
|
||||
"ods": 17711,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "fee_total",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "mgmt_fee",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "service_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "used_card_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_adjust",
|
||||
"ods_table": "billiards_ods.table_fee_discount_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 2736,
|
||||
"ods": 2736,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 315562.38,
|
||||
"ods_sum": 315562.38,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_adjust_ex",
|
||||
"ods_table": "billiards_ods.table_fee_discount_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 2736,
|
||||
"ods": 2736,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_store_goods_sale",
|
||||
"ods_table": "billiards_ods.store_goods_sales_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 0,
|
||||
"ods": 0,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "cost_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "real_goods_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_store_goods_sale_ex",
|
||||
"ods_table": "billiards_ods.store_goods_sales_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 607092,
|
||||
"ods": 17563,
|
||||
"diff": 589529
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_deduct_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "discount_money",
|
||||
"dwd_sum": 745318.1,
|
||||
"ods_sum": 21673.2,
|
||||
"diff": 723644.9
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "option_coupon_deduct_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "option_member_discount_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "point_discount_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "point_discount_money_cost",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "push_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_service_log",
|
||||
"ods_table": "billiards_ods.assistant_service_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 303,
|
||||
"ods": 303,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_deduct_money",
|
||||
"dwd_sum": 190.72,
|
||||
"ods_sum": 190.72,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 93547.06,
|
||||
"ods_sum": 93547.06,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_service_log_ex",
|
||||
"ods_table": "billiards_ods.assistant_service_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 4811,
|
||||
"ods": 4811,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "manual_discount_amount",
|
||||
"dwd_sum": 414.17,
|
||||
"ods_sum": 414.17,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "service_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_trash_event",
|
||||
"ods_table": "billiards_ods.assistant_cancellation_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 92,
|
||||
"ods": 92,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_trash_event_ex",
|
||||
"ods_table": "billiards_ods.assistant_cancellation_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 92,
|
||||
"ods": 92,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_member_balance_change",
|
||||
"ods_table": "billiards_ods.member_balance_changes",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 4615,
|
||||
"ods": 4615,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_member_balance_change_ex",
|
||||
"ods_table": "billiards_ods.member_balance_changes",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 4615,
|
||||
"ods": 4615,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "refund_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_groupbuy_redemption",
|
||||
"ods_table": "billiards_ods.group_buy_redemption_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 910,
|
||||
"ods": 910,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_money",
|
||||
"dwd_sum": 59094.0,
|
||||
"ods_sum": 59094.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 56895.59,
|
||||
"ods_sum": 56895.59,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_groupbuy_redemption_ex",
|
||||
"ods_table": "billiards_ods.group_buy_redemption_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 10938,
|
||||
"ods": 10938,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "assistant_promotion_money",
|
||||
"dwd_sum": 7353.59,
|
||||
"ods_sum": 7353.59,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "assistant_service_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "goods_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "recharge_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "reward_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "table_service_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_platform_coupon_redemption",
|
||||
"ods_table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 905,
|
||||
"ods": 905,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_money",
|
||||
"dwd_sum": 58612.0,
|
||||
"ods_sum": 58612.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_platform_coupon_redemption_ex",
|
||||
"ods_table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 16480,
|
||||
"ods": 16480,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_recharge_order",
|
||||
"ods_table": "billiards_ods.recharge_settlements",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 444,
|
||||
"ods": 444,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_recharge_order_ex",
|
||||
"ods_table": "billiards_ods.recharge_settlements",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 444,
|
||||
"ods": 444,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_payment",
|
||||
"ods_table": "billiards_ods.payment_transactions",
|
||||
"windowed": true,
|
||||
"window_col": "pay_time",
|
||||
"count": {
|
||||
"dwd": 1279,
|
||||
"ods": 1279,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "pay_amount",
|
||||
"dwd_sum": 153388.0,
|
||||
"ods_sum": 153388.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_refund",
|
||||
"ods_table": "billiards_ods.refund_transactions",
|
||||
"windowed": true,
|
||||
"window_col": "pay_time",
|
||||
"count": {
|
||||
"dwd": 3,
|
||||
"ods": 3,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "channel_fee",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "pay_amount",
|
||||
"dwd_sum": -43.0,
|
||||
"ods_sum": -43.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_refund_ex",
|
||||
"ods_table": "billiards_ods.refund_transactions",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 43,
|
||||
"ods": 43,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "balance_frozen_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "card_frozen_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "refund_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "round_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"total_count_diff": 589529
|
||||
},
|
||||
"generated_at": "2026-01-20T03:43:06.774768+08:00"
|
||||
}
|
||||
],
|
||||
"api_to_ods": {
|
||||
"total_missing": 1,
|
||||
"total_errors": 0
|
||||
},
|
||||
"total_missing": 1,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-20T03:43:06.774790+08:00"
|
||||
}
|
||||
1048
etl_billiards/reports/data_integrity_window_20260120_162840.json
Normal file
1048
etl_billiards/reports/data_integrity_window_20260120_162840.json
Normal file
File diff suppressed because it is too large
Load Diff
1412
etl_billiards/reports/data_integrity_window_20260122_235540.json
Normal file
1412
etl_billiards/reports/data_integrity_window_20260122_235540.json
Normal file
File diff suppressed because it is too large
Load Diff
968
etl_billiards/reports/data_integrity_window_20260124_221448.json
Normal file
968
etl_billiards/reports/data_integrity_window_20260124_221448.json
Normal file
@@ -0,0 +1,968 @@
|
||||
{
|
||||
"mode": "window",
|
||||
"window": {
|
||||
"start": "2026-01-19T19:14:15+08:00",
|
||||
"end": "2026-01-25T00:14:15+08:00",
|
||||
"segments": 1
|
||||
},
|
||||
"windows": [
|
||||
{
|
||||
"mode": "window",
|
||||
"window": {
|
||||
"start": "2026-01-19T19:14:15+08:00",
|
||||
"end": "2026-01-25T00:14:15+08:00",
|
||||
"label": "segment_1",
|
||||
"granularity": "window"
|
||||
},
|
||||
"api_to_ods": {
|
||||
"window_split_unit": "none",
|
||||
"window_compensation_hours": 0,
|
||||
"start": "2026-01-19T19:14:15+08:00",
|
||||
"end": "2026-01-25T00:14:15+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 5,
|
||||
"window_hours": 0,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PersonnelManagement/SearchAssistantInfo"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetAllOrderSettleList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetSiteTableOrderDetails"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/AssistantPerformance/GetOrderAssistantDetails"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/AssistantPerformance/GetAbolitionAssistant"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsSalesList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PayLog/GetPayLogListPage"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Order/GetRefundPayLogList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Promotion/GetOfflineCouponConsumePageList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberCardList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetMemberCardBalanceChange"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetRechargeSettleList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PackageCoupon/QueryPackageCouponList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetSiteTableUseDetails"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsStockReport"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/GoodsStockManage/QueryGoodsOutboundReceipt"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Table/GetSiteTables"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoodsCategory/QueryPrimarySecondaryCategory"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsInventoryList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetTaiFeeAdjustList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/QueryTenantGoods"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PayLog/GetPayLogListPage",
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 0,
|
||||
"total_errors": 23,
|
||||
"generated_at": "2026-01-24T22:14:42.999090+08:00"
|
||||
},
|
||||
"ods_to_dwd": {
|
||||
"tables": [
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_settlement_head",
|
||||
"ods_table": "billiards_ods.settlement_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 22929,
|
||||
"ods": 22929,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_settlement_head_ex",
|
||||
"ods_table": "billiards_ods.settlement_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 22929,
|
||||
"ods": 22929,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_log",
|
||||
"ods_table": "billiards_ods.table_fee_transactions",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 358,
|
||||
"ods": 358,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "adjust_amount",
|
||||
"dwd_sum": 10139.37,
|
||||
"ods_sum": 10139.37,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "coupon_promotion_amount",
|
||||
"dwd_sum": 17057.33,
|
||||
"ods_sum": 17057.33,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 52686.58,
|
||||
"ods_sum": 52686.58,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 1171.63,
|
||||
"ods_sum": 1171.63,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "real_table_charge_money",
|
||||
"dwd_sum": 24821.37,
|
||||
"ods_sum": 24821.37,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_log_ex",
|
||||
"ods_table": "billiards_ods.table_fee_transactions",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 17992,
|
||||
"ods": 17992,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "fee_total",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "mgmt_fee",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "service_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "used_card_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_adjust",
|
||||
"ods_table": "billiards_ods.table_fee_discount_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 2779,
|
||||
"ods": 2779,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 323227.69,
|
||||
"ods_sum": 323227.69,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_adjust_ex",
|
||||
"ods_table": "billiards_ods.table_fee_discount_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 2779,
|
||||
"ods": 2779,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_store_goods_sale",
|
||||
"ods_table": "billiards_ods.store_goods_sales_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 0,
|
||||
"ods": 0,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "cost_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "real_goods_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_store_goods_sale_ex",
|
||||
"ods_table": "billiards_ods.store_goods_sales_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 17563,
|
||||
"ods": 17563,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_deduct_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "discount_money",
|
||||
"dwd_sum": 21673.2,
|
||||
"ods_sum": 21673.2,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "option_coupon_deduct_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "option_member_discount_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "point_discount_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "point_discount_money_cost",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "push_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_service_log",
|
||||
"ods_table": "billiards_ods.assistant_service_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 37,
|
||||
"ods": 106,
|
||||
"diff": -69
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_deduct_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 191.21,
|
||||
"diff": -191.21
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 12505.5,
|
||||
"ods_sum": 37535.53,
|
||||
"diff": -25030.03
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_service_log_ex",
|
||||
"ods_table": "billiards_ods.assistant_service_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 4883,
|
||||
"ods": 4883,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "manual_discount_amount",
|
||||
"dwd_sum": 414.17,
|
||||
"ods_sum": 414.17,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "service_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_trash_event",
|
||||
"ods_table": "billiards_ods.assistant_cancellation_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 97,
|
||||
"ods": 97,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_trash_event_ex",
|
||||
"ods_table": "billiards_ods.assistant_cancellation_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 97,
|
||||
"ods": 97,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_member_balance_change",
|
||||
"ods_table": "billiards_ods.member_balance_changes",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 4677,
|
||||
"ods": 4677,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_member_balance_change_ex",
|
||||
"ods_table": "billiards_ods.member_balance_changes",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 4677,
|
||||
"ods": 4677,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "refund_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_groupbuy_redemption",
|
||||
"ods_table": "billiards_ods.group_buy_redemption_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 266,
|
||||
"ods": 266,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_money",
|
||||
"dwd_sum": 18240.0,
|
||||
"ods_sum": 18240.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 17057.33,
|
||||
"ods_sum": 17057.33,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_groupbuy_redemption_ex",
|
||||
"ods_table": "billiards_ods.group_buy_redemption_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 11157,
|
||||
"ods": 11157,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "assistant_promotion_money",
|
||||
"dwd_sum": 7544.8,
|
||||
"ods_sum": 7544.8,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "assistant_service_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "goods_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "recharge_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "reward_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "table_service_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_platform_coupon_redemption",
|
||||
"ods_table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 259,
|
||||
"ods": 259,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_money",
|
||||
"dwd_sum": 17394.0,
|
||||
"ods_sum": 17394.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_platform_coupon_redemption_ex",
|
||||
"ods_table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 16707,
|
||||
"ods": 16707,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_recharge_order",
|
||||
"ods_table": "billiards_ods.recharge_settlements",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 453,
|
||||
"ods": 453,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_recharge_order_ex",
|
||||
"ods_table": "billiards_ods.recharge_settlements",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 453,
|
||||
"ods": 453,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_payment",
|
||||
"ods_table": "billiards_ods.payment_transactions",
|
||||
"windowed": true,
|
||||
"window_col": "pay_time",
|
||||
"count": {
|
||||
"dwd": 407,
|
||||
"ods": 407,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "pay_amount",
|
||||
"dwd_sum": 80965.0,
|
||||
"ods_sum": 80965.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_refund",
|
||||
"ods_table": "billiards_ods.refund_transactions",
|
||||
"windowed": true,
|
||||
"window_col": "pay_time",
|
||||
"count": {
|
||||
"dwd": 1,
|
||||
"ods": 1,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "channel_fee",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "pay_amount",
|
||||
"dwd_sum": -2.0,
|
||||
"ods_sum": -2.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_refund_ex",
|
||||
"ods_table": "billiards_ods.refund_transactions",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 44,
|
||||
"ods": 44,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "balance_frozen_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "card_frozen_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "refund_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "round_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"total_count_diff": -69
|
||||
},
|
||||
"generated_at": "2026-01-24T22:14:48.193821+08:00"
|
||||
}
|
||||
],
|
||||
"api_to_ods": {
|
||||
"total_missing": 0,
|
||||
"total_errors": 23
|
||||
},
|
||||
"total_missing": 0,
|
||||
"total_errors": 23,
|
||||
"generated_at": "2026-01-24T22:14:48.193853+08:00"
|
||||
}
|
||||
1400
etl_billiards/reports/data_integrity_window_20260124_222607.json
Normal file
1400
etl_billiards/reports/data_integrity_window_20260124_222607.json
Normal file
File diff suppressed because it is too large
Load Diff
1340
etl_billiards/reports/data_integrity_window_20260125_205910.json
Normal file
1340
etl_billiards/reports/data_integrity_window_20260125_205910.json
Normal file
File diff suppressed because it is too large
Load Diff
1012
etl_billiards/reports/data_integrity_window_20260125_213632.json
Normal file
1012
etl_billiards/reports/data_integrity_window_20260125_213632.json
Normal file
File diff suppressed because it is too large
Load Diff
1066
etl_billiards/reports/data_integrity_window_20260125_224002.json
Normal file
1066
etl_billiards/reports/data_integrity_window_20260125_224002.json
Normal file
File diff suppressed because it is too large
Load Diff
1196
etl_billiards/reports/data_integrity_window_20260126_033329.json
Normal file
1196
etl_billiards/reports/data_integrity_window_20260126_033329.json
Normal file
File diff suppressed because it is too large
Load Diff
972
etl_billiards/reports/data_integrity_window_20260126_035534.json
Normal file
972
etl_billiards/reports/data_integrity_window_20260126_035534.json
Normal file
@@ -0,0 +1,972 @@
|
||||
{
|
||||
"mode": "window",
|
||||
"window": {
|
||||
"start": "2026-01-24T00:45:10+08:00",
|
||||
"end": "2026-01-26T05:45:10+08:00",
|
||||
"segments": 1
|
||||
},
|
||||
"windows": [
|
||||
{
|
||||
"mode": "window",
|
||||
"window": {
|
||||
"start": "2026-01-24T00:45:10+08:00",
|
||||
"end": "2026-01-26T05:45:10+08:00",
|
||||
"label": "segment_1",
|
||||
"granularity": "window"
|
||||
},
|
||||
"api_to_ods": {
|
||||
"window_split_unit": "none",
|
||||
"window_compensation_hours": 0,
|
||||
"start": "2026-01-24T00:45:10+08:00",
|
||||
"end": "2026-01-26T05:45:10+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 2,
|
||||
"window_hours": 0,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 136,
|
||||
"records_with_pk": 136,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 284,
|
||||
"records_with_pk": 284,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 10070,
|
||||
"records_with_pk": 10070,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 51,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 83,
|
||||
"records_with_pk": 83,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1,
|
||||
"records_with_pk": 1,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11926,
|
||||
"records_with_pk": 11926,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 60,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 38,
|
||||
"records_with_pk": 38,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16953,
|
||||
"records_with_pk": 16953,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 85,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 556,
|
||||
"records_with_pk": 556,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 945,
|
||||
"records_with_pk": 945,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 5,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2472,
|
||||
"records_with_pk": 2472,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 13,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1,
|
||||
"records_with_pk": 1,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8266,
|
||||
"records_with_pk": 8266,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 42,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 548,
|
||||
"records_with_pk": 548,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3067169196329861
|
||||
}
|
||||
],
|
||||
"pages": 4,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1737,
|
||||
"records_with_pk": 1737,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 171,
|
||||
"records_with_pk": 171,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 286,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 286,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 1,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-26T03:55:28.356697+08:00"
|
||||
},
|
||||
"ods_to_dwd": {
|
||||
"tables": [
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_settlement_head",
|
||||
"ods_table": "billiards_ods.settlement_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 23339,
|
||||
"ods": 23339,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_settlement_head_ex",
|
||||
"ods_table": "billiards_ods.settlement_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 23339,
|
||||
"ods": 23339,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_log",
|
||||
"ods_table": "billiards_ods.table_fee_transactions",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 254,
|
||||
"ods": 254,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "adjust_amount",
|
||||
"dwd_sum": 4468.13,
|
||||
"ods_sum": 4468.13,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "coupon_promotion_amount",
|
||||
"dwd_sum": 11343.14,
|
||||
"ods_sum": 11343.14,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 29695.36,
|
||||
"ods_sum": 29695.36,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 819.01,
|
||||
"ods_sum": 819.01,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "real_table_charge_money",
|
||||
"dwd_sum": 13065.08,
|
||||
"ods_sum": 13065.08,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_log_ex",
|
||||
"ods_table": "billiards_ods.table_fee_transactions",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 18361,
|
||||
"ods": 18361,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "fee_total",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "mgmt_fee",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "service_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "used_card_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_adjust",
|
||||
"ods_table": "billiards_ods.table_fee_discount_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 2837,
|
||||
"ods": 2845,
|
||||
"diff": -8
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 328358.71,
|
||||
"ods_sum": 328901.21,
|
||||
"diff": -542.5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_adjust_ex",
|
||||
"ods_table": "billiards_ods.table_fee_discount_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 2837,
|
||||
"ods": 2845,
|
||||
"diff": -8
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_store_goods_sale",
|
||||
"ods_table": "billiards_ods.store_goods_sales_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 0,
|
||||
"ods": 0,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "cost_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "real_goods_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_store_goods_sale_ex",
|
||||
"ods_table": "billiards_ods.store_goods_sales_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 17563,
|
||||
"ods": 17563,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_deduct_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "discount_money",
|
||||
"dwd_sum": 21673.2,
|
||||
"ods_sum": 21673.2,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "option_coupon_deduct_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "option_member_discount_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "point_discount_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "point_discount_money_cost",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "push_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_service_log",
|
||||
"ods_table": "billiards_ods.assistant_service_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 83,
|
||||
"ods": 83,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_deduct_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 21036.95,
|
||||
"ods_sum": 21036.95,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_service_log_ex",
|
||||
"ods_table": "billiards_ods.assistant_service_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 4998,
|
||||
"ods": 4998,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "manual_discount_amount",
|
||||
"dwd_sum": 414.17,
|
||||
"ods_sum": 414.17,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "service_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_trash_event",
|
||||
"ods_table": "billiards_ods.assistant_cancellation_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 98,
|
||||
"ods": 98,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_trash_event_ex",
|
||||
"ods_table": "billiards_ods.assistant_cancellation_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 98,
|
||||
"ods": 98,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_member_balance_change",
|
||||
"ods_table": "billiards_ods.member_balance_changes",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 4735,
|
||||
"ods": 4735,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_member_balance_change_ex",
|
||||
"ods_table": "billiards_ods.member_balance_changes",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 4735,
|
||||
"ods": 4735,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "refund_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_groupbuy_redemption",
|
||||
"ods_table": "billiards_ods.group_buy_redemption_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 146,
|
||||
"ods": 169,
|
||||
"diff": -23
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_money",
|
||||
"dwd_sum": 10116.0,
|
||||
"ods_sum": 11552.0,
|
||||
"diff": -1436.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 9907.14,
|
||||
"ods_sum": 11343.14,
|
||||
"diff": -1436.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_groupbuy_redemption_ex",
|
||||
"ods_table": "billiards_ods.group_buy_redemption_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 11388,
|
||||
"ods": 11411,
|
||||
"diff": -23
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "assistant_promotion_money",
|
||||
"dwd_sum": 7544.8,
|
||||
"ods_sum": 7544.8,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "assistant_service_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "goods_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "recharge_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "reward_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "table_service_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_platform_coupon_redemption",
|
||||
"ods_table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"windowed": true,
|
||||
"window_col": "create_time",
|
||||
"count": {
|
||||
"dwd": 165,
|
||||
"ods": 165,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_money",
|
||||
"dwd_sum": 11216.0,
|
||||
"ods_sum": 11216.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_platform_coupon_redemption_ex",
|
||||
"ods_table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 16953,
|
||||
"ods": 16953,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_recharge_order",
|
||||
"ods_table": "billiards_ods.recharge_settlements",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 454,
|
||||
"ods": 454,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_recharge_order_ex",
|
||||
"ods_table": "billiards_ods.recharge_settlements",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 454,
|
||||
"ods": 454,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_payment",
|
||||
"ods_table": "billiards_ods.payment_transactions",
|
||||
"windowed": true,
|
||||
"window_col": "pay_time",
|
||||
"count": {
|
||||
"dwd": 286,
|
||||
"ods": 286,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "pay_amount",
|
||||
"dwd_sum": 25812.0,
|
||||
"ods_sum": 25812.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_refund",
|
||||
"ods_table": "billiards_ods.refund_transactions",
|
||||
"windowed": true,
|
||||
"window_col": "pay_time",
|
||||
"count": {
|
||||
"dwd": 0,
|
||||
"ods": 0,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "channel_fee",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "pay_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_refund_ex",
|
||||
"ods_table": "billiards_ods.refund_transactions",
|
||||
"windowed": false,
|
||||
"window_col": null,
|
||||
"count": {
|
||||
"dwd": 45,
|
||||
"ods": 45,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "balance_frozen_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "card_frozen_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "refund_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "round_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"total_count_diff": -62
|
||||
},
|
||||
"generated_at": "2026-01-26T03:55:34.698078+08:00"
|
||||
}
|
||||
],
|
||||
"api_to_ods": {
|
||||
"total_missing": 1,
|
||||
"total_errors": 0
|
||||
},
|
||||
"total_missing": 1,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-26T03:55:34.698101+08:00"
|
||||
}
|
||||
1151
etl_billiards/reports/data_integrity_window_20260126_182902.json
Normal file
1151
etl_billiards/reports/data_integrity_window_20260126_182902.json
Normal file
File diff suppressed because it is too large
Load Diff
1309
etl_billiards/reports/data_integrity_window_20260127_025004.json
Normal file
1309
etl_billiards/reports/data_integrity_window_20260127_025004.json
Normal file
File diff suppressed because it is too large
Load Diff
1322
etl_billiards/reports/data_integrity_window_20260127_034634.json
Normal file
1322
etl_billiards/reports/data_integrity_window_20260127_034634.json
Normal file
File diff suppressed because it is too large
Load Diff
1232
etl_billiards/reports/data_integrity_window_20260127_044633.json
Normal file
1232
etl_billiards/reports/data_integrity_window_20260127_044633.json
Normal file
File diff suppressed because it is too large
Load Diff
1206
etl_billiards/reports/data_integrity_window_20260127_054632.json
Normal file
1206
etl_billiards/reports/data_integrity_window_20260127_054632.json
Normal file
File diff suppressed because it is too large
Load Diff
1213
etl_billiards/reports/data_integrity_window_20260127_064633.json
Normal file
1213
etl_billiards/reports/data_integrity_window_20260127_064633.json
Normal file
File diff suppressed because it is too large
Load Diff
1198
etl_billiards/reports/data_integrity_window_20260127_074634.json
Normal file
1198
etl_billiards/reports/data_integrity_window_20260127_074634.json
Normal file
File diff suppressed because it is too large
Load Diff
1186
etl_billiards/reports/data_integrity_window_20260127_084637.json
Normal file
1186
etl_billiards/reports/data_integrity_window_20260127_084637.json
Normal file
File diff suppressed because it is too large
Load Diff
1186
etl_billiards/reports/data_integrity_window_20260127_094626.json
Normal file
1186
etl_billiards/reports/data_integrity_window_20260127_094626.json
Normal file
File diff suppressed because it is too large
Load Diff
1214
etl_billiards/reports/data_integrity_window_20260127_104627.json
Normal file
1214
etl_billiards/reports/data_integrity_window_20260127_104627.json
Normal file
File diff suppressed because it is too large
Load Diff
1186
etl_billiards/reports/data_integrity_window_20260127_114628.json
Normal file
1186
etl_billiards/reports/data_integrity_window_20260127_114628.json
Normal file
File diff suppressed because it is too large
Load Diff
1217
etl_billiards/reports/data_integrity_window_20260127_124632.json
Normal file
1217
etl_billiards/reports/data_integrity_window_20260127_124632.json
Normal file
File diff suppressed because it is too large
Load Diff
1190
etl_billiards/reports/data_integrity_window_20260127_134628.json
Normal file
1190
etl_billiards/reports/data_integrity_window_20260127_134628.json
Normal file
File diff suppressed because it is too large
Load Diff
1231
etl_billiards/reports/data_integrity_window_20260127_144641.json
Normal file
1231
etl_billiards/reports/data_integrity_window_20260127_144641.json
Normal file
File diff suppressed because it is too large
Load Diff
1250
etl_billiards/reports/data_integrity_window_20260127_154658.json
Normal file
1250
etl_billiards/reports/data_integrity_window_20260127_154658.json
Normal file
File diff suppressed because it is too large
Load Diff
1279
etl_billiards/reports/data_integrity_window_20260127_164657.json
Normal file
1279
etl_billiards/reports/data_integrity_window_20260127_164657.json
Normal file
File diff suppressed because it is too large
Load Diff
1311
etl_billiards/reports/data_integrity_window_20260127_174656.json
Normal file
1311
etl_billiards/reports/data_integrity_window_20260127_174656.json
Normal file
File diff suppressed because it is too large
Load Diff
1306
etl_billiards/reports/data_integrity_window_20260127_184644.json
Normal file
1306
etl_billiards/reports/data_integrity_window_20260127_184644.json
Normal file
File diff suppressed because it is too large
Load Diff
1291
etl_billiards/reports/data_integrity_window_20260127_194657.json
Normal file
1291
etl_billiards/reports/data_integrity_window_20260127_194657.json
Normal file
File diff suppressed because it is too large
Load Diff
1426
etl_billiards/reports/data_integrity_window_20260127_204701.json
Normal file
1426
etl_billiards/reports/data_integrity_window_20260127_204701.json
Normal file
File diff suppressed because it is too large
Load Diff
1494
etl_billiards/reports/data_integrity_window_20260127_214717.json
Normal file
1494
etl_billiards/reports/data_integrity_window_20260127_214717.json
Normal file
File diff suppressed because it is too large
Load Diff
1447
etl_billiards/reports/data_integrity_window_20260127_221542.json
Normal file
1447
etl_billiards/reports/data_integrity_window_20260127_221542.json
Normal file
File diff suppressed because it is too large
Load Diff
692
etl_billiards/reports/dwd_quality_report.json
Normal file
692
etl_billiards/reports/dwd_quality_report.json
Normal file
@@ -0,0 +1,692 @@
|
||||
{
|
||||
"generated_at": "2025-12-09T05:21:24.745244",
|
||||
"tables": [
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_site",
|
||||
"ods_table": "billiards_ods.table_fee_transactions",
|
||||
"count": {
|
||||
"dwd": 1,
|
||||
"ods": 200,
|
||||
"diff": -199
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_site_ex",
|
||||
"ods_table": "billiards_ods.table_fee_transactions",
|
||||
"count": {
|
||||
"dwd": 1,
|
||||
"ods": 200,
|
||||
"diff": -199
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_table",
|
||||
"ods_table": "billiards_ods.site_tables_master",
|
||||
"count": {
|
||||
"dwd": 71,
|
||||
"ods": 71,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_table_ex",
|
||||
"ods_table": "billiards_ods.site_tables_master",
|
||||
"count": {
|
||||
"dwd": 71,
|
||||
"ods": 71,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_assistant",
|
||||
"ods_table": "billiards_ods.assistant_accounts_master",
|
||||
"count": {
|
||||
"dwd": 50,
|
||||
"ods": 50,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_assistant_ex",
|
||||
"ods_table": "billiards_ods.assistant_accounts_master",
|
||||
"count": {
|
||||
"dwd": 50,
|
||||
"ods": 50,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_member",
|
||||
"ods_table": "billiards_ods.member_profiles",
|
||||
"count": {
|
||||
"dwd": 199,
|
||||
"ods": 199,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_member_ex",
|
||||
"ods_table": "billiards_ods.member_profiles",
|
||||
"count": {
|
||||
"dwd": 199,
|
||||
"ods": 199,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_member_card_account",
|
||||
"ods_table": "billiards_ods.member_stored_value_cards",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "balance",
|
||||
"dwd_sum": 31061.03,
|
||||
"ods_sum": 31061.03,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_member_card_account_ex",
|
||||
"ods_table": "billiards_ods.member_stored_value_cards",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "deliveryfeededuct",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_tenant_goods",
|
||||
"ods_table": "billiards_ods.tenant_goods_master",
|
||||
"count": {
|
||||
"dwd": 156,
|
||||
"ods": 156,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_tenant_goods_ex",
|
||||
"ods_table": "billiards_ods.tenant_goods_master",
|
||||
"count": {
|
||||
"dwd": 156,
|
||||
"ods": 156,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_store_goods",
|
||||
"ods_table": "billiards_ods.store_goods_master",
|
||||
"count": {
|
||||
"dwd": 161,
|
||||
"ods": 161,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_store_goods_ex",
|
||||
"ods_table": "billiards_ods.store_goods_master",
|
||||
"count": {
|
||||
"dwd": 161,
|
||||
"ods": 161,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_goods_category",
|
||||
"ods_table": "billiards_ods.stock_goods_category_tree",
|
||||
"count": {
|
||||
"dwd": 26,
|
||||
"ods": 9,
|
||||
"diff": 17
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_groupbuy_package",
|
||||
"ods_table": "billiards_ods.group_buy_packages",
|
||||
"count": {
|
||||
"dwd": 17,
|
||||
"ods": 17,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dim_groupbuy_package_ex",
|
||||
"ods_table": "billiards_ods.group_buy_packages",
|
||||
"count": {
|
||||
"dwd": 17,
|
||||
"ods": 17,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_settlement_head",
|
||||
"ods_table": "billiards_ods.settlement_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_settlement_head_ex",
|
||||
"ods_table": "billiards_ods.settlement_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_log",
|
||||
"ods_table": "billiards_ods.table_fee_transactions",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "adjust_amount",
|
||||
"dwd_sum": 1157.45,
|
||||
"ods_sum": 1157.45,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "coupon_promotion_amount",
|
||||
"dwd_sum": 11244.49,
|
||||
"ods_sum": 11244.49,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 18107.0,
|
||||
"ods_sum": 18107.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 1149.19,
|
||||
"ods_sum": 1149.19,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "real_table_charge_money",
|
||||
"dwd_sum": 5705.06,
|
||||
"ods_sum": 5705.06,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_log_ex",
|
||||
"ods_table": "billiards_ods.table_fee_transactions",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "fee_total",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "mgmt_fee",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "service_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "used_card_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_adjust",
|
||||
"ods_table": "billiards_ods.table_fee_discount_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 20650.84,
|
||||
"ods_sum": 20650.84,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_table_fee_adjust_ex",
|
||||
"ods_table": "billiards_ods.table_fee_discount_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_store_goods_sale",
|
||||
"ods_table": "billiards_ods.store_goods_sales_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "cost_money",
|
||||
"dwd_sum": 22.3,
|
||||
"ods_sum": 22.3,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 4583.0,
|
||||
"ods_sum": 4583.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "real_goods_money",
|
||||
"dwd_sum": 3791.0,
|
||||
"ods_sum": 3791.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_store_goods_sale_ex",
|
||||
"ods_table": "billiards_ods.store_goods_sales_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_deduct_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "discount_money",
|
||||
"dwd_sum": 792.0,
|
||||
"ods_sum": 792.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "option_coupon_deduct_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "option_member_discount_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "point_discount_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "point_discount_money_cost",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "push_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_service_log",
|
||||
"ods_table": "billiards_ods.assistant_service_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_deduct_money",
|
||||
"dwd_sum": 626.83,
|
||||
"ods_sum": 626.83,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 63251.37,
|
||||
"ods_sum": 63251.37,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_service_log_ex",
|
||||
"ods_table": "billiards_ods.assistant_service_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "manual_discount_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "member_discount_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "service_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_trash_event",
|
||||
"ods_table": "billiards_ods.assistant_cancellation_records",
|
||||
"count": {
|
||||
"dwd": 15,
|
||||
"ods": 15,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_assistant_trash_event_ex",
|
||||
"ods_table": "billiards_ods.assistant_cancellation_records",
|
||||
"count": {
|
||||
"dwd": 15,
|
||||
"ods": 15,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_member_balance_change",
|
||||
"ods_table": "billiards_ods.member_balance_changes",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_member_balance_change_ex",
|
||||
"ods_table": "billiards_ods.member_balance_changes",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "refund_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_groupbuy_redemption",
|
||||
"ods_table": "billiards_ods.group_buy_redemption_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_money",
|
||||
"dwd_sum": 12266.0,
|
||||
"ods_sum": 12266.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "ledger_amount",
|
||||
"dwd_sum": 12049.53,
|
||||
"ods_sum": 12049.53,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_groupbuy_redemption_ex",
|
||||
"ods_table": "billiards_ods.group_buy_redemption_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "assistant_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "assistant_service_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "goods_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "recharge_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "reward_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "table_service_promotion_money",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_platform_coupon_redemption",
|
||||
"ods_table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "coupon_money",
|
||||
"dwd_sum": 11956.0,
|
||||
"ods_sum": 11956.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_platform_coupon_redemption_ex",
|
||||
"ods_table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_recharge_order",
|
||||
"ods_table": "billiards_ods.recharge_settlements",
|
||||
"count": {
|
||||
"dwd": 74,
|
||||
"ods": 74,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_recharge_order_ex",
|
||||
"ods_table": "billiards_ods.recharge_settlements",
|
||||
"count": {
|
||||
"dwd": 74,
|
||||
"ods": 74,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": []
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_payment",
|
||||
"ods_table": "billiards_ods.payment_transactions",
|
||||
"count": {
|
||||
"dwd": 200,
|
||||
"ods": 200,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "pay_amount",
|
||||
"dwd_sum": 10863.0,
|
||||
"ods_sum": 10863.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_refund",
|
||||
"ods_table": "billiards_ods.refund_transactions",
|
||||
"count": {
|
||||
"dwd": 11,
|
||||
"ods": 11,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "channel_fee",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "pay_amount",
|
||||
"dwd_sum": -62186.0,
|
||||
"ods_sum": -62186.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dwd_table": "billiards_dwd.dwd_refund_ex",
|
||||
"ods_table": "billiards_ods.refund_transactions",
|
||||
"count": {
|
||||
"dwd": 11,
|
||||
"ods": 11,
|
||||
"diff": 0
|
||||
},
|
||||
"amounts": [
|
||||
{
|
||||
"column": "balance_frozen_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "card_frozen_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "refund_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
},
|
||||
{
|
||||
"column": "round_amount",
|
||||
"dwd_sum": 0.0,
|
||||
"ods_sum": 0.0,
|
||||
"diff": 0.0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"note": "行数/金额核对,金额字段基于列名包含 amount/money/fee/balance 的数值列自动扫描。"
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
排名,客户姓名,联系方式,单次日打球小时数,到店平均间隔(天),10-12月来店次数,最后一次到店日期
|
||||
1,黄生,13609719719,7.53,1.8,43,2025-12-24 14:51
|
||||
2,曾巧明,18688471488,6.25,1.2,71,2025-12-25 15:49
|
||||
3,葛先生,13811638071,5.81,1.3,39,2025-12-26 00:55
|
||||
4,孟紫龙,17631643741,4.73,1.5,17,2025-12-23 16:27
|
||||
5,桂先生,16676777275,4.70,2.3,25,2025-12-16 19:05
|
||||
6,孟紫龙(该会员已注销),17631643741(1),4.64,2.0,6,2025-10-13 18:57
|
||||
7,陈先生,13922200419,3.92,,1,2025-10-18 12:35
|
||||
8,候,13161960323,3.67,1.0,6,2025-12-17 23:13
|
||||
9,小燕,17802081334,3.58,1.2,29,2025-12-22 20:10
|
||||
10,陈先生,15915782829,3.48,,1,2025-11-07 00:44
|
||||
11,牛先生,15201265159,3.44,1.0,3,2025-11-24 17:10
|
||||
12,李先生,13427574343,3.39,2.8,14,2025-12-24 22:49
|
||||
13,汪先生,13925126339,3.34,1.0,2,2025-10-08 20:59
|
||||
14,林先生,13342871070,3.30,,1,2025-12-05 15:52
|
||||
15,桂先生(该会员已注销),16676777275(1),3.17,2.0,6,2025-10-16 19:37
|
||||
16,贺斌,15017500885,3.15,3.0,3,2025-11-03 18:42
|
||||
17,谢俊,18620395198,3.09,1.6,53,2025-12-22 20:03
|
||||
18,郑先生,15902794331,3.01,1.7,12,2025-12-10 22:12
|
||||
19,周先生,19350986822,2.92,2.0,11,2025-12-26 02:06
|
||||
20,王先生,18520321125,2.91,6.0,2,2025-12-02 21:00
|
||||
21,胡先生,18620043391,2.89,8.0,4,2025-12-01 19:01
|
||||
22,罗先生,13924036996,2.85,1.3,65,2025-12-25 22:25
|
||||
23,刘女士,17727637538,2.80,,1,2025-10-14 18:24
|
||||
24,魏先生,13726266862,2.70,1.0,2,2025-12-05 22:18
|
||||
25,吴生,13600453341,2.60,6.1,14,2025-12-25 17:51
|
||||
26,王先生,18302299763,2.58,,1,2025-12-24 18:30
|
||||
27,梅,13672464552,2.47,,1,2025-11-22 20:29
|
||||
28,郭先生,15622365001,2.43,3.5,3,2025-11-01 20:06
|
||||
29,艾宇民,15062279958,2.40,1.7,47,2025-12-25 20:28
|
||||
30,阿亮,15920462628,2.40,2.0,7,2025-12-04 20:05
|
||||
31,林先生,13763388785,2.39,2.0,6,2025-12-02 19:48
|
||||
32,李先生,13128264000,2.36,1.8,5,2025-11-07 23:01
|
||||
33,陈腾鑫,17817318218,2.35,1.5,50,2025-12-12 21:39
|
||||
34,昌哥,13798811229,2.27,16.0,2,2025-12-07 21:05
|
||||
35,张先生,13902258852,2.20,2.0,43,2025-12-24 18:42
|
||||
36,黄先生,13570163507,2.20,4.0,22,2025-12-24 15:58
|
||||
37,陈德韩,13431017864,2.18,4.2,6,2025-10-26 19:59
|
||||
38,罗先生,13922289222,2.16,9.4,6,2025-11-26 18:54
|
||||
39,陈世,13430271938,2.15,24.5,3,2025-11-20 21:45
|
||||
40,T,18028579962,2.14,6.9,9,2025-12-18 17:36
|
||||
41,大G,18680114598,2.10,1.0,2,2025-12-02 20:53
|
||||
42,卢广贤,18613066220,2.08,14.8,5,2025-12-13 15:27
|
||||
43,叶总,13711223287,2.08,1.5,7,2025-10-27 20:57
|
||||
44,杜先生,18826454705,2.03,,1,2025-11-02 20:12
|
||||
45,谭先生,13824473185,2.03,,1,2025-10-20 17:15
|
||||
46,杨,13066365960,2.00,2.0,2,2025-12-05 19:28
|
||||
47,小熊,13927020145,1.94,9.5,3,2025-11-04 17:36
|
||||
48,曾先生,13316091235,1.92,10.1,8,2025-12-24 11:53
|
||||
49,游,17267866666,1.89,1.6,8,2025-12-07 17:36
|
||||
50,夏,19120942851,1.88,1.8,6,2025-11-06 18:05
|
||||
|
@@ -0,0 +1,64 @@
|
||||
排名,客户姓名,联系方式,单次日打球小时数,到店平均间隔(天),10-12月来店次数,最后一次到店日期
|
||||
1,黄生,13609719719,7.53,1.8,43,2025-12-24 14:51
|
||||
2,曾巧明,18688471488,6.25,1.2,71,2025-12-25 15:49
|
||||
3,葛先生,13811638071,5.81,1.3,39,2025-12-26 00:55
|
||||
4,孟紫龙,17631643741,4.73,1.5,17,2025-12-23 16:27
|
||||
5,桂先生,16676777275,4.70,2.3,25,2025-12-16 19:05
|
||||
6,孟紫龙(该会员已注销),17631643741(1),4.64,2.0,6,2025-10-13 18:57
|
||||
7,候,13161960323,3.67,1.0,6,2025-12-17 23:13
|
||||
8,小燕,17802081334,3.58,1.2,29,2025-12-22 20:10
|
||||
9,牛先生,15201265159,3.44,1.0,3,2025-11-24 17:10
|
||||
10,李先生,13427574343,3.39,2.8,14,2025-12-24 22:49
|
||||
11,汪先生,13925126339,3.34,1.0,2,2025-10-08 20:59
|
||||
12,桂先生(该会员已注销),16676777275(1),3.17,2.0,6,2025-10-16 19:37
|
||||
13,贺斌,15017500885,3.15,3.0,3,2025-11-03 18:42
|
||||
14,谢俊,18620395198,3.09,1.6,53,2025-12-22 20:03
|
||||
15,郑先生,15902794331,3.01,1.7,12,2025-12-10 22:12
|
||||
16,周先生,19350986822,2.92,2.0,11,2025-12-26 02:06
|
||||
17,王先生,18520321125,2.91,6.0,2,2025-12-02 21:00
|
||||
18,胡先生,18620043391,2.89,8.0,4,2025-12-01 19:01
|
||||
19,罗先生,13924036996,2.85,1.3,65,2025-12-25 22:25
|
||||
20,魏先生,13726266862,2.70,1.0,2,2025-12-05 22:18
|
||||
21,吴生,13600453341,2.60,6.1,14,2025-12-25 17:51
|
||||
22,郭先生,15622365001,2.43,3.5,3,2025-11-01 20:06
|
||||
23,艾宇民,15062279958,2.40,1.7,47,2025-12-25 20:28
|
||||
24,阿亮,15920462628,2.40,2.0,7,2025-12-04 20:05
|
||||
25,林先生,13763388785,2.39,2.0,6,2025-12-02 19:48
|
||||
26,李先生,13128264000,2.36,1.8,5,2025-11-07 23:01
|
||||
27,陈腾鑫,17817318218,2.35,1.5,50,2025-12-12 21:39
|
||||
28,昌哥,13798811229,2.27,16.0,2,2025-12-07 21:05
|
||||
29,张先生,13902258852,2.20,2.0,43,2025-12-24 18:42
|
||||
30,黄先生,13570163507,2.20,4.0,22,2025-12-24 15:58
|
||||
31,陈德韩,13431017864,2.18,4.2,6,2025-10-26 19:59
|
||||
32,罗先生,13922289222,2.16,9.4,6,2025-11-26 18:54
|
||||
33,T,18028579962,2.14,6.9,9,2025-12-18 17:36
|
||||
34,大G,18680114598,2.10,1.0,2,2025-12-02 20:53
|
||||
35,卢广贤,18613066220,2.08,14.8,5,2025-12-13 15:27
|
||||
36,叶总,13711223287,2.08,1.5,7,2025-10-27 20:57
|
||||
37,杨,13066365960,2.00,2.0,2,2025-12-05 19:28
|
||||
38,小熊,13927020145,1.94,9.5,3,2025-11-04 17:36
|
||||
39,曾先生,13316091235,1.92,10.1,8,2025-12-24 11:53
|
||||
40,游,17267866666,1.89,1.6,8,2025-12-07 17:36
|
||||
41,夏,19120942851,1.88,1.8,6,2025-11-06 18:05
|
||||
42,胡总,13385143091,1.86,1.0,2,2025-12-20 21:00
|
||||
43,轩哥,18826267530,1.85,3.2,25,2025-12-18 02:11
|
||||
44,常总,18570077188,1.84,4.0,3,2025-12-22 19:21
|
||||
45,歌神,18819262164,1.75,2.0,3,2025-10-24 21:47
|
||||
46,君姐,16624614594,1.66,1.0,2,2025-11-27 21:22
|
||||
47,叶先生,13826479539,1.60,7.3,10,2025-12-05 23:07
|
||||
48,江先生,18819484838,1.52,5.1,15,2025-12-13 19:24
|
||||
49,黄先生,15818822109,1.48,7.8,7,2025-12-17 00:58
|
||||
50,张先生,13682854528,1.48,2.0,2,2025-12-19 22:37
|
||||
51,陶,18924022151,1.41,2.2,6,2025-10-26 23:52
|
||||
52,林总,13808881180,1.40,10.3,4,2025-12-24 19:18
|
||||
53,林先生,18826220332,1.36,17.7,4,2025-12-24 00:28
|
||||
54,李,13189179882,1.33,9.2,6,2025-11-24 12:38
|
||||
55,张丹逸,13609066637,1.20,1.0,2,2025-10-06 22:47
|
||||
56,罗超杰,13711268012,1.06,4.7,7,2025-11-05 15:50
|
||||
57,小宇,18745728077,1.03,10.0,2,2025-10-13 16:24
|
||||
58,蔡总,15914338893,1.01,3.1,17,2025-12-24 00:30
|
||||
59,羊,18785445094,0.99,3.0,9,2025-11-23 19:27
|
||||
60,林志铭,13570304233,0.98,13.0,2,2025-11-30 16:19
|
||||
61,钟智豪,18814002803,0.88,1.0,2,2025-11-28 23:50
|
||||
62,明哥,16620040999,0.66,5.5,3,2025-12-09 22:42
|
||||
63,冯先生,15588690348,0.46,1.0,2,2025-10-31 23:34
|
||||
|
340
etl_billiards/reports/loyal_billiards_customers_report.py
Normal file
340
etl_billiards/reports/loyal_billiards_customers_report.py
Normal file
@@ -0,0 +1,340 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
统计“忠实台球类竞技客户”Top N(按平均单次日打球小时数排序)。
|
||||
|
||||
口径(默认):
|
||||
- 时间范围:2025-10-01 至今(可传参覆盖)
|
||||
- 仅统计 member_id != 0 且有时长的客户
|
||||
- 台桌区域仅包含:A区、B区、C区、VIP包厢、斯诺克区、TV台
|
||||
- 同日同一客户若同时开多台:按时间区间并集计时(不重复叠加)
|
||||
- “单次日打球小时数” = (时间范围内每日打球总小时数) / (有打球的日数)
|
||||
- “到店平均间(天)” = 相邻来店日的平均间隔天数(来店日数<2 则为空)
|
||||
- “10-12月来店次数” = 时间范围内来店日数(按日去重)
|
||||
- “最后一次到店日期” = 该客户最后一次开台的 start_use_time(精确到分钟)
|
||||
|
||||
输出:CSV(UTF-8-SIG,便于 Excel 打开)
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
from dataclasses import dataclass
|
||||
from datetime import date, datetime, time, timedelta
|
||||
from pathlib import Path
|
||||
from typing import Iterable
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
from config.settings import AppConfig
|
||||
from database.connection import DatabaseConnection
|
||||
|
||||
|
||||
DEFAULT_AREAS = ("A区", "B区", "C区", "VIP包厢", "斯诺克区", "TV台")
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class SessionRow:
|
||||
member_id: int
|
||||
start: datetime
|
||||
end: datetime
|
||||
area_name: str | None
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class MemberAgg:
|
||||
member_id: int
|
||||
total_hours: float
|
||||
visit_days: int
|
||||
avg_daily_hours: float
|
||||
avg_gap_days: float | None
|
||||
last_visit_at: datetime | None
|
||||
|
||||
|
||||
def _as_tz(dt: datetime, tz: ZoneInfo) -> datetime:
|
||||
if dt.tzinfo is None:
|
||||
return dt.replace(tzinfo=tz)
|
||||
return dt.astimezone(tz)
|
||||
|
||||
|
||||
def _parse_date(s: str) -> date:
|
||||
s = (s or "").strip()
|
||||
if len(s) >= 10:
|
||||
s = s[:10]
|
||||
return date.fromisoformat(s)
|
||||
|
||||
|
||||
def _date_floor(dt: datetime, tz: ZoneInfo) -> datetime:
|
||||
dt = _as_tz(dt, tz)
|
||||
return datetime.combine(dt.date(), time.min).replace(tzinfo=tz)
|
||||
|
||||
|
||||
def _split_by_day(start: datetime, end: datetime, tz: ZoneInfo) -> Iterable[tuple[date, datetime, datetime]]:
|
||||
start = _as_tz(start, tz)
|
||||
end = _as_tz(end, tz)
|
||||
if end <= start:
|
||||
return []
|
||||
cur = start
|
||||
out: list[tuple[date, datetime, datetime]] = []
|
||||
while True:
|
||||
day_end = _date_floor(cur, tz) + timedelta(days=1)
|
||||
seg_end = end if end <= day_end else day_end
|
||||
out.append((cur.date(), cur, seg_end))
|
||||
if seg_end >= end:
|
||||
break
|
||||
cur = seg_end
|
||||
return out
|
||||
|
||||
|
||||
def _union_seconds(intervals: list[tuple[datetime, datetime]], tz: ZoneInfo) -> int:
|
||||
cleaned = []
|
||||
for s, e in intervals:
|
||||
s = _as_tz(s, tz)
|
||||
e = _as_tz(e, tz)
|
||||
if e > s:
|
||||
cleaned.append((s, e))
|
||||
if not cleaned:
|
||||
return 0
|
||||
cleaned.sort(key=lambda x: x[0])
|
||||
total = 0
|
||||
cur_s, cur_e = cleaned[0]
|
||||
for s, e in cleaned[1:]:
|
||||
if s <= cur_e:
|
||||
if e > cur_e:
|
||||
cur_e = e
|
||||
else:
|
||||
total += int((cur_e - cur_s).total_seconds())
|
||||
cur_s, cur_e = s, e
|
||||
total += int((cur_e - cur_s).total_seconds())
|
||||
return total
|
||||
|
||||
|
||||
def _avg_gap_days(visit_dates: list[date]) -> float | None:
|
||||
if len(visit_dates) < 2:
|
||||
return None
|
||||
visit_dates = sorted(set(visit_dates))
|
||||
if len(visit_dates) < 2:
|
||||
return None
|
||||
gaps = [(b - a).days for a, b in zip(visit_dates, visit_dates[1:]) if (b - a).days > 0]
|
||||
if not gaps:
|
||||
return None
|
||||
return sum(gaps) / len(gaps)
|
||||
|
||||
|
||||
def _load_sessions(
|
||||
conn: DatabaseConnection,
|
||||
*,
|
||||
store_id: int,
|
||||
tz: ZoneInfo,
|
||||
start_dt: datetime,
|
||||
end_dt: datetime,
|
||||
areas: tuple[str, ...],
|
||||
) -> list[SessionRow]:
|
||||
sql = """
|
||||
SELECT
|
||||
member_id,
|
||||
start_use_time,
|
||||
ledger_end_time,
|
||||
real_table_use_seconds,
|
||||
site_table_area_name
|
||||
FROM billiards_dwd.dwd_table_fee_log
|
||||
WHERE site_id = %s
|
||||
AND member_id IS NOT NULL
|
||||
AND member_id <> 0
|
||||
AND start_use_time >= %s
|
||||
AND start_use_time < %s
|
||||
AND site_table_area_name = ANY(%s)
|
||||
"""
|
||||
rows = conn.query(sql, (store_id, start_dt, end_dt, list(areas)))
|
||||
sessions: list[SessionRow] = []
|
||||
for r in rows:
|
||||
member_id = int(r.get("member_id") or 0)
|
||||
if member_id <= 0:
|
||||
continue
|
||||
start = r.get("start_use_time")
|
||||
end = r.get("ledger_end_time")
|
||||
if not isinstance(start, datetime):
|
||||
continue
|
||||
if isinstance(end, datetime):
|
||||
pass
|
||||
else:
|
||||
secs = r.get("real_table_use_seconds")
|
||||
try:
|
||||
secs = int(secs or 0)
|
||||
except Exception:
|
||||
secs = 0
|
||||
if secs > 0:
|
||||
end = start + timedelta(seconds=secs)
|
||||
else:
|
||||
continue
|
||||
|
||||
start = _as_tz(start, tz)
|
||||
end = _as_tz(end, tz)
|
||||
if end <= start:
|
||||
continue
|
||||
|
||||
sessions.append(SessionRow(member_id=member_id, start=start, end=end, area_name=r.get("site_table_area_name")))
|
||||
return sessions
|
||||
|
||||
|
||||
def _load_member_profiles(conn: DatabaseConnection, member_ids: list[int]) -> dict[int, dict]:
|
||||
if not member_ids:
|
||||
return {}
|
||||
sql = """
|
||||
SELECT member_id, nickname, mobile
|
||||
FROM billiards_dwd.dim_member
|
||||
WHERE scd2_is_current = 1
|
||||
AND member_id = ANY(%s)
|
||||
"""
|
||||
rows = conn.query(sql, (member_ids,))
|
||||
return {int(r["member_id"]): r for r in rows if r.get("member_id") is not None}
|
||||
|
||||
|
||||
def _load_latest_settlement_contact(conn: DatabaseConnection, *, store_id: int, member_ids: list[int]) -> dict[int, dict]:
|
||||
if not member_ids:
|
||||
return {}
|
||||
sql = """
|
||||
SELECT DISTINCT ON (member_id)
|
||||
member_id, member_name, member_phone, pay_time
|
||||
FROM billiards_dwd.dwd_settlement_head
|
||||
WHERE site_id = %s
|
||||
AND member_id = ANY(%s)
|
||||
AND member_id <> 0
|
||||
ORDER BY member_id, pay_time DESC NULLS LAST
|
||||
"""
|
||||
rows = conn.query(sql, (store_id, member_ids))
|
||||
return {int(r["member_id"]): r for r in rows if r.get("member_id") is not None}
|
||||
|
||||
|
||||
def _build_member_aggs(sessions: list[SessionRow], tz: ZoneInfo) -> list[MemberAgg]:
|
||||
by_member_day: dict[int, dict[date, list[tuple[datetime, datetime]]]] = {}
|
||||
last_visit_at: dict[int, datetime] = {}
|
||||
|
||||
for s in sessions:
|
||||
if s.member_id not in last_visit_at or s.start > last_visit_at[s.member_id]:
|
||||
last_visit_at[s.member_id] = s.start
|
||||
for d, seg_s, seg_e in _split_by_day(s.start, s.end, tz):
|
||||
by_member_day.setdefault(s.member_id, {}).setdefault(d, []).append((seg_s, seg_e))
|
||||
|
||||
aggs: list[MemberAgg] = []
|
||||
for member_id, day_map in by_member_day.items():
|
||||
day_seconds = {d: _union_seconds(iv, tz) for d, iv in day_map.items()}
|
||||
day_seconds = {d: sec for d, sec in day_seconds.items() if sec > 0}
|
||||
if not day_seconds:
|
||||
continue
|
||||
visit_dates = sorted(day_seconds.keys())
|
||||
total_hours = sum(day_seconds.values()) / 3600.0
|
||||
visit_days = len(visit_dates)
|
||||
avg_daily_hours = total_hours / visit_days if visit_days else 0.0
|
||||
aggs.append(
|
||||
MemberAgg(
|
||||
member_id=member_id,
|
||||
total_hours=float(total_hours),
|
||||
visit_days=int(visit_days),
|
||||
avg_daily_hours=float(avg_daily_hours),
|
||||
avg_gap_days=_avg_gap_days(visit_dates),
|
||||
last_visit_at=last_visit_at.get(member_id),
|
||||
)
|
||||
)
|
||||
|
||||
return aggs
|
||||
|
||||
|
||||
def _write_report(
|
||||
out_path: Path,
|
||||
*,
|
||||
rows: list[MemberAgg],
|
||||
tz: ZoneInfo,
|
||||
dim_profiles: dict[int, dict],
|
||||
latest_settle: dict[int, dict],
|
||||
):
|
||||
out_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
with out_path.open("w", encoding="utf-8-sig", newline="") as f:
|
||||
w = csv.writer(f)
|
||||
w.writerow(["排名", "客户姓名", "联系方式", "单次日打球小时数", "到店平均间隔(天)", "10-12月来店次数", "最后一次到店日期"])
|
||||
for idx, row in enumerate(rows, start=1):
|
||||
mid = int(row.member_id)
|
||||
prof = dim_profiles.get(mid) or {}
|
||||
settle = latest_settle.get(mid) or {}
|
||||
name = settle.get("member_name") or prof.get("nickname") or ""
|
||||
phone = settle.get("member_phone") or prof.get("mobile") or ""
|
||||
last_visit_str = ""
|
||||
if isinstance(row.last_visit_at, datetime):
|
||||
last_visit_str = _as_tz(row.last_visit_at, tz).strftime("%Y-%m-%d %H:%M")
|
||||
w.writerow(
|
||||
[
|
||||
idx,
|
||||
str(name),
|
||||
str(phone),
|
||||
f"{float(row.avg_daily_hours or 0.0):.2f}",
|
||||
"" if row.avg_gap_days is None else f"{float(row.avg_gap_days):.1f}",
|
||||
int(row.visit_days or 0),
|
||||
last_visit_str,
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Loyal billiards customers report")
|
||||
parser.add_argument("--start-date", default="2025-10-01", help="YYYY-MM-DD")
|
||||
parser.add_argument("--end-date", default="", help="YYYY-MM-DD (default: today)")
|
||||
parser.add_argument("--top-n", type=int, default=50)
|
||||
parser.add_argument("--areas", default=",".join(DEFAULT_AREAS), help="comma separated")
|
||||
parser.add_argument("--out", default="", help="output csv path")
|
||||
args = parser.parse_args()
|
||||
|
||||
cfg = AppConfig.load({})
|
||||
tz = ZoneInfo(cfg.get("app.timezone", "Asia/Taipei"))
|
||||
store_id = int(cfg.get("app.store_id"))
|
||||
|
||||
start_date = _parse_date(args.start_date)
|
||||
end_date = _parse_date(args.end_date) if args.end_date else datetime.now(tz).date()
|
||||
if end_date < start_date:
|
||||
raise SystemExit("end_date must be >= start_date")
|
||||
|
||||
start_dt = datetime.combine(start_date, time.min).replace(tzinfo=tz)
|
||||
end_dt = datetime.combine(end_date + timedelta(days=1), time.min).replace(tzinfo=tz)
|
||||
|
||||
areas = tuple([a.strip() for a in str(args.areas or "").split(",") if a.strip()])
|
||||
if not areas:
|
||||
raise SystemExit("areas is empty")
|
||||
|
||||
conn = DatabaseConnection(dsn=cfg["db"]["dsn"], session=cfg["db"].get("session"))
|
||||
try:
|
||||
sessions = _load_sessions(conn, store_id=store_id, tz=tz, start_dt=start_dt, end_dt=end_dt, areas=areas)
|
||||
aggs = _build_member_aggs(sessions, tz)
|
||||
aggs.sort(key=lambda x: x.avg_daily_hours, reverse=True)
|
||||
top_n = max(1, int(args.top_n))
|
||||
|
||||
picked_avg = aggs[:top_n]
|
||||
picked_gap_lt_20 = [r for r in aggs if r.avg_gap_days is not None and r.avg_gap_days < 20]
|
||||
|
||||
picked_visit = sorted(aggs, key=lambda x: (x.visit_days, x.avg_daily_hours), reverse=True)[:top_n]
|
||||
picked_hours = sorted(aggs, key=lambda x: (x.total_hours, x.avg_daily_hours), reverse=True)[:top_n]
|
||||
|
||||
member_ids = sorted({r.member_id for r in (picked_avg + picked_gap_lt_20 + picked_visit + picked_hours)})
|
||||
dim_profiles = _load_member_profiles(conn, member_ids)
|
||||
latest_settle = _load_latest_settlement_contact(conn, store_id=store_id, member_ids=member_ids)
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
today = datetime.now(tz).date()
|
||||
base_dir = Path(args.out).parent if args.out else Path(__file__).parent
|
||||
out_main = Path(args.out) if args.out else base_dir / f"loyal_billiards_customers_{today.isoformat()}.csv"
|
||||
out_gap = base_dir / f"loyal_billiards_customers_gap_lt_20d_{today.isoformat()}.csv"
|
||||
out_visit = base_dir / f"loyal_billiards_customers_top{top_n}_by_visit_days_{today.isoformat()}.csv"
|
||||
out_hours = base_dir / f"loyal_billiards_customers_top{top_n}_by_total_hours_{today.isoformat()}.csv"
|
||||
|
||||
_write_report(out_main, rows=picked_avg, tz=tz, dim_profiles=dim_profiles, latest_settle=latest_settle)
|
||||
_write_report(out_gap, rows=picked_gap_lt_20, tz=tz, dim_profiles=dim_profiles, latest_settle=latest_settle)
|
||||
_write_report(out_visit, rows=picked_visit, tz=tz, dim_profiles=dim_profiles, latest_settle=latest_settle)
|
||||
_write_report(out_hours, rows=picked_hours, tz=tz, dim_profiles=dim_profiles, latest_settle=latest_settle)
|
||||
|
||||
print(str(out_main))
|
||||
print(str(out_gap))
|
||||
print(str(out_visit))
|
||||
print(str(out_hours))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -0,0 +1,51 @@
|
||||
排名,客户姓名,联系方式,单次日打球小时数,到店平均间隔(天),10-12月来店次数,最后一次到店日期
|
||||
1,曾巧明,18688471488,6.25,1.2,71,2025-12-25 15:49
|
||||
2,黄生,13609719719,7.53,1.8,43,2025-12-24 14:51
|
||||
3,葛先生,13811638071,5.81,1.3,39,2025-12-26 00:55
|
||||
4,罗先生,13924036996,2.85,1.3,65,2025-12-25 22:25
|
||||
5,谢俊,18620395198,3.09,1.6,53,2025-12-22 20:03
|
||||
6,桂先生,16676777275,4.70,2.3,25,2025-12-16 19:05
|
||||
7,陈腾鑫,17817318218,2.35,1.5,50,2025-12-12 21:39
|
||||
8,艾宇民,15062279958,2.40,1.7,47,2025-12-25 20:28
|
||||
9,小燕,17802081334,3.58,1.2,29,2025-12-22 20:10
|
||||
10,张先生,13902258852,2.20,2.0,43,2025-12-24 18:42
|
||||
11,孟紫龙,17631643741,4.73,1.5,17,2025-12-23 16:27
|
||||
12,黄先生,13570163507,2.20,4.0,22,2025-12-24 15:58
|
||||
13,李先生,13427574343,3.39,2.8,14,2025-12-24 22:49
|
||||
14,轩哥,18826267530,1.85,3.2,25,2025-12-18 02:11
|
||||
15,吴生,13600453341,2.60,6.1,14,2025-12-25 17:51
|
||||
16,郑先生,15902794331,3.01,1.7,12,2025-12-10 22:12
|
||||
17,周先生,19350986822,2.92,2.0,11,2025-12-26 02:06
|
||||
18,孟紫龙(该会员已注销),17631643741(1),4.64,2.0,6,2025-10-13 18:57
|
||||
19,江先生,18819484838,1.52,5.1,15,2025-12-13 19:24
|
||||
20,候,13161960323,3.67,1.0,6,2025-12-17 23:13
|
||||
21,T,18028579962,2.14,6.9,9,2025-12-18 17:36
|
||||
22,桂先生(该会员已注销),16676777275(1),3.17,2.0,6,2025-10-16 19:37
|
||||
23,蔡总,15914338893,1.01,3.1,17,2025-12-24 00:30
|
||||
24,阿亮,15920462628,2.40,2.0,7,2025-12-04 20:05
|
||||
25,叶先生,13826479539,1.60,7.3,10,2025-12-05 23:07
|
||||
26,曾先生,13316091235,1.92,10.1,8,2025-12-24 11:53
|
||||
27,游,17267866666,1.89,1.6,8,2025-12-07 17:36
|
||||
28,叶总,13711223287,2.08,1.5,7,2025-10-27 20:57
|
||||
29,林先生,13763388785,2.39,2.0,6,2025-12-02 19:48
|
||||
30,陈德韩,13431017864,2.18,4.2,6,2025-10-26 19:59
|
||||
31,罗先生,13922289222,2.16,9.4,6,2025-11-26 18:54
|
||||
32,李先生,13128264000,2.36,1.8,5,2025-11-07 23:01
|
||||
33,胡先生,18620043391,2.89,8.0,4,2025-12-01 19:01
|
||||
34,夏,19120942851,1.88,1.8,6,2025-11-06 18:05
|
||||
35,卢广贤,18613066220,2.08,14.8,5,2025-12-13 15:27
|
||||
36,黄先生,15818822109,1.48,7.8,7,2025-12-17 00:58
|
||||
37,牛先生,15201265159,3.44,1.0,3,2025-11-24 17:10
|
||||
38,贺斌,15017500885,3.15,3.0,3,2025-11-03 18:42
|
||||
39,羊,18785445094,0.99,3.0,9,2025-11-23 19:27
|
||||
40,陶,18924022151,1.41,2.2,6,2025-10-26 23:52
|
||||
41,李,13189179882,1.33,9.2,6,2025-11-24 12:38
|
||||
42,罗超杰,13711268012,1.06,4.7,7,2025-11-05 15:50
|
||||
43,郭先生,15622365001,2.43,3.5,3,2025-11-01 20:06
|
||||
44,汪先生,13925126339,3.34,1.0,2,2025-10-08 20:59
|
||||
45,陈世,13430271938,2.15,24.5,3,2025-11-20 21:45
|
||||
46,王先生,18520321125,2.91,6.0,2,2025-12-02 21:00
|
||||
47,小熊,13927020145,1.94,9.5,3,2025-11-04 17:36
|
||||
48,林总,13808881180,1.40,10.3,4,2025-12-24 19:18
|
||||
49,常总,18570077188,1.84,4.0,3,2025-12-22 19:21
|
||||
50,林先生,18826220332,1.36,17.7,4,2025-12-24 00:28
|
||||
|
@@ -0,0 +1,51 @@
|
||||
排名,客户姓名,联系方式,单次日打球小时数,到店平均间隔(天),10-12月来店次数,最后一次到店日期
|
||||
1,曾巧明,18688471488,6.25,1.2,71,2025-12-25 15:49
|
||||
2,罗先生,13924036996,2.85,1.3,65,2025-12-25 22:25
|
||||
3,谢俊,18620395198,3.09,1.6,53,2025-12-22 20:03
|
||||
4,陈腾鑫,17817318218,2.35,1.5,50,2025-12-12 21:39
|
||||
5,艾宇民,15062279958,2.40,1.7,47,2025-12-25 20:28
|
||||
6,黄生,13609719719,7.53,1.8,43,2025-12-24 14:51
|
||||
7,张先生,13902258852,2.20,2.0,43,2025-12-24 18:42
|
||||
8,葛先生,13811638071,5.81,1.3,39,2025-12-26 00:55
|
||||
9,小燕,17802081334,3.58,1.2,29,2025-12-22 20:10
|
||||
10,桂先生,16676777275,4.70,2.3,25,2025-12-16 19:05
|
||||
11,轩哥,18826267530,1.85,3.2,25,2025-12-18 02:11
|
||||
12,黄先生,13570163507,2.20,4.0,22,2025-12-24 15:58
|
||||
13,孟紫龙,17631643741,4.73,1.5,17,2025-12-23 16:27
|
||||
14,蔡总,15914338893,1.01,3.1,17,2025-12-24 00:30
|
||||
15,江先生,18819484838,1.52,5.1,15,2025-12-13 19:24
|
||||
16,李先生,13427574343,3.39,2.8,14,2025-12-24 22:49
|
||||
17,吴生,13600453341,2.60,6.1,14,2025-12-25 17:51
|
||||
18,郑先生,15902794331,3.01,1.7,12,2025-12-10 22:12
|
||||
19,周先生,19350986822,2.92,2.0,11,2025-12-26 02:06
|
||||
20,叶先生,13826479539,1.60,7.3,10,2025-12-05 23:07
|
||||
21,T,18028579962,2.14,6.9,9,2025-12-18 17:36
|
||||
22,羊,18785445094,0.99,3.0,9,2025-11-23 19:27
|
||||
23,曾先生,13316091235,1.92,10.1,8,2025-12-24 11:53
|
||||
24,游,17267866666,1.89,1.6,8,2025-12-07 17:36
|
||||
25,阿亮,15920462628,2.40,2.0,7,2025-12-04 20:05
|
||||
26,叶总,13711223287,2.08,1.5,7,2025-10-27 20:57
|
||||
27,黄先生,15818822109,1.48,7.8,7,2025-12-17 00:58
|
||||
28,罗超杰,13711268012,1.06,4.7,7,2025-11-05 15:50
|
||||
29,孟紫龙(该会员已注销),17631643741(1),4.64,2.0,6,2025-10-13 18:57
|
||||
30,候,13161960323,3.67,1.0,6,2025-12-17 23:13
|
||||
31,桂先生(该会员已注销),16676777275(1),3.17,2.0,6,2025-10-16 19:37
|
||||
32,林先生,13763388785,2.39,2.0,6,2025-12-02 19:48
|
||||
33,陈德韩,13431017864,2.18,4.2,6,2025-10-26 19:59
|
||||
34,罗先生,13922289222,2.16,9.4,6,2025-11-26 18:54
|
||||
35,夏,19120942851,1.88,1.8,6,2025-11-06 18:05
|
||||
36,陶,18924022151,1.41,2.2,6,2025-10-26 23:52
|
||||
37,李,13189179882,1.33,9.2,6,2025-11-24 12:38
|
||||
38,李先生,13128264000,2.36,1.8,5,2025-11-07 23:01
|
||||
39,卢广贤,18613066220,2.08,14.8,5,2025-12-13 15:27
|
||||
40,胡先生,18620043391,2.89,8.0,4,2025-12-01 19:01
|
||||
41,林总,13808881180,1.40,10.3,4,2025-12-24 19:18
|
||||
42,林先生,18826220332,1.36,17.7,4,2025-12-24 00:28
|
||||
43,牛先生,15201265159,3.44,1.0,3,2025-11-24 17:10
|
||||
44,贺斌,15017500885,3.15,3.0,3,2025-11-03 18:42
|
||||
45,郭先生,15622365001,2.43,3.5,3,2025-11-01 20:06
|
||||
46,陈世,13430271938,2.15,24.5,3,2025-11-20 21:45
|
||||
47,小熊,13927020145,1.94,9.5,3,2025-11-04 17:36
|
||||
48,常总,18570077188,1.84,4.0,3,2025-12-22 19:21
|
||||
49,歌神,18819262164,1.75,2.0,3,2025-10-24 21:47
|
||||
50,明哥,16620040999,0.66,5.5,3,2025-12-09 22:42
|
||||
|
72
etl_billiards/reports/loyal_customers_input_2025-12-26.txt
Normal file
72
etl_billiards/reports/loyal_customers_input_2025-12-26.txt
Normal file
@@ -0,0 +1,72 @@
|
||||
黄生 13609719719
|
||||
曾巧明 18688471488
|
||||
葛先生 13811638071
|
||||
孟紫龙 17631643741
|
||||
桂先生 16676777275
|
||||
孟紫龙(该会员已注销) 17631643741(1)
|
||||
陈先生 13922200419
|
||||
候 13161960323
|
||||
小燕 17802081334
|
||||
陈先生 15915782829
|
||||
牛先生 15201265159
|
||||
李先生 13427574343
|
||||
汪先生 13925126339
|
||||
林先生 13342871070
|
||||
桂先生(该会员已注销) 16676777275(1)
|
||||
贺斌 15017500885
|
||||
谢俊 18620395198
|
||||
郑先生 15902794331
|
||||
周先生 19350986822
|
||||
王先生 18520321125
|
||||
胡先生 18620043391
|
||||
罗先生 13924036996
|
||||
刘女士 17727637538
|
||||
魏先生 13726266862
|
||||
吴生 13600453341
|
||||
王先生 18302299763
|
||||
梅 13672464552
|
||||
郭先生 15622365001
|
||||
艾宇民 15062279958
|
||||
阿亮 15920462628
|
||||
林先生 13763388785
|
||||
李先生 13128264000
|
||||
陈腾鑫 17817318218
|
||||
昌哥 13798811229
|
||||
张先生 13902258852
|
||||
黄先生 13570163507
|
||||
陈德韩 13431017864
|
||||
罗先生 13922289222
|
||||
陈世 13430271938
|
||||
T 18028579962
|
||||
大G 18680114598
|
||||
卢广贤 18613066220
|
||||
叶总 13711223287
|
||||
杜先生 18826454705
|
||||
谭先生 13824473185
|
||||
杨 13066365960
|
||||
小熊 13927020145
|
||||
曾先生 13316091235
|
||||
游 17267866666
|
||||
夏 19120942851
|
||||
胡总 13385143091
|
||||
轩哥 18826267530
|
||||
常总 18570077188
|
||||
歌神 18819262164
|
||||
君姐 16624614594
|
||||
叶先生 13826479539
|
||||
江先生 18819484838
|
||||
黄先生 15818822109
|
||||
张先生 13682854528
|
||||
陶 18924022151
|
||||
林总 13808881180
|
||||
林先生 18826220332
|
||||
李 13189179882
|
||||
张丹逸 13609066637
|
||||
罗超杰 13711268012
|
||||
小宇 18745728077
|
||||
蔡总 15914338893
|
||||
羊 18785445094
|
||||
林志铭 13570304233
|
||||
钟智豪 18814002803
|
||||
明哥 16620040999
|
||||
冯先生 15588690348
|
||||
384
etl_billiards/reports/loyal_customers_total_hours_for_list.py
Normal file
384
etl_billiards/reports/loyal_customers_total_hours_for_list.py
Normal file
@@ -0,0 +1,384 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
按自定义名单统计累计打球总时长(同“忠实台球类竞技客户”口径)
|
||||
|
||||
默认口径:
|
||||
- 时间范围:2025-10-01 至今天(可传参覆盖)
|
||||
- 仅统计 member_id != 0 且有时长的记录
|
||||
- 台桌区域过滤:A区/B区/C区/VIP包厢/斯诺克区/TV台(可传参覆盖)
|
||||
- 同一客户同一天同时开多台:按时间区间并集计时(避免重复叠加)
|
||||
|
||||
输入:每行 “姓名<TAB>联系方式”
|
||||
输出:CSV(UTF-8-SIG,便于 Excel 打开)
|
||||
|
||||
运行方式(需在 etl_billiards/ 下以模块方式运行):
|
||||
python -m reports.loyal_customers_total_hours_for_list --input reports/loyal_customers_input_2025-12-26.txt
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
import re
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime, time, timedelta
|
||||
from pathlib import Path
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
from config.settings import AppConfig
|
||||
from database.connection import DatabaseConnection
|
||||
from reports.loyal_billiards_customers_report import DEFAULT_AREAS, SessionRow, _as_tz, _build_member_aggs, _parse_date
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class InputRow:
|
||||
idx: int
|
||||
name: str
|
||||
phone_raw: str
|
||||
phone_digits: str
|
||||
|
||||
|
||||
def _digits(s: str) -> str:
|
||||
return re.sub(r"\D+", "", s or "")
|
||||
|
||||
|
||||
def _normalize_name(s: str) -> str:
|
||||
s = (s or "").strip()
|
||||
s = re.sub(r"[((].*?[))]", "", s)
|
||||
s = re.sub(r"\s+", "", s)
|
||||
return s
|
||||
|
||||
|
||||
def _read_input(path: Path) -> list[InputRow]:
|
||||
rows: list[InputRow] = []
|
||||
with path.open("r", encoding="utf-8") as f:
|
||||
for i, line in enumerate(f, start=1):
|
||||
line = (line or "").strip()
|
||||
if not line or line.startswith("#"):
|
||||
continue
|
||||
parts = re.split(r"\t+", line)
|
||||
if len(parts) < 2:
|
||||
parts = re.split(r"\s+", line)
|
||||
if len(parts) < 2:
|
||||
continue
|
||||
name = parts[0].strip()
|
||||
phone_raw = parts[1].strip()
|
||||
rows.append(InputRow(idx=i, name=name, phone_raw=phone_raw, phone_digits=_digits(phone_raw)))
|
||||
return rows
|
||||
|
||||
|
||||
def _load_member_candidates_by_phone(
|
||||
conn: DatabaseConnection,
|
||||
*,
|
||||
store_id: int,
|
||||
phone_digits_list: list[str],
|
||||
) -> dict[str, dict[int, str]]:
|
||||
if not phone_digits_list:
|
||||
return {}
|
||||
sql = """
|
||||
SELECT DISTINCT
|
||||
member_id,
|
||||
member_name,
|
||||
member_phone
|
||||
FROM billiards_dwd.dwd_settlement_head
|
||||
WHERE site_id = %s
|
||||
AND member_id IS NOT NULL
|
||||
AND member_id <> 0
|
||||
AND regexp_replace(COALESCE(member_phone, ''), '\\D', '', 'g') = ANY(%s)
|
||||
"""
|
||||
rows = conn.query(sql, (store_id, phone_digits_list))
|
||||
out: dict[str, dict[int, str]] = {}
|
||||
for r in rows:
|
||||
mid = int(r.get("member_id") or 0)
|
||||
if mid <= 0:
|
||||
continue
|
||||
phone_digits = _digits(r.get("member_phone") or "")
|
||||
if not phone_digits:
|
||||
continue
|
||||
name = str(r.get("member_name") or "")
|
||||
out.setdefault(phone_digits, {})
|
||||
if mid not in out[phone_digits]:
|
||||
out[phone_digits][mid] = name
|
||||
return out
|
||||
|
||||
|
||||
def _load_member_candidates_by_mobile(
|
||||
conn: DatabaseConnection,
|
||||
*,
|
||||
phone_digits_list: list[str],
|
||||
) -> dict[str, dict[int, str]]:
|
||||
if not phone_digits_list:
|
||||
return {}
|
||||
sql = """
|
||||
SELECT member_id, nickname, mobile
|
||||
FROM billiards_dwd.dim_member
|
||||
WHERE scd2_is_current = 1
|
||||
AND member_id IS NOT NULL
|
||||
AND member_id <> 0
|
||||
AND regexp_replace(COALESCE(mobile, ''), '\\D', '', 'g') = ANY(%s)
|
||||
"""
|
||||
rows = conn.query(sql, (phone_digits_list,))
|
||||
out: dict[str, dict[int, str]] = {}
|
||||
for r in rows:
|
||||
mid = int(r.get("member_id") or 0)
|
||||
if mid <= 0:
|
||||
continue
|
||||
phone_digits = _digits(r.get("mobile") or "")
|
||||
if not phone_digits:
|
||||
continue
|
||||
name = str(r.get("nickname") or "")
|
||||
out.setdefault(phone_digits, {})
|
||||
if mid not in out[phone_digits]:
|
||||
out[phone_digits][mid] = name
|
||||
return out
|
||||
|
||||
|
||||
def _resolve_member_ids(
|
||||
row: InputRow,
|
||||
*,
|
||||
settle_candidates: dict[str, dict[int, str]],
|
||||
dim_candidates: dict[str, dict[int, str]],
|
||||
) -> list[int]:
|
||||
phone_digits = row.phone_digits
|
||||
candidate_map: dict[int, list[str]] = {}
|
||||
|
||||
for mid, name in (settle_candidates.get(phone_digits) or {}).items():
|
||||
candidate_map.setdefault(int(mid), []).append(str(name or ""))
|
||||
for mid, name in (dim_candidates.get(phone_digits) or {}).items():
|
||||
candidate_map.setdefault(int(mid), []).append(str(name or ""))
|
||||
|
||||
candidate_ids = sorted(candidate_map.keys())
|
||||
if len(candidate_ids) <= 1:
|
||||
return candidate_ids
|
||||
|
||||
name_clean = _normalize_name(row.name)
|
||||
if not name_clean:
|
||||
return candidate_ids
|
||||
|
||||
filtered: list[int] = []
|
||||
for mid in candidate_ids:
|
||||
names = candidate_map.get(mid) or []
|
||||
if any(name_clean in _normalize_name(n) or _normalize_name(n) in name_clean for n in names if n):
|
||||
filtered.append(mid)
|
||||
return filtered or candidate_ids
|
||||
|
||||
|
||||
def _load_sessions_for_members(
|
||||
conn: DatabaseConnection,
|
||||
*,
|
||||
store_id: int,
|
||||
tz: ZoneInfo,
|
||||
start_dt: datetime,
|
||||
end_dt: datetime,
|
||||
areas: tuple[str, ...],
|
||||
member_ids: list[int],
|
||||
) -> list[SessionRow]:
|
||||
if not member_ids:
|
||||
return []
|
||||
sql = """
|
||||
SELECT
|
||||
member_id,
|
||||
start_use_time,
|
||||
ledger_end_time,
|
||||
real_table_use_seconds,
|
||||
site_table_area_name
|
||||
FROM billiards_dwd.dwd_table_fee_log
|
||||
WHERE site_id = %s
|
||||
AND member_id = ANY(%s)
|
||||
AND start_use_time >= %s
|
||||
AND start_use_time < %s
|
||||
AND site_table_area_name = ANY(%s)
|
||||
"""
|
||||
rows = conn.query(sql, (store_id, member_ids, start_dt, end_dt, list(areas)))
|
||||
sessions: list[SessionRow] = []
|
||||
for r in rows:
|
||||
mid = int(r.get("member_id") or 0)
|
||||
if mid <= 0:
|
||||
continue
|
||||
start = r.get("start_use_time")
|
||||
end = r.get("ledger_end_time")
|
||||
if not isinstance(start, datetime):
|
||||
continue
|
||||
if isinstance(end, datetime):
|
||||
pass
|
||||
else:
|
||||
secs = r.get("real_table_use_seconds")
|
||||
try:
|
||||
secs = int(secs or 0)
|
||||
except Exception:
|
||||
secs = 0
|
||||
if secs > 0:
|
||||
end = start + timedelta(seconds=secs)
|
||||
else:
|
||||
continue
|
||||
|
||||
start = _as_tz(start, tz)
|
||||
end = _as_tz(end, tz)
|
||||
if end <= start:
|
||||
continue
|
||||
|
||||
sessions.append(SessionRow(member_id=mid, start=start, end=end, area_name=r.get("site_table_area_name")))
|
||||
return sessions
|
||||
|
||||
|
||||
def _write_report(out_path: Path, *, tz: ZoneInfo, rows: list[dict]):
|
||||
out_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
with out_path.open("w", encoding="utf-8-sig", newline="") as f:
|
||||
w = csv.writer(f)
|
||||
w.writerow(
|
||||
[
|
||||
"排名",
|
||||
"客户姓名",
|
||||
"联系方式",
|
||||
"10-12月打球总时长(小时)",
|
||||
"来店日数",
|
||||
"最后一次到店日期",
|
||||
"匹配member_id列表",
|
||||
"匹配状态",
|
||||
]
|
||||
)
|
||||
for r in rows:
|
||||
last_visit = r.get("last_visit_at")
|
||||
last_visit_str = ""
|
||||
if isinstance(last_visit, datetime):
|
||||
last_visit_str = _as_tz(last_visit, tz).strftime("%Y-%m-%d %H:%M")
|
||||
w.writerow(
|
||||
[
|
||||
r.get("rank", ""),
|
||||
r.get("name", ""),
|
||||
r.get("phone_raw", ""),
|
||||
f"{float(r.get('total_hours') or 0.0):.2f}",
|
||||
int(r.get("visit_days") or 0),
|
||||
last_visit_str,
|
||||
r.get("member_ids_str", ""),
|
||||
r.get("status", ""),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Total play hours for a custom customer list")
|
||||
parser.add_argument("--input", default=str(Path(__file__).with_name("loyal_customers_input_2025-12-26.txt")))
|
||||
parser.add_argument("--start-date", default="2025-10-01", help="YYYY-MM-DD")
|
||||
parser.add_argument("--end-date", default="", help="YYYY-MM-DD (default: today)")
|
||||
parser.add_argument("--areas", default=",".join(DEFAULT_AREAS), help="comma separated")
|
||||
parser.add_argument("--out", default="", help="output csv path")
|
||||
args = parser.parse_args()
|
||||
|
||||
cfg = AppConfig.load({})
|
||||
tz = ZoneInfo(cfg.get("app.timezone", "Asia/Taipei"))
|
||||
store_id = int(cfg.get("app.store_id"))
|
||||
|
||||
input_path = Path(args.input)
|
||||
if not input_path.is_file():
|
||||
raise SystemExit(f"input not found: {input_path}")
|
||||
|
||||
start_date = _parse_date(args.start_date)
|
||||
end_date = _parse_date(args.end_date) if args.end_date else datetime.now(tz).date()
|
||||
if end_date < start_date:
|
||||
raise SystemExit("end_date must be >= start_date")
|
||||
|
||||
start_dt = datetime.combine(start_date, time.min).replace(tzinfo=tz)
|
||||
end_dt = datetime.combine(end_date + timedelta(days=1), time.min).replace(tzinfo=tz)
|
||||
|
||||
areas = tuple([a.strip() for a in str(args.areas or "").split(",") if a.strip()])
|
||||
if not areas:
|
||||
raise SystemExit("areas is empty")
|
||||
|
||||
input_rows = _read_input(input_path)
|
||||
phone_digits_list = sorted({r.phone_digits for r in input_rows if r.phone_digits})
|
||||
|
||||
conn = DatabaseConnection(dsn=cfg["db"]["dsn"], session=cfg["db"].get("session"))
|
||||
try:
|
||||
settle_candidates = _load_member_candidates_by_phone(conn, store_id=store_id, phone_digits_list=phone_digits_list)
|
||||
dim_candidates = _load_member_candidates_by_mobile(conn, phone_digits_list=phone_digits_list)
|
||||
|
||||
per_input_member_ids: dict[int, list[int]] = {}
|
||||
all_member_ids: set[int] = set()
|
||||
for r in input_rows:
|
||||
mids = _resolve_member_ids(r, settle_candidates=settle_candidates, dim_candidates=dim_candidates)
|
||||
per_input_member_ids[r.idx] = mids
|
||||
all_member_ids.update(mids)
|
||||
|
||||
sessions = _load_sessions_for_members(
|
||||
conn,
|
||||
store_id=store_id,
|
||||
tz=tz,
|
||||
start_dt=start_dt,
|
||||
end_dt=end_dt,
|
||||
areas=areas,
|
||||
member_ids=sorted(all_member_ids),
|
||||
)
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
aggs = _build_member_aggs(sessions, tz)
|
||||
agg_by_member = {int(a.member_id): a for a in aggs}
|
||||
|
||||
out_rows: list[dict] = []
|
||||
for r in input_rows:
|
||||
mids = per_input_member_ids.get(r.idx) or []
|
||||
if not mids:
|
||||
out_rows.append(
|
||||
{
|
||||
"rank": "",
|
||||
"name": r.name,
|
||||
"phone_raw": r.phone_raw,
|
||||
"total_hours": 0.0,
|
||||
"visit_days": 0,
|
||||
"last_visit_at": None,
|
||||
"member_ids_str": "",
|
||||
"status": "NOT_FOUND",
|
||||
}
|
||||
)
|
||||
continue
|
||||
|
||||
total_hours = 0.0
|
||||
visit_days = 0
|
||||
last_visit_at = None
|
||||
found_any = False
|
||||
for mid in mids:
|
||||
agg = agg_by_member.get(int(mid))
|
||||
if not agg:
|
||||
continue
|
||||
found_any = True
|
||||
total_hours += float(agg.total_hours or 0.0)
|
||||
visit_days += int(agg.visit_days or 0)
|
||||
if isinstance(agg.last_visit_at, datetime):
|
||||
if last_visit_at is None or agg.last_visit_at > last_visit_at:
|
||||
last_visit_at = agg.last_visit_at
|
||||
|
||||
status = "OK"
|
||||
if len(mids) > 1:
|
||||
status = "MULTI_MEMBER_ID"
|
||||
if not found_any:
|
||||
status = "NO_SESSIONS"
|
||||
|
||||
out_rows.append(
|
||||
{
|
||||
"rank": "",
|
||||
"name": r.name,
|
||||
"phone_raw": r.phone_raw,
|
||||
"total_hours": total_hours,
|
||||
"visit_days": visit_days,
|
||||
"last_visit_at": last_visit_at,
|
||||
"member_ids_str": ",".join([str(x) for x in mids]),
|
||||
"status": status,
|
||||
}
|
||||
)
|
||||
|
||||
out_rows_sorted = sorted(out_rows, key=lambda x: float(x.get("total_hours") or 0.0), reverse=True)
|
||||
for i, r in enumerate(out_rows_sorted, start=1):
|
||||
r["rank"] = i
|
||||
|
||||
today = datetime.now(tz).date().isoformat()
|
||||
base_dir = Path(args.out).parent if args.out else Path(__file__).parent
|
||||
out_path = Path(args.out) if args.out else base_dir / f"loyal_customers_total_hours_for_list_{today}.csv"
|
||||
_write_report(out_path, tz=tz, rows=out_rows_sorted)
|
||||
print(str(out_path))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
排名,客户姓名,联系方式,10-12月打球总时长(小时),来店日数,最后一次到店日期,匹配member_id列表,匹配状态
|
||||
1,曾巧明,18688471488,443.80,71,2025-12-25 15:49,2799207403554565,OK
|
||||
2,黄生,13609719719,323.64,43,2025-12-24 14:51,2799207390349061,OK
|
||||
3,葛先生,13811638071,226.56,39,2025-12-26 00:55,2799207363643141,OK
|
||||
4,罗先生,13924036996,185.01,65,2025-12-25 22:25,2799207359858437,OK
|
||||
5,谢俊,18620395198,163.86,53,2025-12-22 20:03,2799207352715013,OK
|
||||
6,桂先生,16676777275,117.52,25,2025-12-16 19:05,2933647801731013,OK
|
||||
7,陈腾鑫,17817318218,117.32,50,2025-12-12 21:39,2799207124305669,OK
|
||||
8,艾宇民,15062279958,112.83,47,2025-12-25 20:28,2799207328155397,OK
|
||||
9,小燕,17802081334,103.72,29,2025-12-22 20:10,2969257129938053,OK
|
||||
10,张先生,13902258852,94.55,43,2025-12-24 18:42,2799207406946053,OK
|
||||
11,孟紫龙,17631643741,80.36,17,2025-12-23 16:27,2985941423934469,OK
|
||||
12,黄先生,13570163507,48.36,22,2025-12-24 15:58,2799212430657285,OK
|
||||
13,李先生,13427574343,47.40,14,2025-12-24 22:49,2970668087594181,OK
|
||||
14,轩哥,18826267530,46.27,25,2025-12-18 02:11,2799207522600709,OK
|
||||
15,吴生,13600453341,36.47,14,2025-12-25 17:51,2799207356434181,OK
|
||||
16,郑先生,15902794331,36.14,12,2025-12-10 22:12,2976361970370373,OK
|
||||
17,周先生,19350986822,32.16,11,2025-12-26 02:06,2995832745758917,OK
|
||||
18,孟紫龙(该会员已注销),17631643741(1),27.85,6,2025-10-13 18:57,"2799212728911621,2878376367018757",MULTI_MEMBER_ID
|
||||
19,江先生,18819484838,22.87,15,2025-12-13 19:24,2820625955784965,OK
|
||||
20,候,13161960323,22.01,6,2025-12-17 23:13,3003552553390789,OK
|
||||
21,T,18028579962,19.25,9,2025-12-18 17:36,2935271033079557,OK
|
||||
22,桂先生(该会员已注销),16676777275(1),19.03,6,2025-10-16 19:37,2881216340641797,OK
|
||||
23,蔡总,15914338893,17.18,17,2025-12-24 00:30,2799212491392773,OK
|
||||
24,阿亮,15920462628,16.79,7,2025-12-04 20:05,2976376546117574,OK
|
||||
25,叶先生,13826479539,15.95,10,2025-12-05 23:07,2799207342704389,OK
|
||||
26,曾先生,13316091235,15.33,8,2025-12-24 11:53,2799210181019397,OK
|
||||
27,游,17267866666,15.10,8,2025-12-07 17:36,2799207435323141,OK
|
||||
28,叶总,13711223287,14.55,7,2025-10-27 20:57,2844990190242821,OK
|
||||
29,林先生,13763388785,14.34,6,2025-12-02 19:48,2799207067109125,OK
|
||||
30,陈德韩,13431017864,13.08,6,2025-10-26 19:59,2799209806071557,OK
|
||||
31,罗先生,13922289222,12.94,6,2025-11-26 18:54,2799209768765189,OK
|
||||
32,李先生,13128264000,11.81,5,2025-11-07 23:01,2799207545685765,OK
|
||||
33,胡先生,18620043391,11.56,4,2025-12-01 19:01,2955204541320325,OK
|
||||
34,夏,19120942851,11.30,6,2025-11-06 18:05,2799207519176453,OK
|
||||
35,卢广贤,18613066220,10.41,5,2025-12-13 15:27,2799207163447045,OK
|
||||
36,黄先生,15818822109,10.39,7,2025-12-17 00:58,2846153189592005,OK
|
||||
37,牛先生,15201265159,10.33,3,2025-11-24 17:10,2973479575832453,OK
|
||||
38,贺斌,15017500885,9.45,3,2025-11-03 18:42,2938229628340421,OK
|
||||
39,羊,18785445094,8.91,9,2025-11-23 19:27,2799207378798341,OK
|
||||
40,陶,18924022151,8.47,6,2025-10-26 23:52,2919518015802181,OK
|
||||
41,李,13189179882,7.98,6,2025-11-24 12:38,2860039721438277,OK
|
||||
42,罗超杰,13711268012,7.45,7,2025-11-05 15:50,2799207338198789,OK
|
||||
43,郭先生,15622365001,7.29,3,2025-11-01 20:06,2847747357002757,OK
|
||||
44,汪先生,13925126339,6.69,2,2025-10-08 20:59,2799207287523077,OK
|
||||
45,陈世,13430271938,6.45,3,2025-11-20 21:45,2799207229441797,OK
|
||||
46,王先生,18520321125,5.82,2,2025-12-02 21:00,2970386005050949,OK
|
||||
47,小熊,13927020145,5.82,3,2025-11-04 17:36,2799207599212293,OK
|
||||
48,林总,13808881180,5.61,4,2025-12-24 19:18,2799207256426245,OK
|
||||
49,常总,18570077188,5.52,3,2025-12-22 19:21,3003185854190085,OK
|
||||
50,林先生,18826220332,5.46,4,2025-12-24 00:28,2946070922169029,OK
|
||||
51,魏先生,13726266862,5.39,2,2025-12-05 22:18,2799209794651909,OK
|
||||
52,歌神,18819262164,5.25,3,2025-10-24 21:47,2799207370163973,OK
|
||||
53,昌哥,13798811229,4.54,2,2025-12-07 21:05,2974770547348357,OK
|
||||
54,大G,18680114598,4.20,2,2025-12-02 20:53,2799207533332229,OK
|
||||
55,杨,13066365960,4.00,2,2025-12-05 19:28,2799212333647621,OK
|
||||
56,陈先生,13922200419,3.92,1,2025-10-18 12:35,2799210049521413,OK
|
||||
57,胡总,13385143091,3.72,2,2025-12-20 21:00,2799209753708293,OK
|
||||
58,陈先生,15915782829,3.48,1,2025-11-07 00:44,2799207290996485,OK
|
||||
59,君姐,16624614594,3.32,2,2025-11-27 21:22,2983452013021509,OK
|
||||
60,林先生,13342871070,3.30,1,2025-12-05 15:52,2976465665476741,OK
|
||||
61,张先生,13682854528,2.96,2,2025-12-19 22:37,2963357031615941,OK
|
||||
62,刘女士,17727637538,2.80,1,2025-10-14 18:24,2853881398644101,OK
|
||||
63,王先生,18302299763,2.58,1,2025-12-24 18:30,2973199975761797,OK
|
||||
64,梅,13672464552,2.47,1,2025-11-22 20:29,2975065345119045,OK
|
||||
65,张丹逸,13609066637,2.40,2,2025-10-06 22:47,2799207176636165,OK
|
||||
66,小宇,18745728077,2.06,2,2025-10-13 16:24,2799212906235653,OK
|
||||
67,杜先生,18826454705,2.03,1,2025-11-02 20:12,2799209786836741,OK
|
||||
68,谭先生,13824473185,2.03,1,2025-10-20 17:15,2929237914683013,OK
|
||||
69,明哥,16620040999,1.99,3,2025-12-09 22:42,2799210064873221,OK
|
||||
70,林志铭,13570304233,1.96,2,2025-11-30 16:19,2799207188170501,OK
|
||||
71,钟智豪,18814002803,1.76,2,2025-11-28 23:50,2938228399917253,OK
|
||||
72,冯先生,15588690348,0.93,2,2025-10-31 23:34,2799212808029957,OK
|
||||
|
385
etl_billiards/reports/ods_gap_check_20260115_073006.json
Normal file
385
etl_billiards/reports/ods_gap_check_20260115_073006.json
Normal file
@@ -0,0 +1,385 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T07:28:43.859529+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 1,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 64,
|
||||
"records_with_pk": 64,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.assistant_accounts_master t J...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1,
|
||||
"records_with_pk": 1,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 16,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.settlement_records t JOIN (VA...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 200,
|
||||
"records_with_pk": 200,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.table_fee_transactions t JOIN...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 21,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.assistant_service_records t J...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1,
|
||||
"records_with_pk": 1,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 106,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.assistant_cancellation_record...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 200,
|
||||
"records_with_pk": 200,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.payment_transactions t JOIN (...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 37,
|
||||
"records_with_pk": 37,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.refund_transactions t JOIN (V...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 200,
|
||||
"records_with_pk": 200,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.platform_coupon_redemption_re...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 200,
|
||||
"records_with_pk": 200,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.member_profiles t JOIN (VALUE...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 200,
|
||||
"records_with_pk": 200,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.member_stored_value_cards t J...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 200,
|
||||
"records_with_pk": 200,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.member_balance_changes t JOIN...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1,
|
||||
"records_with_pk": 1,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 21,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.recharge_settlements t JOIN (...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.group_buy_packages t JOIN (VA...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 200,
|
||||
"records_with_pk": 200,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.group_buy_redemption_records ...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"sitegoodsid\" 是不明确的\nLINE 1: SELECT \"sitegoodsid\" FROM billiards_ods.goods_stock_summary ...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 62,
|
||||
"records_with_pk": 62,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 18,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"sitegoodsstockid\" 是不明确的\nLINE 1: SELECT \"sitegoodsstockid\" FROM billiards_ods.goods_stock_mov...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.site_tables_master t JOIN (VA...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.stock_goods_category_tree t J...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.store_goods_master t JOIN (VA...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 200,
|
||||
"records_with_pk": 200,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.table_fee_discount_records t ...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "AmbiguousColumn: 错误: 字段关联 \"id\" 是不明确的\nLINE 1: SELECT \"id\" FROM billiards_ods.tenant_goods_master t JOIN (V...\n ^\n"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22265,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 203,
|
||||
"skipped_missing_pk": 22265,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 0,
|
||||
"total_errors": 21,
|
||||
"generated_at": "2026-01-15T07:30:06.858721+08:00"
|
||||
}
|
||||
838
etl_billiards/reports/ods_gap_check_20260115_073926.json
Normal file
838
etl_billiards/reports/ods_gap_check_20260115_073926.json
Normal file
@@ -0,0 +1,838 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T07:30:39.379740+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 1,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 12736,
|
||||
"records_with_pk": 12736,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 199,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21625,
|
||||
"records_with_pk": 21625,
|
||||
"missing": 5554,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 2793005672007237
|
||||
},
|
||||
{
|
||||
"id": 2794775029944453
|
||||
},
|
||||
{
|
||||
"id": 2794723221669957
|
||||
},
|
||||
{
|
||||
"id": 2795846081054981
|
||||
},
|
||||
{
|
||||
"id": 2797459120852869
|
||||
},
|
||||
{
|
||||
"id": 2797370356928517
|
||||
},
|
||||
{
|
||||
"id": 2797170093527045
|
||||
},
|
||||
{
|
||||
"id": 2797169961897989
|
||||
},
|
||||
{
|
||||
"id": 2798802248288261
|
||||
},
|
||||
{
|
||||
"id": 2798636101421317
|
||||
},
|
||||
{
|
||||
"id": 2800804425353349
|
||||
},
|
||||
{
|
||||
"id": 2800797279504261
|
||||
},
|
||||
{
|
||||
"id": 2800796097267589
|
||||
},
|
||||
{
|
||||
"id": 2800795223918661
|
||||
},
|
||||
{
|
||||
"id": 2800792829986693
|
||||
},
|
||||
{
|
||||
"id": 2800791828547461
|
||||
},
|
||||
{
|
||||
"id": 2800790859499397
|
||||
},
|
||||
{
|
||||
"id": 2800779801462661
|
||||
},
|
||||
{
|
||||
"id": 2800779692902277
|
||||
},
|
||||
{
|
||||
"id": 2800771371960389
|
||||
},
|
||||
{
|
||||
"id": 2800770730772485
|
||||
},
|
||||
{
|
||||
"id": 2800770224490629
|
||||
},
|
||||
{
|
||||
"id": 2800765767043077
|
||||
},
|
||||
{
|
||||
"id": 2800753238165381
|
||||
},
|
||||
{
|
||||
"id": 2800745545254789
|
||||
},
|
||||
{
|
||||
"id": 2800734778001413
|
||||
},
|
||||
{
|
||||
"id": 2800719579875205
|
||||
},
|
||||
{
|
||||
"id": 2800714836166661
|
||||
},
|
||||
{
|
||||
"id": 2800714753411013
|
||||
},
|
||||
{
|
||||
"id": 2800712176470085
|
||||
},
|
||||
{
|
||||
"id": 2800711353370501
|
||||
},
|
||||
{
|
||||
"id": 2800706200422341
|
||||
},
|
||||
{
|
||||
"id": 2800702845536197
|
||||
},
|
||||
{
|
||||
"id": 2800701729900485
|
||||
},
|
||||
{
|
||||
"id": 2800700704409605
|
||||
},
|
||||
{
|
||||
"id": 2800698665420741
|
||||
},
|
||||
{
|
||||
"id": 2800693776926661
|
||||
},
|
||||
{
|
||||
"id": 2800678221105093
|
||||
},
|
||||
{
|
||||
"id": 2800677073487813
|
||||
},
|
||||
{
|
||||
"id": 2800675629844549
|
||||
},
|
||||
{
|
||||
"id": 2800675308767109
|
||||
},
|
||||
{
|
||||
"id": 2800659322996613
|
||||
},
|
||||
{
|
||||
"id": 2800653584042053
|
||||
},
|
||||
{
|
||||
"id": 2800653414778821
|
||||
},
|
||||
{
|
||||
"id": 2800651389634630
|
||||
},
|
||||
{
|
||||
"id": 2800643230435205
|
||||
},
|
||||
{
|
||||
"id": 2800637690595269
|
||||
},
|
||||
{
|
||||
"id": 2800630547269509
|
||||
},
|
||||
{
|
||||
"id": 2800620726110149
|
||||
},
|
||||
{
|
||||
"id": 2800619316873221
|
||||
}
|
||||
],
|
||||
"pages": 202,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9827,
|
||||
"records_with_pk": 9827,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 50,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4431,
|
||||
"records_with_pk": 4431,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 199,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 79,
|
||||
"records_with_pk": 79,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 199,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11847,
|
||||
"records_with_pk": 11847,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 60,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 37,
|
||||
"records_with_pk": 37,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16006,
|
||||
"records_with_pk": 16006,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 81,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 551,
|
||||
"records_with_pk": 551,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 936,
|
||||
"records_with_pk": 936,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 5,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2432,
|
||||
"records_with_pk": 2432,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 13,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 405,
|
||||
"records_with_pk": 405,
|
||||
"missing": 122,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 2800763348731909
|
||||
},
|
||||
{
|
||||
"id": 2802064357345349
|
||||
},
|
||||
{
|
||||
"id": 2801879399532933
|
||||
},
|
||||
{
|
||||
"id": 2800824057628741
|
||||
},
|
||||
{
|
||||
"id": 2803649174965445
|
||||
},
|
||||
{
|
||||
"id": 2803524215835845
|
||||
},
|
||||
{
|
||||
"id": 2802480974171333
|
||||
},
|
||||
{
|
||||
"id": 2802393839258885
|
||||
},
|
||||
{
|
||||
"id": 2802362619840581
|
||||
},
|
||||
{
|
||||
"id": 2804767340973317
|
||||
},
|
||||
{
|
||||
"id": 2803710575593541
|
||||
},
|
||||
{
|
||||
"id": 2803666932010565
|
||||
},
|
||||
{
|
||||
"id": 2803661545508421
|
||||
},
|
||||
{
|
||||
"id": 2806426635208517
|
||||
},
|
||||
{
|
||||
"id": 2806371278325381
|
||||
},
|
||||
{
|
||||
"id": 2806244951017285
|
||||
},
|
||||
{
|
||||
"id": 2805188835477573
|
||||
},
|
||||
{
|
||||
"id": 2805121951074373
|
||||
},
|
||||
{
|
||||
"id": 2805111552117957
|
||||
},
|
||||
{
|
||||
"id": 2805070136823365
|
||||
},
|
||||
{
|
||||
"id": 2807891556897349
|
||||
},
|
||||
{
|
||||
"id": 2807815241847557
|
||||
},
|
||||
{
|
||||
"id": 2806859908384389
|
||||
},
|
||||
{
|
||||
"id": 2806855233947525
|
||||
},
|
||||
{
|
||||
"id": 2806708031637381
|
||||
},
|
||||
{
|
||||
"id": 2809187656829061
|
||||
},
|
||||
{
|
||||
"id": 2808923174783109
|
||||
},
|
||||
{
|
||||
"id": 2807912803045957
|
||||
},
|
||||
{
|
||||
"id": 2807909672309637
|
||||
},
|
||||
{
|
||||
"id": 2810563362048453
|
||||
},
|
||||
{
|
||||
"id": 2810546930207237
|
||||
},
|
||||
{
|
||||
"id": 2810412839373574
|
||||
},
|
||||
{
|
||||
"id": 2810371281799621
|
||||
},
|
||||
{
|
||||
"id": 2809504839059909
|
||||
},
|
||||
{
|
||||
"id": 2809471788321221
|
||||
},
|
||||
{
|
||||
"id": 2809392429549765
|
||||
},
|
||||
{
|
||||
"id": 2811829130856901
|
||||
},
|
||||
{
|
||||
"id": 2810801124133381
|
||||
},
|
||||
{
|
||||
"id": 2810800364193989
|
||||
},
|
||||
{
|
||||
"id": 2812352420645317
|
||||
},
|
||||
{
|
||||
"id": 2812164953934597
|
||||
},
|
||||
{
|
||||
"id": 2812160863095557
|
||||
},
|
||||
{
|
||||
"id": 2814476335547909
|
||||
},
|
||||
{
|
||||
"id": 2813729032046789
|
||||
},
|
||||
{
|
||||
"id": 2816375660284933
|
||||
},
|
||||
{
|
||||
"id": 2816013068586693
|
||||
},
|
||||
{
|
||||
"id": 2815107864956613
|
||||
},
|
||||
{
|
||||
"id": 2817594853805701
|
||||
},
|
||||
{
|
||||
"id": 2816455124847557
|
||||
},
|
||||
{
|
||||
"id": 2819131204669189
|
||||
}
|
||||
],
|
||||
"pages": 199,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8218,
|
||||
"records_with_pk": 8218,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 42,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28417,
|
||||
"records_with_pk": 28417,
|
||||
"missing": 128,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 2796087732473349
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796087732375045
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085792214469
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085791641029
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085792116165
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085791542725
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589486533
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589027781
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082588552645
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587995589
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587520453
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587028933
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586570181
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586013125
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082585505221
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589584837
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589126085
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082588650949
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082588110277
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587618757
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587127237
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586668485
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586111429
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082585603525
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584784325
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584292805
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583768517
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583260613
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082582752709
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584686021
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584194501
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583653829
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583162309
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082582654405
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074872851973
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074872753669
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074436742661
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074436578821
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074059976133
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074059894213
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073653128709
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073653030405
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073284095429
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073283997125
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072902577605
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072902675909
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072030784965
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072030703045
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796070969183685
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796070969298373
|
||||
}
|
||||
],
|
||||
"pages": 238,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1649,
|
||||
"records_with_pk": 1649,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22265,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 203,
|
||||
"skipped_missing_pk": 22265,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 5804,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T07:39:26.592004+08:00"
|
||||
}
|
||||
854
etl_billiards/reports/ods_gap_check_20260115_103858.json
Normal file
854
etl_billiards/reports/ods_gap_check_20260115_103858.json
Normal file
@@ -0,0 +1,854 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T09:48:49.829033+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 1,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 50816,
|
||||
"records_with_pk": 50816,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21513,
|
||||
"records_with_pk": 21513,
|
||||
"missing": 5554,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 2793005672007237
|
||||
},
|
||||
{
|
||||
"id": 2794775029944453
|
||||
},
|
||||
{
|
||||
"id": 2794723221669957
|
||||
},
|
||||
{
|
||||
"id": 2795846081054981
|
||||
},
|
||||
{
|
||||
"id": 2797170093527045
|
||||
},
|
||||
{
|
||||
"id": 2797169961897989
|
||||
},
|
||||
{
|
||||
"id": 2797459120852869
|
||||
},
|
||||
{
|
||||
"id": 2797370356928517
|
||||
},
|
||||
{
|
||||
"id": 2798636101421317
|
||||
},
|
||||
{
|
||||
"id": 2798802248288261
|
||||
},
|
||||
{
|
||||
"id": 2800105539552709
|
||||
},
|
||||
{
|
||||
"id": 2800050273584581
|
||||
},
|
||||
{
|
||||
"id": 2800462764542021
|
||||
},
|
||||
{
|
||||
"id": 2800460224120773
|
||||
},
|
||||
{
|
||||
"id": 2800454900648005
|
||||
},
|
||||
{
|
||||
"id": 2800448023513157
|
||||
},
|
||||
{
|
||||
"id": 2800442606962629
|
||||
},
|
||||
{
|
||||
"id": 2800433643243525
|
||||
},
|
||||
{
|
||||
"id": 2800430651182085
|
||||
},
|
||||
{
|
||||
"id": 2800428852725765
|
||||
},
|
||||
{
|
||||
"id": 2800423540131717
|
||||
},
|
||||
{
|
||||
"id": 2800421742806917
|
||||
},
|
||||
{
|
||||
"id": 2800420036233221
|
||||
},
|
||||
{
|
||||
"id": 2800410925254597
|
||||
},
|
||||
{
|
||||
"id": 2800410227705733
|
||||
},
|
||||
{
|
||||
"id": 2800392593475653
|
||||
},
|
||||
{
|
||||
"id": 2800388746184581
|
||||
},
|
||||
{
|
||||
"id": 2800388462479301
|
||||
},
|
||||
{
|
||||
"id": 2800383220615109
|
||||
},
|
||||
{
|
||||
"id": 2800379828701189
|
||||
},
|
||||
{
|
||||
"id": 2800379750893445
|
||||
},
|
||||
{
|
||||
"id": 2800379609925573
|
||||
},
|
||||
{
|
||||
"id": 2800378758907845
|
||||
},
|
||||
{
|
||||
"id": 2800378535118789
|
||||
},
|
||||
{
|
||||
"id": 2800371960039365
|
||||
},
|
||||
{
|
||||
"id": 2800363039770693
|
||||
},
|
||||
{
|
||||
"id": 2800360608303045
|
||||
},
|
||||
{
|
||||
"id": 2800353168738309
|
||||
},
|
||||
{
|
||||
"id": 2800353054263173
|
||||
},
|
||||
{
|
||||
"id": 2800348877604741
|
||||
},
|
||||
{
|
||||
"id": 2800348098742341
|
||||
},
|
||||
{
|
||||
"id": 2800343364913157
|
||||
},
|
||||
{
|
||||
"id": 2800328443021317
|
||||
},
|
||||
{
|
||||
"id": 2800320895223685
|
||||
},
|
||||
{
|
||||
"id": 2800316938717189
|
||||
},
|
||||
{
|
||||
"id": 2800311915366341
|
||||
},
|
||||
{
|
||||
"id": 2800301266225093
|
||||
},
|
||||
{
|
||||
"id": 2800272176744389
|
||||
},
|
||||
{
|
||||
"id": 2800265338046277
|
||||
},
|
||||
{
|
||||
"id": 2800262033213317
|
||||
}
|
||||
],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9751,
|
||||
"records_with_pk": 9751,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863815030085
|
||||
}
|
||||
],
|
||||
"pages": 49,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4415,
|
||||
"records_with_pk": 4415,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863815488837
|
||||
}
|
||||
],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 78,
|
||||
"records_with_pk": 78,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11733,
|
||||
"records_with_pk": 11733,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863811867973
|
||||
}
|
||||
],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16006,
|
||||
"records_with_pk": 16006,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 81,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 551,
|
||||
"records_with_pk": 551,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 936,
|
||||
"records_with_pk": 936,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 5,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2407,
|
||||
"records_with_pk": 2407,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863812408645
|
||||
}
|
||||
],
|
||||
"pages": 13,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 405,
|
||||
"records_with_pk": 405,
|
||||
"missing": 122,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 2800763348731909
|
||||
},
|
||||
{
|
||||
"id": 2800824057628741
|
||||
},
|
||||
{
|
||||
"id": 2801879399532933
|
||||
},
|
||||
{
|
||||
"id": 2802064357345349
|
||||
},
|
||||
{
|
||||
"id": 2802480974171333
|
||||
},
|
||||
{
|
||||
"id": 2802393839258885
|
||||
},
|
||||
{
|
||||
"id": 2802362619840581
|
||||
},
|
||||
{
|
||||
"id": 2803649174965445
|
||||
},
|
||||
{
|
||||
"id": 2803524215835845
|
||||
},
|
||||
{
|
||||
"id": 2803710575593541
|
||||
},
|
||||
{
|
||||
"id": 2803666932010565
|
||||
},
|
||||
{
|
||||
"id": 2803661545508421
|
||||
},
|
||||
{
|
||||
"id": 2804767340973317
|
||||
},
|
||||
{
|
||||
"id": 2805188835477573
|
||||
},
|
||||
{
|
||||
"id": 2805121951074373
|
||||
},
|
||||
{
|
||||
"id": 2805111552117957
|
||||
},
|
||||
{
|
||||
"id": 2805070136823365
|
||||
},
|
||||
{
|
||||
"id": 2806426635208517
|
||||
},
|
||||
{
|
||||
"id": 2806371278325381
|
||||
},
|
||||
{
|
||||
"id": 2806244951017285
|
||||
},
|
||||
{
|
||||
"id": 2806708031637381
|
||||
},
|
||||
{
|
||||
"id": 2806859908384389
|
||||
},
|
||||
{
|
||||
"id": 2806855233947525
|
||||
},
|
||||
{
|
||||
"id": 2807891556897349
|
||||
},
|
||||
{
|
||||
"id": 2807815241847557
|
||||
},
|
||||
{
|
||||
"id": 2807912803045957
|
||||
},
|
||||
{
|
||||
"id": 2807909672309637
|
||||
},
|
||||
{
|
||||
"id": 2808923174783109
|
||||
},
|
||||
{
|
||||
"id": 2809187656829061
|
||||
},
|
||||
{
|
||||
"id": 2809504839059909
|
||||
},
|
||||
{
|
||||
"id": 2809471788321221
|
||||
},
|
||||
{
|
||||
"id": 2809392429549765
|
||||
},
|
||||
{
|
||||
"id": 2810371281799621
|
||||
},
|
||||
{
|
||||
"id": 2810563362048453
|
||||
},
|
||||
{
|
||||
"id": 2810546930207237
|
||||
},
|
||||
{
|
||||
"id": 2810412839373574
|
||||
},
|
||||
{
|
||||
"id": 2810801124133381
|
||||
},
|
||||
{
|
||||
"id": 2810800364193989
|
||||
},
|
||||
{
|
||||
"id": 2811829130856901
|
||||
},
|
||||
{
|
||||
"id": 2812352420645317
|
||||
},
|
||||
{
|
||||
"id": 2812164953934597
|
||||
},
|
||||
{
|
||||
"id": 2812160863095557
|
||||
},
|
||||
{
|
||||
"id": 2813729032046789
|
||||
},
|
||||
{
|
||||
"id": 2814476335547909
|
||||
},
|
||||
{
|
||||
"id": 2815107864956613
|
||||
},
|
||||
{
|
||||
"id": 2816013068586693
|
||||
},
|
||||
{
|
||||
"id": 2816375660284933
|
||||
},
|
||||
{
|
||||
"id": 2816455124847557
|
||||
},
|
||||
{
|
||||
"id": 2817594853805701
|
||||
},
|
||||
{
|
||||
"id": 2818031067369029
|
||||
}
|
||||
],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8155,
|
||||
"records_with_pk": 8155,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 41,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28249,
|
||||
"records_with_pk": 28249,
|
||||
"missing": 128,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 2796087732473349
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796087732375045
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085792214469
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085791641029
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085792116165
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085791542725
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589486533
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589027781
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082588552645
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587995589
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587520453
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587028933
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586570181
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586013125
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082585505221
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589584837
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589126085
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082588650949
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082588110277
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587618757
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587127237
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586668485
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586111429
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082585603525
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584784325
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584292805
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583768517
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583260613
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082582752709
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584686021
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584194501
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583653829
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583162309
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082582654405
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074872851973
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074872753669
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074436742661
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074436578821
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074059976133
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074059894213
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073653128709
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073653030405
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073284095429
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073283997125
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072902577605
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072902675909
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072030784965
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072030703045
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796070969183685
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796070969298373
|
||||
}
|
||||
],
|
||||
"pages": 797,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1633,
|
||||
"records_with_pk": 1633,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22153,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 22153,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 5808,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T10:38:58.926701+08:00"
|
||||
}
|
||||
854
etl_billiards/reports/ods_gap_check_20260115_104948.json
Normal file
854
etl_billiards/reports/ods_gap_check_20260115_104948.json
Normal file
@@ -0,0 +1,854 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T09:28:34.669129+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 1,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 50816,
|
||||
"records_with_pk": 50816,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21513,
|
||||
"records_with_pk": 21513,
|
||||
"missing": 5554,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 2793005672007237
|
||||
},
|
||||
{
|
||||
"id": 2794775029944453
|
||||
},
|
||||
{
|
||||
"id": 2794723221669957
|
||||
},
|
||||
{
|
||||
"id": 2795846081054981
|
||||
},
|
||||
{
|
||||
"id": 2797170093527045
|
||||
},
|
||||
{
|
||||
"id": 2797169961897989
|
||||
},
|
||||
{
|
||||
"id": 2797459120852869
|
||||
},
|
||||
{
|
||||
"id": 2797370356928517
|
||||
},
|
||||
{
|
||||
"id": 2798636101421317
|
||||
},
|
||||
{
|
||||
"id": 2798802248288261
|
||||
},
|
||||
{
|
||||
"id": 2800105539552709
|
||||
},
|
||||
{
|
||||
"id": 2800050273584581
|
||||
},
|
||||
{
|
||||
"id": 2800462764542021
|
||||
},
|
||||
{
|
||||
"id": 2800460224120773
|
||||
},
|
||||
{
|
||||
"id": 2800454900648005
|
||||
},
|
||||
{
|
||||
"id": 2800448023513157
|
||||
},
|
||||
{
|
||||
"id": 2800442606962629
|
||||
},
|
||||
{
|
||||
"id": 2800433643243525
|
||||
},
|
||||
{
|
||||
"id": 2800430651182085
|
||||
},
|
||||
{
|
||||
"id": 2800428852725765
|
||||
},
|
||||
{
|
||||
"id": 2800423540131717
|
||||
},
|
||||
{
|
||||
"id": 2800421742806917
|
||||
},
|
||||
{
|
||||
"id": 2800420036233221
|
||||
},
|
||||
{
|
||||
"id": 2800410925254597
|
||||
},
|
||||
{
|
||||
"id": 2800410227705733
|
||||
},
|
||||
{
|
||||
"id": 2800392593475653
|
||||
},
|
||||
{
|
||||
"id": 2800388746184581
|
||||
},
|
||||
{
|
||||
"id": 2800388462479301
|
||||
},
|
||||
{
|
||||
"id": 2800383220615109
|
||||
},
|
||||
{
|
||||
"id": 2800379828701189
|
||||
},
|
||||
{
|
||||
"id": 2800379750893445
|
||||
},
|
||||
{
|
||||
"id": 2800379609925573
|
||||
},
|
||||
{
|
||||
"id": 2800378758907845
|
||||
},
|
||||
{
|
||||
"id": 2800378535118789
|
||||
},
|
||||
{
|
||||
"id": 2800371960039365
|
||||
},
|
||||
{
|
||||
"id": 2800363039770693
|
||||
},
|
||||
{
|
||||
"id": 2800360608303045
|
||||
},
|
||||
{
|
||||
"id": 2800353168738309
|
||||
},
|
||||
{
|
||||
"id": 2800353054263173
|
||||
},
|
||||
{
|
||||
"id": 2800348877604741
|
||||
},
|
||||
{
|
||||
"id": 2800348098742341
|
||||
},
|
||||
{
|
||||
"id": 2800343364913157
|
||||
},
|
||||
{
|
||||
"id": 2800328443021317
|
||||
},
|
||||
{
|
||||
"id": 2800320895223685
|
||||
},
|
||||
{
|
||||
"id": 2800316938717189
|
||||
},
|
||||
{
|
||||
"id": 2800311915366341
|
||||
},
|
||||
{
|
||||
"id": 2800301266225093
|
||||
},
|
||||
{
|
||||
"id": 2800272176744389
|
||||
},
|
||||
{
|
||||
"id": 2800265338046277
|
||||
},
|
||||
{
|
||||
"id": 2800262033213317
|
||||
}
|
||||
],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9751,
|
||||
"records_with_pk": 9751,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863815030085
|
||||
}
|
||||
],
|
||||
"pages": 49,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4415,
|
||||
"records_with_pk": 4415,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863815488837
|
||||
}
|
||||
],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 78,
|
||||
"records_with_pk": 78,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11733,
|
||||
"records_with_pk": 11733,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863811867973
|
||||
}
|
||||
],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16006,
|
||||
"records_with_pk": 16006,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 81,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 551,
|
||||
"records_with_pk": 551,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 936,
|
||||
"records_with_pk": 936,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 5,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2407,
|
||||
"records_with_pk": 2407,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863812408645
|
||||
}
|
||||
],
|
||||
"pages": 13,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 405,
|
||||
"records_with_pk": 405,
|
||||
"missing": 122,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 2800763348731909
|
||||
},
|
||||
{
|
||||
"id": 2800824057628741
|
||||
},
|
||||
{
|
||||
"id": 2801879399532933
|
||||
},
|
||||
{
|
||||
"id": 2802064357345349
|
||||
},
|
||||
{
|
||||
"id": 2802480974171333
|
||||
},
|
||||
{
|
||||
"id": 2802393839258885
|
||||
},
|
||||
{
|
||||
"id": 2802362619840581
|
||||
},
|
||||
{
|
||||
"id": 2803649174965445
|
||||
},
|
||||
{
|
||||
"id": 2803524215835845
|
||||
},
|
||||
{
|
||||
"id": 2803710575593541
|
||||
},
|
||||
{
|
||||
"id": 2803666932010565
|
||||
},
|
||||
{
|
||||
"id": 2803661545508421
|
||||
},
|
||||
{
|
||||
"id": 2804767340973317
|
||||
},
|
||||
{
|
||||
"id": 2805188835477573
|
||||
},
|
||||
{
|
||||
"id": 2805121951074373
|
||||
},
|
||||
{
|
||||
"id": 2805111552117957
|
||||
},
|
||||
{
|
||||
"id": 2805070136823365
|
||||
},
|
||||
{
|
||||
"id": 2806426635208517
|
||||
},
|
||||
{
|
||||
"id": 2806371278325381
|
||||
},
|
||||
{
|
||||
"id": 2806244951017285
|
||||
},
|
||||
{
|
||||
"id": 2806708031637381
|
||||
},
|
||||
{
|
||||
"id": 2806859908384389
|
||||
},
|
||||
{
|
||||
"id": 2806855233947525
|
||||
},
|
||||
{
|
||||
"id": 2807891556897349
|
||||
},
|
||||
{
|
||||
"id": 2807815241847557
|
||||
},
|
||||
{
|
||||
"id": 2807912803045957
|
||||
},
|
||||
{
|
||||
"id": 2807909672309637
|
||||
},
|
||||
{
|
||||
"id": 2808923174783109
|
||||
},
|
||||
{
|
||||
"id": 2809187656829061
|
||||
},
|
||||
{
|
||||
"id": 2809504839059909
|
||||
},
|
||||
{
|
||||
"id": 2809471788321221
|
||||
},
|
||||
{
|
||||
"id": 2809392429549765
|
||||
},
|
||||
{
|
||||
"id": 2810371281799621
|
||||
},
|
||||
{
|
||||
"id": 2810563362048453
|
||||
},
|
||||
{
|
||||
"id": 2810546930207237
|
||||
},
|
||||
{
|
||||
"id": 2810412839373574
|
||||
},
|
||||
{
|
||||
"id": 2810801124133381
|
||||
},
|
||||
{
|
||||
"id": 2810800364193989
|
||||
},
|
||||
{
|
||||
"id": 2811829130856901
|
||||
},
|
||||
{
|
||||
"id": 2812352420645317
|
||||
},
|
||||
{
|
||||
"id": 2812164953934597
|
||||
},
|
||||
{
|
||||
"id": 2812160863095557
|
||||
},
|
||||
{
|
||||
"id": 2813729032046789
|
||||
},
|
||||
{
|
||||
"id": 2814476335547909
|
||||
},
|
||||
{
|
||||
"id": 2815107864956613
|
||||
},
|
||||
{
|
||||
"id": 2816013068586693
|
||||
},
|
||||
{
|
||||
"id": 2816375660284933
|
||||
},
|
||||
{
|
||||
"id": 2816455124847557
|
||||
},
|
||||
{
|
||||
"id": 2817594853805701
|
||||
},
|
||||
{
|
||||
"id": 2818031067369029
|
||||
}
|
||||
],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8155,
|
||||
"records_with_pk": 8155,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 41,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28249,
|
||||
"records_with_pk": 28249,
|
||||
"missing": 128,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 2796087732473349
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796087732375045
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085792214469
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085791641029
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085792116165
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796085791542725
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589486533
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589027781
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082588552645
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587995589
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587520453
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587028933
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586570181
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586013125
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082585505221
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589584837
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082589126085
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082588650949
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082588110277
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587618757
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082587127237
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586668485
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082586111429
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082585603525
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584784325
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584292805
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583768517
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583260613
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082582752709
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584686021
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082584194501
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583653829
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082583162309
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796082582654405
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074872851973
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074872753669
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074436742661
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074436578821
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074059976133
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796074059894213
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073653128709
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073653030405
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073284095429
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796073283997125
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072902577605
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072902675909
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072030784965
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796072030703045
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796070969183685
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 2796070969298373
|
||||
}
|
||||
],
|
||||
"pages": 797,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1633,
|
||||
"records_with_pk": 1633,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22153,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 794,
|
||||
"skipped_missing_pk": 22153,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 5808,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T10:49:48.767932+08:00"
|
||||
}
|
||||
466
etl_billiards/reports/ods_gap_check_20260115_131821.json
Normal file
466
etl_billiards/reports/ods_gap_check_20260115_131821.json
Normal file
@@ -0,0 +1,466 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T12:26:36.334001+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 1,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 50880,
|
||||
"records_with_pk": 50880,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21514,
|
||||
"records_with_pk": 21514,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052076252251589
|
||||
}
|
||||
],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9752,
|
||||
"records_with_pk": 9752,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052128803980869
|
||||
},
|
||||
{
|
||||
"id": 3051863815030085
|
||||
}
|
||||
],
|
||||
"pages": 49,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4415,
|
||||
"records_with_pk": 4415,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863815488837
|
||||
}
|
||||
],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 78,
|
||||
"records_with_pk": 78,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11736,
|
||||
"records_with_pk": 11736,
|
||||
"missing": 4,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052137658025541
|
||||
},
|
||||
{
|
||||
"id": 3052128801408581
|
||||
},
|
||||
{
|
||||
"id": 3052076274943365
|
||||
},
|
||||
{
|
||||
"id": 3051863811867973
|
||||
}
|
||||
],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16013,
|
||||
"records_with_pk": 16013,
|
||||
"missing": 6,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052120802903429
|
||||
},
|
||||
{
|
||||
"id": 3052110365689221
|
||||
},
|
||||
{
|
||||
"id": 3052091273414213
|
||||
},
|
||||
{
|
||||
"id": 3052081711859141
|
||||
},
|
||||
{
|
||||
"id": 3052063649959365
|
||||
},
|
||||
{
|
||||
"id": 3052026368034565
|
||||
}
|
||||
],
|
||||
"pages": 81,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 551,
|
||||
"records_with_pk": 551,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 936,
|
||||
"records_with_pk": 936,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 5,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2407,
|
||||
"records_with_pk": 2407,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863812408645
|
||||
}
|
||||
],
|
||||
"pages": 13,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 405,
|
||||
"records_with_pk": 405,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 2832289312279685
|
||||
}
|
||||
],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8157,
|
||||
"records_with_pk": 8157,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052142428931461
|
||||
},
|
||||
{
|
||||
"id": 3052128804521541
|
||||
}
|
||||
],
|
||||
"pages": 41,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28255,
|
||||
"records_with_pk": 28255,
|
||||
"missing": 6,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3052076276811141
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052076276630917
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052093657615493
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052093657549957
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052090913623365
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052090913557829
|
||||
}
|
||||
],
|
||||
"pages": 798,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1633,
|
||||
"records_with_pk": 1633,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22154,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 22154,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 24,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T13:18:21.158800+08:00"
|
||||
}
|
||||
637
etl_billiards/reports/ods_gap_check_20260115_161345.json
Normal file
637
etl_billiards/reports/ods_gap_check_20260115_161345.json
Normal file
@@ -0,0 +1,637 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T15:20:49.891695+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 1,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 50880,
|
||||
"records_with_pk": 50880,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21529,
|
||||
"records_with_pk": 21529,
|
||||
"missing": 16,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052076252251589
|
||||
},
|
||||
{
|
||||
"id": 3052248841586181
|
||||
},
|
||||
{
|
||||
"id": 3052246644557253
|
||||
},
|
||||
{
|
||||
"id": 3052208895166021
|
||||
},
|
||||
{
|
||||
"id": 3052208828270085
|
||||
},
|
||||
{
|
||||
"id": 3052206795720133
|
||||
},
|
||||
{
|
||||
"id": 3052201188050501
|
||||
},
|
||||
{
|
||||
"id": 3052180955448837
|
||||
},
|
||||
{
|
||||
"id": 3052173364315589
|
||||
},
|
||||
{
|
||||
"id": 3052163277669957
|
||||
},
|
||||
{
|
||||
"id": 3052163174696517
|
||||
},
|
||||
{
|
||||
"id": 3052147004147205
|
||||
},
|
||||
{
|
||||
"id": 3052142531233349
|
||||
},
|
||||
{
|
||||
"id": 3052142411367877
|
||||
},
|
||||
{
|
||||
"id": 3052137630057989
|
||||
},
|
||||
{
|
||||
"id": 3052128780748293
|
||||
}
|
||||
],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9766,
|
||||
"records_with_pk": 9766,
|
||||
"missing": 16,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052300682069957
|
||||
},
|
||||
{
|
||||
"id": 3052294634882885
|
||||
},
|
||||
{
|
||||
"id": 3052248857986437
|
||||
},
|
||||
{
|
||||
"id": 3052246666462789
|
||||
},
|
||||
{
|
||||
"id": 3052208915236357
|
||||
},
|
||||
{
|
||||
"id": 3052208850044485
|
||||
},
|
||||
{
|
||||
"id": 3052201204237701
|
||||
},
|
||||
{
|
||||
"id": 3052180970997125
|
||||
},
|
||||
{
|
||||
"id": 3052173380224389
|
||||
},
|
||||
{
|
||||
"id": 3052163300967941
|
||||
},
|
||||
{
|
||||
"id": 3052163191883269
|
||||
},
|
||||
{
|
||||
"id": 3052147159025221
|
||||
},
|
||||
{
|
||||
"id": 3052142428374405
|
||||
},
|
||||
{
|
||||
"id": 3052137660286533
|
||||
},
|
||||
{
|
||||
"id": 3052128803980869
|
||||
},
|
||||
{
|
||||
"id": 3051863815030085
|
||||
}
|
||||
],
|
||||
"pages": 49,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4415,
|
||||
"records_with_pk": 4415,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863815488837
|
||||
}
|
||||
],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 78,
|
||||
"records_with_pk": 78,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11751,
|
||||
"records_with_pk": 11751,
|
||||
"missing": 19,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052300679546821
|
||||
},
|
||||
{
|
||||
"id": 3052294632818501
|
||||
},
|
||||
{
|
||||
"id": 3052248855692677
|
||||
},
|
||||
{
|
||||
"id": 3052246663988805
|
||||
},
|
||||
{
|
||||
"id": 3052208912549381
|
||||
},
|
||||
{
|
||||
"id": 3052208847406661
|
||||
},
|
||||
{
|
||||
"id": 3052206817199493
|
||||
},
|
||||
{
|
||||
"id": 3052201201649029
|
||||
},
|
||||
{
|
||||
"id": 3052180968310149
|
||||
},
|
||||
{
|
||||
"id": 3052173377963397
|
||||
},
|
||||
{
|
||||
"id": 3052163298772485
|
||||
},
|
||||
{
|
||||
"id": 3052163189163525
|
||||
},
|
||||
{
|
||||
"id": 3052147156256325
|
||||
},
|
||||
{
|
||||
"id": 3052142551893573
|
||||
},
|
||||
{
|
||||
"id": 3052142425949573
|
||||
},
|
||||
{
|
||||
"id": 3052137658025541
|
||||
},
|
||||
{
|
||||
"id": 3052128801408581
|
||||
},
|
||||
{
|
||||
"id": 3052076274943365
|
||||
},
|
||||
{
|
||||
"id": 3051863811867973
|
||||
}
|
||||
],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16036,
|
||||
"records_with_pk": 16036,
|
||||
"missing": 3,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052311888218053
|
||||
},
|
||||
{
|
||||
"id": 3052310918104901
|
||||
},
|
||||
{
|
||||
"id": 3052305891788677
|
||||
}
|
||||
],
|
||||
"pages": 81,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 551,
|
||||
"records_with_pk": 551,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 936,
|
||||
"records_with_pk": 936,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 5,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2407,
|
||||
"records_with_pk": 2407,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863812408645
|
||||
}
|
||||
],
|
||||
"pages": 13,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 405,
|
||||
"records_with_pk": 405,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 2832289312279685
|
||||
}
|
||||
],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8168,
|
||||
"records_with_pk": 8168,
|
||||
"missing": 13,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052300682807237
|
||||
},
|
||||
{
|
||||
"id": 3052294635407173
|
||||
},
|
||||
{
|
||||
"id": 3052248858707333
|
||||
},
|
||||
{
|
||||
"id": 3052246667150917
|
||||
},
|
||||
{
|
||||
"id": 3052208915777029
|
||||
},
|
||||
{
|
||||
"id": 3052208850716229
|
||||
},
|
||||
{
|
||||
"id": 3052201204778373
|
||||
},
|
||||
{
|
||||
"id": 3052180971554181
|
||||
},
|
||||
{
|
||||
"id": 3052173380846981
|
||||
},
|
||||
{
|
||||
"id": 3052163301492229
|
||||
},
|
||||
{
|
||||
"id": 3052163192456709
|
||||
},
|
||||
{
|
||||
"id": 3052142428931461
|
||||
},
|
||||
{
|
||||
"id": 3052128804521541
|
||||
}
|
||||
],
|
||||
"pages": 41,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28260,
|
||||
"records_with_pk": 28260,
|
||||
"missing": 11,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3052076276811141
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052076276630917
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052243917669893
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052222543218053
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052206819034501
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052142553990725
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052142553810501
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052093657615493
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052093657549957
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052090913623365
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052090913557829
|
||||
}
|
||||
],
|
||||
"pages": 798,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1633,
|
||||
"records_with_pk": 1633,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22169,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 795,
|
||||
"skipped_missing_pk": 22169,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 81,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T16:13:45.329617+08:00"
|
||||
}
|
||||
666
etl_billiards/reports/ods_gap_check_20260115_162208.json
Normal file
666
etl_billiards/reports/ods_gap_check_20260115_162208.json
Normal file
@@ -0,0 +1,666 @@
|
||||
{
|
||||
"start": "2026-01-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T16:15:44.950334+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 1,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 3776,
|
||||
"records_with_pk": 3776,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1607,
|
||||
"records_with_pk": 1607,
|
||||
"missing": 19,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052076252251589
|
||||
},
|
||||
{
|
||||
"id": 3052322370635653
|
||||
},
|
||||
{
|
||||
"id": 3052300651513733
|
||||
},
|
||||
{
|
||||
"id": 3052294618351365
|
||||
},
|
||||
{
|
||||
"id": 3052248841586181
|
||||
},
|
||||
{
|
||||
"id": 3052246644557253
|
||||
},
|
||||
{
|
||||
"id": 3052208895166021
|
||||
},
|
||||
{
|
||||
"id": 3052208828270085
|
||||
},
|
||||
{
|
||||
"id": 3052206795720133
|
||||
},
|
||||
{
|
||||
"id": 3052201188050501
|
||||
},
|
||||
{
|
||||
"id": 3052180955448837
|
||||
},
|
||||
{
|
||||
"id": 3052173364315589
|
||||
},
|
||||
{
|
||||
"id": 3052163277669957
|
||||
},
|
||||
{
|
||||
"id": 3052163174696517
|
||||
},
|
||||
{
|
||||
"id": 3052147004147205
|
||||
},
|
||||
{
|
||||
"id": 3052142531233349
|
||||
},
|
||||
{
|
||||
"id": 3052142411367877
|
||||
},
|
||||
{
|
||||
"id": 3052137630057989
|
||||
},
|
||||
{
|
||||
"id": 3052128780748293
|
||||
}
|
||||
],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9767,
|
||||
"records_with_pk": 9767,
|
||||
"missing": 17,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052322387674885
|
||||
},
|
||||
{
|
||||
"id": 3052300682069957
|
||||
},
|
||||
{
|
||||
"id": 3052294634882885
|
||||
},
|
||||
{
|
||||
"id": 3052248857986437
|
||||
},
|
||||
{
|
||||
"id": 3052246666462789
|
||||
},
|
||||
{
|
||||
"id": 3052208915236357
|
||||
},
|
||||
{
|
||||
"id": 3052208850044485
|
||||
},
|
||||
{
|
||||
"id": 3052201204237701
|
||||
},
|
||||
{
|
||||
"id": 3052180970997125
|
||||
},
|
||||
{
|
||||
"id": 3052173380224389
|
||||
},
|
||||
{
|
||||
"id": 3052163300967941
|
||||
},
|
||||
{
|
||||
"id": 3052163191883269
|
||||
},
|
||||
{
|
||||
"id": 3052147159025221
|
||||
},
|
||||
{
|
||||
"id": 3052142428374405
|
||||
},
|
||||
{
|
||||
"id": 3052137660286533
|
||||
},
|
||||
{
|
||||
"id": 3052128803980869
|
||||
},
|
||||
{
|
||||
"id": 3051863815030085
|
||||
}
|
||||
],
|
||||
"pages": 49,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 357,
|
||||
"records_with_pk": 357,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863815488837
|
||||
}
|
||||
],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 24,
|
||||
"records_with_pk": 24,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11752,
|
||||
"records_with_pk": 11752,
|
||||
"missing": 20,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052322385266437
|
||||
},
|
||||
{
|
||||
"id": 3052300679546821
|
||||
},
|
||||
{
|
||||
"id": 3052294632818501
|
||||
},
|
||||
{
|
||||
"id": 3052248855692677
|
||||
},
|
||||
{
|
||||
"id": 3052246663988805
|
||||
},
|
||||
{
|
||||
"id": 3052208912549381
|
||||
},
|
||||
{
|
||||
"id": 3052208847406661
|
||||
},
|
||||
{
|
||||
"id": 3052206817199493
|
||||
},
|
||||
{
|
||||
"id": 3052201201649029
|
||||
},
|
||||
{
|
||||
"id": 3052180968310149
|
||||
},
|
||||
{
|
||||
"id": 3052173377963397
|
||||
},
|
||||
{
|
||||
"id": 3052163298772485
|
||||
},
|
||||
{
|
||||
"id": 3052163189163525
|
||||
},
|
||||
{
|
||||
"id": 3052147156256325
|
||||
},
|
||||
{
|
||||
"id": 3052142551893573
|
||||
},
|
||||
{
|
||||
"id": 3052142425949573
|
||||
},
|
||||
{
|
||||
"id": 3052137658025541
|
||||
},
|
||||
{
|
||||
"id": 3052128801408581
|
||||
},
|
||||
{
|
||||
"id": 3052076274943365
|
||||
},
|
||||
{
|
||||
"id": 3051863811867973
|
||||
}
|
||||
],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16038,
|
||||
"records_with_pk": 16038,
|
||||
"missing": 5,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052337405658950
|
||||
},
|
||||
{
|
||||
"id": 3052337405658949
|
||||
},
|
||||
{
|
||||
"id": 3052311888218053
|
||||
},
|
||||
{
|
||||
"id": 3052310918104901
|
||||
},
|
||||
{
|
||||
"id": 3052305891788677
|
||||
}
|
||||
],
|
||||
"pages": 81,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 551,
|
||||
"records_with_pk": 551,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 936,
|
||||
"records_with_pk": 936,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 5,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2407,
|
||||
"records_with_pk": 2407,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3051863812408645
|
||||
}
|
||||
],
|
||||
"pages": 13,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 34,
|
||||
"records_with_pk": 34,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8175,
|
||||
"records_with_pk": 8175,
|
||||
"missing": 14,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052322388297477
|
||||
},
|
||||
{
|
||||
"id": 3052300682807237
|
||||
},
|
||||
{
|
||||
"id": 3052294635407173
|
||||
},
|
||||
{
|
||||
"id": 3052248858707333
|
||||
},
|
||||
{
|
||||
"id": 3052246667150917
|
||||
},
|
||||
{
|
||||
"id": 3052208915777029
|
||||
},
|
||||
{
|
||||
"id": 3052208850716229
|
||||
},
|
||||
{
|
||||
"id": 3052201204778373
|
||||
},
|
||||
{
|
||||
"id": 3052180971554181
|
||||
},
|
||||
{
|
||||
"id": 3052173380846981
|
||||
},
|
||||
{
|
||||
"id": 3052163301492229
|
||||
},
|
||||
{
|
||||
"id": 3052163192456709
|
||||
},
|
||||
{
|
||||
"id": 3052142428931461
|
||||
},
|
||||
{
|
||||
"id": 3052128804521541
|
||||
}
|
||||
],
|
||||
"pages": 41,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 2121,
|
||||
"records_with_pk": 2121,
|
||||
"missing": 14,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3052076276811141
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052076276630917
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052287917508421
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052287916263237
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052287914215237
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052243917669893
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052222543218053
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052206819034501
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052142553990725
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052142553810501
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052093657615493
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052093657549957
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052090913623365
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052090913557829
|
||||
}
|
||||
],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1633,
|
||||
"records_with_pk": 1633,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 1656,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 1656,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 91,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T16:22:08.953307+08:00"
|
||||
}
|
||||
793
etl_billiards/reports/ods_gap_check_20260115_185455.json
Normal file
793
etl_billiards/reports/ods_gap_check_20260115_185455.json
Normal file
@@ -0,0 +1,793 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T18:31:28.819229+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 1,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 12736,
|
||||
"records_with_pk": 12736,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 199,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21555,
|
||||
"records_with_pk": 21555,
|
||||
"missing": 20,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052456015579909
|
||||
},
|
||||
{
|
||||
"id": 3052454986812421
|
||||
},
|
||||
{
|
||||
"id": 3052451320171589
|
||||
},
|
||||
{
|
||||
"id": 3052450396441349
|
||||
},
|
||||
{
|
||||
"id": 3052435016272581
|
||||
},
|
||||
{
|
||||
"id": 3052434918165573
|
||||
},
|
||||
{
|
||||
"id": 3052434834279173
|
||||
},
|
||||
{
|
||||
"id": 3052424705084101
|
||||
},
|
||||
{
|
||||
"id": 3052424301988549
|
||||
},
|
||||
{
|
||||
"id": 3052422092426309
|
||||
},
|
||||
{
|
||||
"id": 3052422042291205
|
||||
},
|
||||
{
|
||||
"id": 3052416805587717
|
||||
},
|
||||
{
|
||||
"id": 3052416349539013
|
||||
},
|
||||
{
|
||||
"id": 3052414381706245
|
||||
},
|
||||
{
|
||||
"id": 3052405284129477
|
||||
},
|
||||
{
|
||||
"id": 3052372817201861
|
||||
},
|
||||
{
|
||||
"id": 3052370135074565
|
||||
},
|
||||
{
|
||||
"id": 3052365518669701
|
||||
},
|
||||
{
|
||||
"id": 3052360602781445
|
||||
},
|
||||
{
|
||||
"id": 3052348366227269
|
||||
}
|
||||
],
|
||||
"pages": 202,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9790,
|
||||
"records_with_pk": 9790,
|
||||
"missing": 13,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052456031243333
|
||||
},
|
||||
{
|
||||
"id": 3052455010716357
|
||||
},
|
||||
{
|
||||
"id": 3052450413448261
|
||||
},
|
||||
{
|
||||
"id": 3052435034573573
|
||||
},
|
||||
{
|
||||
"id": 3052434948410437
|
||||
},
|
||||
{
|
||||
"id": 3052434862345285
|
||||
},
|
||||
{
|
||||
"id": 3052424721894149
|
||||
},
|
||||
{
|
||||
"id": 3052422108547781
|
||||
},
|
||||
{
|
||||
"id": 3052422059330309
|
||||
},
|
||||
{
|
||||
"id": 3052416822201413
|
||||
},
|
||||
{
|
||||
"id": 3052416383371973
|
||||
},
|
||||
{
|
||||
"id": 3052414398089989
|
||||
},
|
||||
{
|
||||
"id": 3052405301316293
|
||||
}
|
||||
],
|
||||
"pages": 49,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4416,
|
||||
"records_with_pk": 4416,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052424373423109
|
||||
},
|
||||
{
|
||||
"id": 3051863815488837
|
||||
}
|
||||
],
|
||||
"pages": 199,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 7,
|
||||
"records_with_pk": 7,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 126,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 502 Server Error: Bad Gateway for url: https://pc.ficoo.vip/apiprod/admin/v1/AssistantPerformance/GetAbolitionAssistant"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 502 Server Error: Bad Gateway for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsSalesList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 502 Server Error: Bad Gateway for url: https://pc.ficoo.vip/apiprod/admin/v1/PayLog/GetPayLogListPage"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16058,
|
||||
"records_with_pk": 16058,
|
||||
"missing": 25,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052472789158981
|
||||
},
|
||||
{
|
||||
"id": 3052464759196741
|
||||
},
|
||||
{
|
||||
"id": 3052449213533253
|
||||
},
|
||||
{
|
||||
"id": 3052427220864005
|
||||
},
|
||||
{
|
||||
"id": 3052423892765381
|
||||
},
|
||||
{
|
||||
"id": 3052423497239621
|
||||
},
|
||||
{
|
||||
"id": 3052423330941957
|
||||
},
|
||||
{
|
||||
"id": 3052423193480197
|
||||
},
|
||||
{
|
||||
"id": 3052421983881925
|
||||
},
|
||||
{
|
||||
"id": 3052417450494725
|
||||
},
|
||||
{
|
||||
"id": 3052391048710853
|
||||
},
|
||||
{
|
||||
"id": 3052375480896197
|
||||
},
|
||||
{
|
||||
"id": 3052373085588229
|
||||
},
|
||||
{
|
||||
"id": 3052365403277253
|
||||
},
|
||||
{
|
||||
"id": 3052363066066885
|
||||
},
|
||||
{
|
||||
"id": 3052362943629253
|
||||
},
|
||||
{
|
||||
"id": 3052360961984261
|
||||
},
|
||||
{
|
||||
"id": 3052357851465478
|
||||
},
|
||||
{
|
||||
"id": 3052355338749893
|
||||
},
|
||||
{
|
||||
"id": 3052345004771077
|
||||
},
|
||||
{
|
||||
"id": 3052337405658950
|
||||
},
|
||||
{
|
||||
"id": 3052337405658949
|
||||
},
|
||||
{
|
||||
"id": 3052311888218053
|
||||
},
|
||||
{
|
||||
"id": 3052310918104901
|
||||
},
|
||||
{
|
||||
"id": 3052305891788677
|
||||
}
|
||||
],
|
||||
"pages": 81,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 551,
|
||||
"records_with_pk": 551,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 936,
|
||||
"records_with_pk": 936,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 5,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2408,
|
||||
"records_with_pk": 2408,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052424371244037
|
||||
},
|
||||
{
|
||||
"id": 3051863812408645
|
||||
}
|
||||
],
|
||||
"pages": 13,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 405,
|
||||
"records_with_pk": 405,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 2832289312279685
|
||||
}
|
||||
],
|
||||
"pages": 199,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8201,
|
||||
"records_with_pk": 8201,
|
||||
"missing": 46,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052482484392069
|
||||
},
|
||||
{
|
||||
"id": 3052481203670085
|
||||
},
|
||||
{
|
||||
"id": 3052476693515333
|
||||
},
|
||||
{
|
||||
"id": 3052456031882310
|
||||
},
|
||||
{
|
||||
"id": 3052456031882309
|
||||
},
|
||||
{
|
||||
"id": 3052455011551941
|
||||
},
|
||||
{
|
||||
"id": 3052450414201925
|
||||
},
|
||||
{
|
||||
"id": 3052435035147014
|
||||
},
|
||||
{
|
||||
"id": 3052435035147013
|
||||
},
|
||||
{
|
||||
"id": 3052434949147717
|
||||
},
|
||||
{
|
||||
"id": 3052434862902341
|
||||
},
|
||||
{
|
||||
"id": 3052424722467589
|
||||
},
|
||||
{
|
||||
"id": 3052422109268677
|
||||
},
|
||||
{
|
||||
"id": 3052422059936517
|
||||
},
|
||||
{
|
||||
"id": 3052416823086149
|
||||
},
|
||||
{
|
||||
"id": 3052416384174790
|
||||
},
|
||||
{
|
||||
"id": 3052416384174789
|
||||
},
|
||||
{
|
||||
"id": 3052414398679813
|
||||
},
|
||||
{
|
||||
"id": 3052405301840581
|
||||
},
|
||||
{
|
||||
"id": 3052372838681349
|
||||
},
|
||||
{
|
||||
"id": 3052370153048005
|
||||
},
|
||||
{
|
||||
"id": 3052365536249669
|
||||
},
|
||||
{
|
||||
"id": 3052360620558278
|
||||
},
|
||||
{
|
||||
"id": 3052360620558277
|
||||
},
|
||||
{
|
||||
"id": 3052348384495366
|
||||
},
|
||||
{
|
||||
"id": 3052348384495365
|
||||
},
|
||||
{
|
||||
"id": 3052339892700998
|
||||
},
|
||||
{
|
||||
"id": 3052339892700997
|
||||
},
|
||||
{
|
||||
"id": 3052339838781254
|
||||
},
|
||||
{
|
||||
"id": 3052339838781253
|
||||
},
|
||||
{
|
||||
"id": 3052339780601670
|
||||
},
|
||||
{
|
||||
"id": 3052339780601669
|
||||
},
|
||||
{
|
||||
"id": 3052322388297477
|
||||
},
|
||||
{
|
||||
"id": 3052300682807237
|
||||
},
|
||||
{
|
||||
"id": 3052294635407173
|
||||
},
|
||||
{
|
||||
"id": 3052248858707333
|
||||
},
|
||||
{
|
||||
"id": 3052246667150917
|
||||
},
|
||||
{
|
||||
"id": 3052208915777029
|
||||
},
|
||||
{
|
||||
"id": 3052208850716229
|
||||
},
|
||||
{
|
||||
"id": 3052201204778373
|
||||
},
|
||||
{
|
||||
"id": 3052180971554181
|
||||
},
|
||||
{
|
||||
"id": 3052173380846981
|
||||
},
|
||||
{
|
||||
"id": 3052163301492229
|
||||
},
|
||||
{
|
||||
"id": 3052163192456709
|
||||
},
|
||||
{
|
||||
"id": 3052142428931461
|
||||
},
|
||||
{
|
||||
"id": 3052128804521541
|
||||
}
|
||||
],
|
||||
"pages": 42,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28272,
|
||||
"records_with_pk": 28272,
|
||||
"missing": 23,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3052458794765381
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052451366964229
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052421675027205
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052421675502341
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052386208909957
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052386208975493
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052365069420485
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052363193403333
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052350941661061
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052287914215237
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052287916263237
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052287917508421
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052243917669893
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052222543218053
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052206819034501
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052142553990725
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052142553810501
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052093657549957
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052093657615493
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052090913557829
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052090913623365
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052076276811141
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052076276630917
|
||||
}
|
||||
],
|
||||
"pages": 238,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1634,
|
||||
"records_with_pk": 1634,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052476605991685
|
||||
}
|
||||
],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22193,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 203,
|
||||
"skipped_missing_pk": 22193,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 133,
|
||||
"total_errors": 3,
|
||||
"generated_at": "2026-01-15T18:54:55.925533+08:00"
|
||||
}
|
||||
933
etl_billiards/reports/ods_gap_check_20260115_190203.json
Normal file
933
etl_billiards/reports/ods_gap_check_20260115_190203.json
Normal file
@@ -0,0 +1,933 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T18:54:48.797928+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 448,
|
||||
"records_with_pk": 448,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21561,
|
||||
"records_with_pk": 21561,
|
||||
"missing": 26,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052486983602373
|
||||
},
|
||||
{
|
||||
"id": 3052486257037317
|
||||
},
|
||||
{
|
||||
"id": 3052482466484421
|
||||
},
|
||||
{
|
||||
"id": 3052481176259653
|
||||
},
|
||||
{
|
||||
"id": 3052476676655813
|
||||
},
|
||||
{
|
||||
"id": 3052476470053893
|
||||
},
|
||||
{
|
||||
"id": 3052456015579909
|
||||
},
|
||||
{
|
||||
"id": 3052454986812421
|
||||
},
|
||||
{
|
||||
"id": 3052451320171589
|
||||
},
|
||||
{
|
||||
"id": 3052450396441349
|
||||
},
|
||||
{
|
||||
"id": 3052435016272581
|
||||
},
|
||||
{
|
||||
"id": 3052434918165573
|
||||
},
|
||||
{
|
||||
"id": 3052434834279173
|
||||
},
|
||||
{
|
||||
"id": 3052424705084101
|
||||
},
|
||||
{
|
||||
"id": 3052424301988549
|
||||
},
|
||||
{
|
||||
"id": 3052422092426309
|
||||
},
|
||||
{
|
||||
"id": 3052422042291205
|
||||
},
|
||||
{
|
||||
"id": 3052416805587717
|
||||
},
|
||||
{
|
||||
"id": 3052416349539013
|
||||
},
|
||||
{
|
||||
"id": 3052414381706245
|
||||
},
|
||||
{
|
||||
"id": 3052405284129477
|
||||
},
|
||||
{
|
||||
"id": 3052372817201861
|
||||
},
|
||||
{
|
||||
"id": 3052370135074565
|
||||
},
|
||||
{
|
||||
"id": 3052365518669701
|
||||
},
|
||||
{
|
||||
"id": 3052360602781445
|
||||
},
|
||||
{
|
||||
"id": 3052348366227269
|
||||
}
|
||||
],
|
||||
"pages": 113,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9793,
|
||||
"records_with_pk": 9793,
|
||||
"missing": 18,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052486277812357
|
||||
},
|
||||
{
|
||||
"id": 3052482483671173
|
||||
},
|
||||
{
|
||||
"id": 3052481203047493
|
||||
},
|
||||
{
|
||||
"id": 3052476692925509
|
||||
},
|
||||
{
|
||||
"id": 3052476604599045
|
||||
},
|
||||
{
|
||||
"id": 3052456031243333
|
||||
},
|
||||
{
|
||||
"id": 3052455010716357
|
||||
},
|
||||
{
|
||||
"id": 3052450413448261
|
||||
},
|
||||
{
|
||||
"id": 3052435034573573
|
||||
},
|
||||
{
|
||||
"id": 3052434948410437
|
||||
},
|
||||
{
|
||||
"id": 3052434862345285
|
||||
},
|
||||
{
|
||||
"id": 3052424721894149
|
||||
},
|
||||
{
|
||||
"id": 3052422108547781
|
||||
},
|
||||
{
|
||||
"id": 3052422059330309
|
||||
},
|
||||
{
|
||||
"id": 3052416822201413
|
||||
},
|
||||
{
|
||||
"id": 3052416383371973
|
||||
},
|
||||
{
|
||||
"id": 3052414398089989
|
||||
},
|
||||
{
|
||||
"id": 3052405301316293
|
||||
}
|
||||
],
|
||||
"pages": 49,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4417,
|
||||
"records_with_pk": 4417,
|
||||
"missing": 3,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052476605221637
|
||||
},
|
||||
{
|
||||
"id": 3052424373423109
|
||||
},
|
||||
{
|
||||
"id": 3051863815488837
|
||||
}
|
||||
],
|
||||
"pages": 27,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 78,
|
||||
"records_with_pk": 78,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11782,
|
||||
"records_with_pk": 11782,
|
||||
"missing": 22,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052487098585157
|
||||
},
|
||||
{
|
||||
"id": 3052486275354757
|
||||
},
|
||||
{
|
||||
"id": 3052485074505861
|
||||
},
|
||||
{
|
||||
"id": 3052482481311877
|
||||
},
|
||||
{
|
||||
"id": 3052481200557125
|
||||
},
|
||||
{
|
||||
"id": 3052476690648133
|
||||
},
|
||||
{
|
||||
"id": 3052476601436933
|
||||
},
|
||||
{
|
||||
"id": 3052456028834885
|
||||
},
|
||||
{
|
||||
"id": 3052455008340677
|
||||
},
|
||||
{
|
||||
"id": 3052451365391365
|
||||
},
|
||||
{
|
||||
"id": 3052450411056197
|
||||
},
|
||||
{
|
||||
"id": 3052435032001285
|
||||
},
|
||||
{
|
||||
"id": 3052434945952837
|
||||
},
|
||||
{
|
||||
"id": 3052434860067909
|
||||
},
|
||||
{
|
||||
"id": 3052424719502085
|
||||
},
|
||||
{
|
||||
"id": 3052424370719749
|
||||
},
|
||||
{
|
||||
"id": 3052422106254021
|
||||
},
|
||||
{
|
||||
"id": 3052422056758021
|
||||
},
|
||||
{
|
||||
"id": 3052416819645509
|
||||
},
|
||||
{
|
||||
"id": 3052416380701381
|
||||
},
|
||||
{
|
||||
"id": 3052414395091717
|
||||
},
|
||||
{
|
||||
"id": 3052405299120837
|
||||
}
|
||||
],
|
||||
"pages": 59,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16059,
|
||||
"records_with_pk": 16059,
|
||||
"missing": 26,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052494575456325
|
||||
},
|
||||
{
|
||||
"id": 3052472789158981
|
||||
},
|
||||
{
|
||||
"id": 3052464759196741
|
||||
},
|
||||
{
|
||||
"id": 3052449213533253
|
||||
},
|
||||
{
|
||||
"id": 3052427220864005
|
||||
},
|
||||
{
|
||||
"id": 3052423892765381
|
||||
},
|
||||
{
|
||||
"id": 3052423497239621
|
||||
},
|
||||
{
|
||||
"id": 3052423330941957
|
||||
},
|
||||
{
|
||||
"id": 3052423193480197
|
||||
},
|
||||
{
|
||||
"id": 3052421983881925
|
||||
},
|
||||
{
|
||||
"id": 3052417450494725
|
||||
},
|
||||
{
|
||||
"id": 3052391048710853
|
||||
},
|
||||
{
|
||||
"id": 3052375480896197
|
||||
},
|
||||
{
|
||||
"id": 3052373085588229
|
||||
},
|
||||
{
|
||||
"id": 3052365403277253
|
||||
},
|
||||
{
|
||||
"id": 3052363066066885
|
||||
},
|
||||
{
|
||||
"id": 3052362943629253
|
||||
},
|
||||
{
|
||||
"id": 3052360961984261
|
||||
},
|
||||
{
|
||||
"id": 3052357851465478
|
||||
},
|
||||
{
|
||||
"id": 3052355338749893
|
||||
},
|
||||
{
|
||||
"id": 3052345004771077
|
||||
},
|
||||
{
|
||||
"id": 3052337405658950
|
||||
},
|
||||
{
|
||||
"id": 3052337405658949
|
||||
},
|
||||
{
|
||||
"id": 3052311888218053
|
||||
},
|
||||
{
|
||||
"id": 3052310918104901
|
||||
},
|
||||
{
|
||||
"id": 3052305891788677
|
||||
}
|
||||
],
|
||||
"pages": 81,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 551,
|
||||
"records_with_pk": 551,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 936,
|
||||
"records_with_pk": 936,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 5,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2411,
|
||||
"records_with_pk": 2411,
|
||||
"missing": 5,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052487099273285
|
||||
},
|
||||
{
|
||||
"id": 3052486652465285
|
||||
},
|
||||
{
|
||||
"id": 3052485075095685
|
||||
},
|
||||
{
|
||||
"id": 3052424371244037
|
||||
},
|
||||
{
|
||||
"id": 3051863812408645
|
||||
}
|
||||
],
|
||||
"pages": 13,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 405,
|
||||
"records_with_pk": 405,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 2832289312279685
|
||||
}
|
||||
],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8202,
|
||||
"records_with_pk": 8202,
|
||||
"missing": 47,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052486278779013
|
||||
},
|
||||
{
|
||||
"id": 3052482484392069
|
||||
},
|
||||
{
|
||||
"id": 3052481203670085
|
||||
},
|
||||
{
|
||||
"id": 3052476693515333
|
||||
},
|
||||
{
|
||||
"id": 3052456031882310
|
||||
},
|
||||
{
|
||||
"id": 3052456031882309
|
||||
},
|
||||
{
|
||||
"id": 3052455011551941
|
||||
},
|
||||
{
|
||||
"id": 3052450414201925
|
||||
},
|
||||
{
|
||||
"id": 3052435035147014
|
||||
},
|
||||
{
|
||||
"id": 3052435035147013
|
||||
},
|
||||
{
|
||||
"id": 3052434949147717
|
||||
},
|
||||
{
|
||||
"id": 3052434862902341
|
||||
},
|
||||
{
|
||||
"id": 3052424722467589
|
||||
},
|
||||
{
|
||||
"id": 3052422109268677
|
||||
},
|
||||
{
|
||||
"id": 3052422059936517
|
||||
},
|
||||
{
|
||||
"id": 3052416823086149
|
||||
},
|
||||
{
|
||||
"id": 3052416384174790
|
||||
},
|
||||
{
|
||||
"id": 3052416384174789
|
||||
},
|
||||
{
|
||||
"id": 3052414398679813
|
||||
},
|
||||
{
|
||||
"id": 3052405301840581
|
||||
},
|
||||
{
|
||||
"id": 3052372838681349
|
||||
},
|
||||
{
|
||||
"id": 3052370153048005
|
||||
},
|
||||
{
|
||||
"id": 3052365536249669
|
||||
},
|
||||
{
|
||||
"id": 3052360620558278
|
||||
},
|
||||
{
|
||||
"id": 3052360620558277
|
||||
},
|
||||
{
|
||||
"id": 3052348384495366
|
||||
},
|
||||
{
|
||||
"id": 3052348384495365
|
||||
},
|
||||
{
|
||||
"id": 3052339892700998
|
||||
},
|
||||
{
|
||||
"id": 3052339892700997
|
||||
},
|
||||
{
|
||||
"id": 3052339838781254
|
||||
},
|
||||
{
|
||||
"id": 3052339838781253
|
||||
},
|
||||
{
|
||||
"id": 3052339780601670
|
||||
},
|
||||
{
|
||||
"id": 3052339780601669
|
||||
},
|
||||
{
|
||||
"id": 3052322388297477
|
||||
},
|
||||
{
|
||||
"id": 3052300682807237
|
||||
},
|
||||
{
|
||||
"id": 3052294635407173
|
||||
},
|
||||
{
|
||||
"id": 3052248858707333
|
||||
},
|
||||
{
|
||||
"id": 3052246667150917
|
||||
},
|
||||
{
|
||||
"id": 3052208915777029
|
||||
},
|
||||
{
|
||||
"id": 3052208850716229
|
||||
},
|
||||
{
|
||||
"id": 3052201204778373
|
||||
},
|
||||
{
|
||||
"id": 3052180971554181
|
||||
},
|
||||
{
|
||||
"id": 3052173380846981
|
||||
},
|
||||
{
|
||||
"id": 3052163301492229
|
||||
},
|
||||
{
|
||||
"id": 3052163192456709
|
||||
},
|
||||
{
|
||||
"id": 3052142428931461
|
||||
},
|
||||
{
|
||||
"id": 3052128804521541
|
||||
}
|
||||
],
|
||||
"pages": 42,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28279,
|
||||
"records_with_pk": 28279,
|
||||
"missing": 30,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3052488613105733
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052486962778117
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052486963220485
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052486849335429
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052486782881797
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052485076586629
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052485076783237
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052458794765381
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052451366964229
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052421675027205
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052421675502341
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052386208909957
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052386208975493
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052365069420485
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052363193403333
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052350941661061
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052287914215237
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052287916263237
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052287917508421
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052243917669893
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052222543218053
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052206819034501
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052142553990725
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052142553810501
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052093657549957
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052093657615493
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052090913557829
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052090913623365
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052076276811141
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052076276630917
|
||||
}
|
||||
],
|
||||
"pages": 145,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1634,
|
||||
"records_with_pk": 1634,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052476605991685
|
||||
}
|
||||
],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22200,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 116,
|
||||
"skipped_missing_pk": 22200,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 179,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T19:02:03.451627+08:00"
|
||||
}
|
||||
402
etl_billiards/reports/ods_gap_check_20260115_222742.json
Normal file
402
etl_billiards/reports/ods_gap_check_20260115_222742.json
Normal file
@@ -0,0 +1,402 @@
|
||||
{
|
||||
"start": "2026-01-14T00:00:00+08:00",
|
||||
"end": "2026-01-15T22:24:35.980217+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 64,
|
||||
"records_with_pk": 64,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 219,
|
||||
"records_with_pk": 219,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052693070926021
|
||||
}
|
||||
],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9822,
|
||||
"records_with_pk": 9822,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052693089456133
|
||||
}
|
||||
],
|
||||
"pages": 50,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 63,
|
||||
"records_with_pk": 63,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1,
|
||||
"records_with_pk": 1,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052536228843589
|
||||
}
|
||||
],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11814,
|
||||
"records_with_pk": 11814,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 60,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16080,
|
||||
"records_with_pk": 16080,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 81,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 551,
|
||||
"records_with_pk": 551,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 936,
|
||||
"records_with_pk": 936,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 5,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2421,
|
||||
"records_with_pk": 2421,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 13,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 6,
|
||||
"records_with_pk": 6,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8223,
|
||||
"records_with_pk": 8223,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 42,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 258,
|
||||
"records_with_pk": 258,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3052693659717701
|
||||
}
|
||||
],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1640,
|
||||
"records_with_pk": 1640,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 227,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 227,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 4,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T22:27:42.389451+08:00"
|
||||
}
|
||||
409
etl_billiards/reports/ods_gap_check_20260115_223929.json
Normal file
409
etl_billiards/reports/ods_gap_check_20260115_223929.json
Normal file
@@ -0,0 +1,409 @@
|
||||
{
|
||||
"start": "2026-01-14T00:00:00+08:00",
|
||||
"end": "2026-01-15T22:34:02.852100+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 100,
|
||||
"chunk_size": 200,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 64,
|
||||
"records_with_pk": 64,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 219,
|
||||
"records_with_pk": 219,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9822,
|
||||
"records_with_pk": 9822,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 99,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 63,
|
||||
"records_with_pk": 63,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1,
|
||||
"records_with_pk": 1,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11814,
|
||||
"records_with_pk": 11814,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 119,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16080,
|
||||
"records_with_pk": 16080,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 161,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 551,
|
||||
"records_with_pk": 551,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 6,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 936,
|
||||
"records_with_pk": 936,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 10,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2421,
|
||||
"records_with_pk": 2421,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 25,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 6,
|
||||
"records_with_pk": 6,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8226,
|
||||
"records_with_pk": 8226,
|
||||
"missing": 3,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052709671030981
|
||||
},
|
||||
{
|
||||
"id": 3052709671014598
|
||||
},
|
||||
{
|
||||
"id": 3052709671014597
|
||||
}
|
||||
],
|
||||
"pages": 83,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 262,
|
||||
"records_with_pk": 262,
|
||||
"missing": 4,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3052703311204549
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052703310713029
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052703210262725
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052702889496709
|
||||
}
|
||||
],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1640,
|
||||
"records_with_pk": 1640,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 17,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 227,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 3,
|
||||
"skipped_missing_pk": 227,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 7,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T22:39:29.785863+08:00"
|
||||
}
|
||||
434
etl_billiards/reports/ods_gap_check_20260115_225414.json
Normal file
434
etl_billiards/reports/ods_gap_check_20260115_225414.json
Normal file
@@ -0,0 +1,434 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T22:41:52.530464+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 100,
|
||||
"chunk_size": 200,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 448,
|
||||
"records_with_pk": 448,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21593,
|
||||
"records_with_pk": 21593,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052709425844293
|
||||
}
|
||||
],
|
||||
"pages": 221,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9823,
|
||||
"records_with_pk": 9823,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052709670179013
|
||||
}
|
||||
],
|
||||
"pages": 99,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4425,
|
||||
"records_with_pk": 4425,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 48,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 79,
|
||||
"records_with_pk": 79,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11816,
|
||||
"records_with_pk": 11816,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052719648346117
|
||||
},
|
||||
{
|
||||
"id": 3052709667573957
|
||||
}
|
||||
],
|
||||
"pages": 119,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16080,
|
||||
"records_with_pk": 16080,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 161,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 551,
|
||||
"records_with_pk": 551,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 6,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 936,
|
||||
"records_with_pk": 936,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 10,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 800,
|
||||
"records_with_pk": 800,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052719648968709
|
||||
}
|
||||
],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 502 Server Error: Bad Gateway for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetMemberCardBalanceChange"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 0,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 1,
|
||||
"error_detail": "HTTPError: 502 Server Error: Bad Gateway for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetFormerRechargeSettleList"
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8226,
|
||||
"records_with_pk": 8226,
|
||||
"missing": 3,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052709671030981
|
||||
},
|
||||
{
|
||||
"id": 3052709671014598
|
||||
},
|
||||
{
|
||||
"id": 3052709671014597
|
||||
}
|
||||
],
|
||||
"pages": 83,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28353,
|
||||
"records_with_pk": 28353,
|
||||
"missing": 6,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3052711404949637
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052710332108805
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052703311204549
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052703310713029
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052703210262725
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052702889496709
|
||||
}
|
||||
],
|
||||
"pages": 287,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1640,
|
||||
"records_with_pk": 1640,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 17,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22233,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 226,
|
||||
"skipped_missing_pk": 22233,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 14,
|
||||
"total_errors": 2,
|
||||
"generated_at": "2026-01-15T22:54:14.091266+08:00"
|
||||
}
|
||||
57
etl_billiards/reports/ods_gap_check_20260115_225543.json
Normal file
57
etl_billiards/reports/ods_gap_check_20260115_225543.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T22:54:43.572531+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 100,
|
||||
"chunk_size": 200,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2422,
|
||||
"records_with_pk": 2422,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052719648968709
|
||||
}
|
||||
],
|
||||
"pages": 25,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 406,
|
||||
"records_with_pk": 406,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 2832289312279685
|
||||
}
|
||||
],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
}
|
||||
],
|
||||
"total_missing": 2,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T22:55:43.243233+08:00"
|
||||
}
|
||||
486
etl_billiards/reports/ods_gap_check_20260115_233027.json
Normal file
486
etl_billiards/reports/ods_gap_check_20260115_233027.json
Normal file
@@ -0,0 +1,486 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T23:17:27.865573+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 100,
|
||||
"chunk_size": 200,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 448,
|
||||
"records_with_pk": 448,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21598,
|
||||
"records_with_pk": 21598,
|
||||
"missing": 4,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052747511992453
|
||||
},
|
||||
{
|
||||
"id": 3052735906484229
|
||||
},
|
||||
{
|
||||
"id": 3052734153248901
|
||||
},
|
||||
{
|
||||
"id": 3052731804225541
|
||||
}
|
||||
],
|
||||
"pages": 221,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9827,
|
||||
"records_with_pk": 9827,
|
||||
"missing": 3,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052747812589701
|
||||
},
|
||||
{
|
||||
"id": 3052735966400645
|
||||
},
|
||||
{
|
||||
"id": 3052734201450565
|
||||
}
|
||||
],
|
||||
"pages": 99,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4428,
|
||||
"records_with_pk": 4428,
|
||||
"missing": 3,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052734201991237
|
||||
},
|
||||
{
|
||||
"id": 3052719654719493
|
||||
},
|
||||
{
|
||||
"id": 3052719654260741
|
||||
}
|
||||
],
|
||||
"pages": 48,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 79,
|
||||
"records_with_pk": 79,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11821,
|
||||
"records_with_pk": 11821,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052750319341573
|
||||
},
|
||||
{
|
||||
"id": 3052747810050181
|
||||
}
|
||||
],
|
||||
"pages": 119,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16083,
|
||||
"records_with_pk": 16083,
|
||||
"missing": 3,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052741608968197
|
||||
},
|
||||
{
|
||||
"id": 3052731064979526
|
||||
},
|
||||
{
|
||||
"id": 3052731064979525
|
||||
}
|
||||
],
|
||||
"pages": 161,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 552,
|
||||
"records_with_pk": 552,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052749341853317
|
||||
}
|
||||
],
|
||||
"pages": 6,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 938,
|
||||
"records_with_pk": 938,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052750402162821
|
||||
},
|
||||
{
|
||||
"id": 3052749343442565
|
||||
}
|
||||
],
|
||||
"pages": 10,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2426,
|
||||
"records_with_pk": 2426,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052750769868677
|
||||
},
|
||||
{
|
||||
"id": 3052750321078277
|
||||
}
|
||||
],
|
||||
"pages": 25,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 406,
|
||||
"records_with_pk": 406,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8226,
|
||||
"records_with_pk": 8226,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 83,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28362,
|
||||
"records_with_pk": 28362,
|
||||
"missing": 8,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3052749480874181
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052746155790533
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052731830964357
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052731830816901
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052731610599429
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052731549978821
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052731205636229
|
||||
},
|
||||
{
|
||||
"sitegoodsstockid": 3052731205144709
|
||||
}
|
||||
],
|
||||
"pages": 288,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1642,
|
||||
"records_with_pk": 1642,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052735967137925
|
||||
},
|
||||
{
|
||||
"id": 3052734202728517
|
||||
}
|
||||
],
|
||||
"pages": 17,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22238,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 226,
|
||||
"skipped_missing_pk": 22238,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 30,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T23:30:27.730183+08:00"
|
||||
}
|
||||
429
etl_billiards/reports/ods_gap_check_20260115_234709.json
Normal file
429
etl_billiards/reports/ods_gap_check_20260115_234709.json
Normal file
@@ -0,0 +1,429 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T23:34:39.434282+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 100,
|
||||
"chunk_size": 200,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 448,
|
||||
"records_with_pk": 448,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21600,
|
||||
"records_with_pk": 21600,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052765744894085
|
||||
},
|
||||
{
|
||||
"id": 3052764742504453
|
||||
}
|
||||
],
|
||||
"pages": 221,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9829,
|
||||
"records_with_pk": 9829,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052765763162309
|
||||
},
|
||||
{
|
||||
"id": 3052764761280581
|
||||
}
|
||||
],
|
||||
"pages": 99,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4428,
|
||||
"records_with_pk": 4428,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 48,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 79,
|
||||
"records_with_pk": 79,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11823,
|
||||
"records_with_pk": 11823,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052765760803013
|
||||
},
|
||||
{
|
||||
"id": 3052764758904901
|
||||
}
|
||||
],
|
||||
"pages": 119,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16086,
|
||||
"records_with_pk": 16086,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052771420229701
|
||||
},
|
||||
{
|
||||
"id": 3052767969185925
|
||||
}
|
||||
],
|
||||
"pages": 161,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 552,
|
||||
"records_with_pk": 552,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 6,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 938,
|
||||
"records_with_pk": 938,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 10,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2426,
|
||||
"records_with_pk": 2426,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 25,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 407,
|
||||
"records_with_pk": 407,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052750316949509
|
||||
}
|
||||
],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8228,
|
||||
"records_with_pk": 8228,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052765763981509
|
||||
},
|
||||
{
|
||||
"id": 3052764762116165
|
||||
}
|
||||
],
|
||||
"pages": 83,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28364,
|
||||
"records_with_pk": 28364,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3052765709897925
|
||||
}
|
||||
],
|
||||
"pages": 288,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1642,
|
||||
"records_with_pk": 1642,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 17,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22241,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 226,
|
||||
"skipped_missing_pk": 22241,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 12,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T23:47:09.386589+08:00"
|
||||
}
|
||||
446
etl_billiards/reports/ods_gap_check_20260115_235955.json
Normal file
446
etl_billiards/reports/ods_gap_check_20260115_235955.json
Normal file
@@ -0,0 +1,446 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T23:34:39+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 100,
|
||||
"chunk_size": 200,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 448,
|
||||
"records_with_pk": 448,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21600,
|
||||
"records_with_pk": 21600,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052765744894085
|
||||
},
|
||||
{
|
||||
"id": 3052764742504453
|
||||
}
|
||||
],
|
||||
"pages": 221,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9830,
|
||||
"records_with_pk": 9830,
|
||||
"missing": 3,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052778957967493
|
||||
},
|
||||
{
|
||||
"id": 3052765763162309
|
||||
},
|
||||
{
|
||||
"id": 3052764761280581
|
||||
}
|
||||
],
|
||||
"pages": 99,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4428,
|
||||
"records_with_pk": 4428,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 48,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 79,
|
||||
"records_with_pk": 79,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11824,
|
||||
"records_with_pk": 11824,
|
||||
"missing": 3,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052778953920645
|
||||
},
|
||||
{
|
||||
"id": 3052765760803013
|
||||
},
|
||||
{
|
||||
"id": 3052764758904901
|
||||
}
|
||||
],
|
||||
"pages": 119,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16086,
|
||||
"records_with_pk": 16086,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052771420229701
|
||||
},
|
||||
{
|
||||
"id": 3052767969185925
|
||||
}
|
||||
],
|
||||
"pages": 161,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 552,
|
||||
"records_with_pk": 552,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 6,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 938,
|
||||
"records_with_pk": 938,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 10,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2428,
|
||||
"records_with_pk": 2428,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052778954690693
|
||||
},
|
||||
{
|
||||
"id": 3052778954494085
|
||||
}
|
||||
],
|
||||
"pages": 25,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 407,
|
||||
"records_with_pk": 407,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052750316949509
|
||||
}
|
||||
],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8228,
|
||||
"records_with_pk": 8228,
|
||||
"missing": 2,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052765763981509
|
||||
},
|
||||
{
|
||||
"id": 3052764762116165
|
||||
}
|
||||
],
|
||||
"pages": 83,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28364,
|
||||
"records_with_pk": 28364,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"sitegoodsstockid": 3052765709897925
|
||||
}
|
||||
],
|
||||
"pages": 288,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1643,
|
||||
"records_with_pk": 1643,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052778959048837
|
||||
}
|
||||
],
|
||||
"pages": 17,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22241,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 226,
|
||||
"skipped_missing_pk": 22241,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 17,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-15T23:59:55.963574+08:00"
|
||||
}
|
||||
394
etl_billiards/reports/ods_gap_check_20260116_001716.json
Normal file
394
etl_billiards/reports/ods_gap_check_20260116_001716.json
Normal file
@@ -0,0 +1,394 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T23:34:39+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 100,
|
||||
"chunk_size": 200,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 448,
|
||||
"records_with_pk": 448,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21600,
|
||||
"records_with_pk": 21600,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 221,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9831,
|
||||
"records_with_pk": 9831,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 99,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4428,
|
||||
"records_with_pk": 4428,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 48,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 79,
|
||||
"records_with_pk": 79,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11826,
|
||||
"records_with_pk": 11826,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052800806752261
|
||||
}
|
||||
],
|
||||
"pages": 119,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16086,
|
||||
"records_with_pk": 16086,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 161,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 552,
|
||||
"records_with_pk": 552,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 6,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 938,
|
||||
"records_with_pk": 938,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 10,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2428,
|
||||
"records_with_pk": 2428,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 25,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 407,
|
||||
"records_with_pk": 407,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8229,
|
||||
"records_with_pk": 8229,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052800809783301
|
||||
}
|
||||
],
|
||||
"pages": 83,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28364,
|
||||
"records_with_pk": 28364,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 288,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1644,
|
||||
"records_with_pk": 1644,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 17,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22241,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 226,
|
||||
"skipped_missing_pk": 22241,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 2,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-16T00:17:16.884691+08:00"
|
||||
}
|
||||
390
etl_billiards/reports/ods_gap_check_20260116_003620.json
Normal file
390
etl_billiards/reports/ods_gap_check_20260116_003620.json
Normal file
@@ -0,0 +1,390 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T23:34:39+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 100,
|
||||
"chunk_size": 200,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 448,
|
||||
"records_with_pk": 448,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21600,
|
||||
"records_with_pk": 21600,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 221,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9832,
|
||||
"records_with_pk": 9832,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052800809242629
|
||||
}
|
||||
],
|
||||
"pages": 99,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4428,
|
||||
"records_with_pk": 4428,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 48,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 79,
|
||||
"records_with_pk": 79,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11826,
|
||||
"records_with_pk": 11826,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 119,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16086,
|
||||
"records_with_pk": 16086,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 161,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 552,
|
||||
"records_with_pk": 552,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 6,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 938,
|
||||
"records_with_pk": 938,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 10,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2428,
|
||||
"records_with_pk": 2428,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 25,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 407,
|
||||
"records_with_pk": 407,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8229,
|
||||
"records_with_pk": 8229,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 83,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28364,
|
||||
"records_with_pk": 28364,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 288,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1644,
|
||||
"records_with_pk": 1644,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 17,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22241,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 226,
|
||||
"skipped_missing_pk": 22241,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 1,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-16T00:36:20.647772+08:00"
|
||||
}
|
||||
426
etl_billiards/reports/ods_gap_check_20260116_005452.json
Normal file
426
etl_billiards/reports/ods_gap_check_20260116_005452.json
Normal file
@@ -0,0 +1,426 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T23:34:39+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 100,
|
||||
"chunk_size": 200,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 448,
|
||||
"records_with_pk": 448,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21600,
|
||||
"records_with_pk": 21600,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 221,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9837,
|
||||
"records_with_pk": 9837,
|
||||
"missing": 4,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052832498323653
|
||||
},
|
||||
{
|
||||
"id": 3052831407345733
|
||||
},
|
||||
{
|
||||
"id": 3052831407362117
|
||||
},
|
||||
{
|
||||
"id": 3052830659924037
|
||||
}
|
||||
],
|
||||
"pages": 99,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4428,
|
||||
"records_with_pk": 4428,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 48,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 79,
|
||||
"records_with_pk": 79,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11830,
|
||||
"records_with_pk": 11830,
|
||||
"missing": 4,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052832495997125
|
||||
},
|
||||
{
|
||||
"id": 3052831403331653
|
||||
},
|
||||
{
|
||||
"id": 3052830657482821
|
||||
},
|
||||
{
|
||||
"id": 3052823016361989
|
||||
}
|
||||
],
|
||||
"pages": 119,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16086,
|
||||
"records_with_pk": 16086,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 161,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 552,
|
||||
"records_with_pk": 552,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 6,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 938,
|
||||
"records_with_pk": 938,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 10,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2428,
|
||||
"records_with_pk": 2428,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 25,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 407,
|
||||
"records_with_pk": 407,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8232,
|
||||
"records_with_pk": 8232,
|
||||
"missing": 3,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052832498929862
|
||||
},
|
||||
{
|
||||
"id": 3052832498929861
|
||||
},
|
||||
{
|
||||
"id": 3052830660579397
|
||||
}
|
||||
],
|
||||
"pages": 83,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28364,
|
||||
"records_with_pk": 28364,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 288,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1645,
|
||||
"records_with_pk": 1645,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052831408820293
|
||||
}
|
||||
],
|
||||
"pages": 17,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22241,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 226,
|
||||
"skipped_missing_pk": 22241,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 12,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-16T00:54:52.208868+08:00"
|
||||
}
|
||||
394
etl_billiards/reports/ods_gap_check_20260116_020724.json
Normal file
394
etl_billiards/reports/ods_gap_check_20260116_020724.json
Normal file
@@ -0,0 +1,394 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-15T23:34:39+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 100,
|
||||
"chunk_size": 200,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ACCOUNT",
|
||||
"table": "billiards_ods.assistant_accounts_master",
|
||||
"endpoint": "/PersonnelManagement/SearchAssistantInfo",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 448,
|
||||
"records_with_pk": 448,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_RECORDS",
|
||||
"table": "billiards_ods.settlement_records",
|
||||
"endpoint": "/Site/GetAllOrderSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 21600,
|
||||
"records_with_pk": 21600,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 221,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9841,
|
||||
"records_with_pk": 9841,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 99,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_LEDGER",
|
||||
"table": "billiards_ods.assistant_service_records",
|
||||
"endpoint": "/AssistantPerformance/GetOrderAssistantDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 4428,
|
||||
"records_with_pk": 4428,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 48,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_ASSISTANT_ABOLISH",
|
||||
"table": "billiards_ods.assistant_cancellation_records",
|
||||
"endpoint": "/AssistantPerformance/GetAbolitionAssistant",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 79,
|
||||
"records_with_pk": 79,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 7,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS_SALES",
|
||||
"table": "billiards_ods.store_goods_sales_records",
|
||||
"endpoint": "/TenantGoods/GetGoodsSalesList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 0,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11835,
|
||||
"records_with_pk": 11835,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052908806459589
|
||||
}
|
||||
],
|
||||
"pages": 119,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_REFUND",
|
||||
"table": "billiards_ods.refund_transactions",
|
||||
"endpoint": "/Order/GetRefundPayLogList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 36,
|
||||
"records_with_pk": 36,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PLATFORM_COUPON",
|
||||
"table": "billiards_ods.platform_coupon_redemption_records",
|
||||
"endpoint": "/Promotion/GetOfflineCouponConsumePageList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 16086,
|
||||
"records_with_pk": 16086,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 161,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER",
|
||||
"table": "billiards_ods.member_profiles",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 552,
|
||||
"records_with_pk": 552,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 6,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_CARD",
|
||||
"table": "billiards_ods.member_stored_value_cards",
|
||||
"endpoint": "/MemberProfile/GetTenantMemberCardList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 938,
|
||||
"records_with_pk": 938,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 10,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_MEMBER_BALANCE",
|
||||
"table": "billiards_ods.member_balance_changes",
|
||||
"endpoint": "/MemberProfile/GetMemberCardBalanceChange",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 2429,
|
||||
"records_with_pk": 2429,
|
||||
"missing": 1,
|
||||
"missing_samples": [
|
||||
{
|
||||
"id": 3052862467248261
|
||||
}
|
||||
],
|
||||
"pages": 25,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_RECHARGE_SETTLE",
|
||||
"table": "billiards_ods.recharge_settlements",
|
||||
"endpoint": "/Site/GetRechargeSettleList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 407,
|
||||
"records_with_pk": 407,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 8,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_PACKAGE",
|
||||
"table": "billiards_ods.group_buy_packages",
|
||||
"endpoint": "/PackageCoupon/QueryPackageCouponList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 18,
|
||||
"records_with_pk": 18,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8234,
|
||||
"records_with_pk": 8234,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 83,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_STOCK",
|
||||
"table": "billiards_ods.goods_stock_summary",
|
||||
"endpoint": "/TenantGoods/GetGoodsStockReport",
|
||||
"pk_columns": [
|
||||
"sitegoodsid"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_INVENTORY_CHANGE",
|
||||
"table": "billiards_ods.goods_stock_movements",
|
||||
"endpoint": "/GoodsStockManage/QueryGoodsOutboundReceipt",
|
||||
"pk_columns": [
|
||||
"sitegoodsstockid"
|
||||
],
|
||||
"records": 28364,
|
||||
"records_with_pk": 28364,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 288,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLES",
|
||||
"table": "billiards_ods.site_tables_master",
|
||||
"endpoint": "/Table/GetSiteTables",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 74,
|
||||
"records_with_pk": 74,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GOODS_CATEGORY",
|
||||
"table": "billiards_ods.stock_goods_category_tree",
|
||||
"endpoint": "/TenantGoodsCategory/QueryPrimarySecondaryCategory",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9,
|
||||
"records_with_pk": 9,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 1,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_STORE_GOODS",
|
||||
"table": "billiards_ods.store_goods_master",
|
||||
"endpoint": "/TenantGoods/GetGoodsInventoryList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 169,
|
||||
"records_with_pk": 169,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1646,
|
||||
"records_with_pk": 1646,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 17,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TENANT_GOODS",
|
||||
"table": "billiards_ods.tenant_goods_master",
|
||||
"endpoint": "/TenantGoods/QueryTenantGoods",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 170,
|
||||
"records_with_pk": 170,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 2,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_SETTLEMENT_TICKET",
|
||||
"table": "billiards_ods.settlement_ticket_details",
|
||||
"endpoint": "/Order/GetOrderSettleTicketNew",
|
||||
"pk_columns": [
|
||||
"ordersettleid"
|
||||
],
|
||||
"records": 22241,
|
||||
"records_with_pk": 0,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 226,
|
||||
"skipped_missing_pk": 22241,
|
||||
"errors": 0,
|
||||
"error_detail": null,
|
||||
"source_endpoint": "/PayLog/GetPayLogListPage"
|
||||
}
|
||||
],
|
||||
"total_missing": 2,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-16T02:07:24.368217+08:00"
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"start": "2025-07-01T00:00:00+08:00",
|
||||
"end": "2026-01-16T02:39:19.009379+08:00",
|
||||
"cutoff": null,
|
||||
"window_days": 30,
|
||||
"window_hours": 0,
|
||||
"page_size": 200,
|
||||
"chunk_size": 500,
|
||||
"sample_limit": 50,
|
||||
"store_id": 2790685415443269,
|
||||
"base_url": "https://pc.ficoo.vip/apiprod/admin/v1/",
|
||||
"results": [
|
||||
{
|
||||
"task_code": "ODS_TABLE_USE",
|
||||
"table": "billiards_ods.table_fee_transactions",
|
||||
"endpoint": "/Site/GetSiteTableOrderDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 9842,
|
||||
"records_with_pk": 9842,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 50,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_PAYMENT",
|
||||
"table": "billiards_ods.payment_transactions",
|
||||
"endpoint": "/PayLog/GetPayLogListPage",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 11836,
|
||||
"records_with_pk": 11836,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 60,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_GROUP_BUY_REDEMPTION",
|
||||
"table": "billiards_ods.group_buy_redemption_records",
|
||||
"endpoint": "/Site/GetSiteTableUseDetails",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 8234,
|
||||
"records_with_pk": 8234,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 42,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
},
|
||||
{
|
||||
"task_code": "ODS_TABLE_FEE_DISCOUNT",
|
||||
"table": "billiards_ods.table_fee_discount_records",
|
||||
"endpoint": "/Site/GetTaiFeeAdjustList",
|
||||
"pk_columns": [
|
||||
"id"
|
||||
],
|
||||
"records": 1646,
|
||||
"records_with_pk": 1646,
|
||||
"missing": 0,
|
||||
"missing_samples": [],
|
||||
"pages": 9,
|
||||
"skipped_missing_pk": 0,
|
||||
"errors": 0,
|
||||
"error_detail": null
|
||||
}
|
||||
],
|
||||
"total_missing": 0,
|
||||
"total_errors": 0,
|
||||
"generated_at": "2026-01-16T02:40:30.650075+08:00"
|
||||
}
|
||||
Reference in New Issue
Block a user