ODS 完成

This commit is contained in:
Neo
2025-11-30 07:19:05 +08:00
parent b9b050bb5d
commit a6ad343092
81 changed files with 15695 additions and 227180 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,647 +0,0 @@
[
{
"data": {
"total": 15,
"abolitionAssistants": [
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-11-09 19:23:29",
"id": 2957675849518789,
"siteId": 2790685415443269,
"tableAreaId": 2791963816579205,
"tableId": 2793016660660357,
"tableArea": "C区",
"tableName": "C1",
"assistantOn": "27",
"assistantName": "泡芙",
"pdChargeMinutes": 214,
"assistantAbolishAmount": 5.83,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-11-06 17:42:09",
"id": 2953329501898373,
"siteId": 2790685415443269,
"tableAreaId": 2802006170324037,
"tableId": 2851642357976581,
"tableArea": "补时长",
"tableName": "补时长5",
"assistantOn": "23",
"assistantName": "婉婉",
"pdChargeMinutes": 10800,
"assistantAbolishAmount": 570.0,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-11-06 17:42:09",
"id": 2953329502357125,
"siteId": 2790685415443269,
"tableAreaId": 2802006170324037,
"tableId": 2851642357976581,
"tableArea": "补时长",
"tableName": "补时长5",
"assistantOn": "52",
"assistantName": "小柔",
"pdChargeMinutes": 10800,
"assistantAbolishAmount": 570.0,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-30 01:17:22",
"id": 2942452375932869,
"siteId": 2790685415443269,
"tableAreaId": 2791963825803397,
"tableId": 2793018776604805,
"tableArea": "VIP包厢",
"tableName": "VIP1",
"assistantOn": "2",
"assistantName": "佳怡",
"pdChargeMinutes": 0,
"assistantAbolishAmount": 0.0,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-29 06:57:22",
"id": 2941371032964997,
"siteId": 2790685415443269,
"tableAreaId": 2791963848527941,
"tableId": 2793021451292741,
"tableArea": "666",
"tableName": "董事办",
"assistantOn": "4",
"assistantName": "璇子",
"pdChargeMinutes": 0,
"assistantAbolishAmount": 0.0,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-28 02:13:18",
"id": 2939676194180229,
"siteId": 2790685415443269,
"tableAreaId": 2791963887030341,
"tableId": 2793023960551493,
"tableArea": "麻将房",
"tableName": "1",
"assistantOn": "2",
"assistantName": "佳怡",
"pdChargeMinutes": 3602,
"assistantAbolishAmount": 108.06,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-26 21:06:37",
"id": 2937959143262725,
"siteId": 2790685415443269,
"tableAreaId": 2791963855982661,
"tableId": 2793022145302597,
"tableArea": "K包",
"tableName": "888",
"assistantOn": "16",
"assistantName": "周周",
"pdChargeMinutes": 0,
"assistantAbolishAmount": 0.0,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-25 21:36:22",
"id": 2936572806285765,
"siteId": 2790685415443269,
"tableAreaId": 2791963816579205,
"tableId": 2793017278451845,
"tableArea": "C区",
"tableName": "C2",
"assistantOn": "4",
"assistantName": "璇子",
"pdChargeMinutes": 0,
"assistantAbolishAmount": 0.0,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-23 19:05:48",
"id": 2933593641256581,
"siteId": 2790685415443269,
"tableAreaId": 2791963807682693,
"tableId": 2793012902318213,
"tableArea": "B区",
"tableName": "B9",
"assistantOn": "16",
"assistantName": "周周",
"pdChargeMinutes": 3600,
"assistantAbolishAmount": 190.0,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-18 20:25:50",
"id": 2926594431305093,
"siteId": 2790685415443269,
"tableAreaId": 2791963794329671,
"tableId": 2793001904918661,
"tableArea": "A区",
"tableName": "A4",
"assistantOn": "15",
"assistantName": "七七",
"pdChargeMinutes": 2379,
"assistantAbolishAmount": 71.37,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-14 14:20:32",
"id": 2920573007709573,
"siteId": 2790685415443269,
"tableAreaId": 2791963855982661,
"tableId": 2793022145302597,
"tableArea": "K包",
"tableName": "888",
"assistantOn": "9",
"assistantName": "球球",
"pdChargeMinutes": 14400,
"assistantAbolishAmount": 392.0,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-03 01:21:59",
"id": 2904236313234373,
"siteId": 2790685415443269,
"tableAreaId": 2791963848527941,
"tableId": 2793020955840645,
"tableArea": "666",
"tableName": "666",
"assistantOn": "9",
"assistantName": "球球",
"pdChargeMinutes": 0,
"assistantAbolishAmount": 0.0,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-01 00:27:29",
"id": 2901351579143365,
"siteId": 2790685415443269,
"tableAreaId": 2791963855982661,
"tableId": 2793022145302597,
"tableArea": "K包",
"tableName": "888",
"assistantOn": "99",
"assistantName": "Amy",
"pdChargeMinutes": 10605,
"assistantAbolishAmount": 465.44,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-01 00:27:29",
"id": 2901351578864837,
"siteId": 2790685415443269,
"tableAreaId": 2791963855982661,
"tableId": 2793022145302597,
"tableArea": "K包",
"tableName": "888",
"assistantOn": "4",
"assistantName": "璇子",
"pdChargeMinutes": 10608,
"assistantAbolishAmount": 318.24,
"trashReason": ""
},
{
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 1,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"createTime": "2025-10-01 00:27:29",
"id": 2901351578602693,
"siteId": 2790685415443269,
"tableAreaId": 2791963855982661,
"tableId": 2793022145302597,
"tableArea": "K包",
"tableName": "888",
"assistantOn": "2",
"assistantName": "佳怡",
"pdChargeMinutes": 10611,
"assistantAbolishAmount": 318.33,
"trashReason": ""
}
]
},
"code": 0
},
{
"data": {
"total": 15,
"abolitionAssistants": []
},
"code": 0
}
]

View File

@@ -1,673 +0,0 @@
[
{
"tenantName": "朗朗桌球",
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 2,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"id": 2955202296416389,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"pay_sn": 0,
"pay_amount": -5000.0,
"pay_status": 2,
"pay_time": "2025-11-08 01:27:16",
"create_time": "2025-11-08 01:27:16",
"relate_type": 5,
"relate_id": 2955078219057349,
"is_revoke": 0,
"is_delete": 0,
"online_pay_channel": 0,
"payment_method": 4,
"balance_frozen_amount": 0.0,
"card_frozen_amount": 0.0,
"member_id": 0,
"member_card_id": 0,
"round_amount": 0.0,
"online_pay_type": 0,
"action_type": 2,
"refund_amount": 0.0,
"cashier_point_id": 0,
"operator_id": 0,
"pay_terminal": 1,
"pay_config_id": 0,
"channel_payer_id": "",
"channel_pay_no": "",
"check_status": 1,
"channel_fee": 0.0
},
{
"tenantName": "朗朗桌球",
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 2,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"id": 2955171790194821,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"pay_sn": 0,
"pay_amount": -10000.0,
"pay_status": 2,
"pay_time": "2025-11-08 00:56:14",
"create_time": "2025-11-08 00:56:14",
"relate_type": 5,
"relate_id": 2955153380001861,
"is_revoke": 0,
"is_delete": 0,
"online_pay_channel": 0,
"payment_method": 4,
"balance_frozen_amount": 0.0,
"card_frozen_amount": 0.0,
"member_id": 0,
"member_card_id": 0,
"round_amount": 0.0,
"online_pay_type": 0,
"action_type": 2,
"refund_amount": 0.0,
"cashier_point_id": 0,
"operator_id": 0,
"pay_terminal": 1,
"pay_config_id": 0,
"channel_payer_id": "",
"channel_pay_no": "",
"check_status": 1,
"channel_fee": 0.0
},
{
"tenantName": "朗朗桌球",
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 2,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"id": 2951883030513413,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"pay_sn": 0,
"pay_amount": -12.0,
"pay_status": 2,
"pay_time": "2025-11-05 17:10:44",
"create_time": "2025-11-05 17:10:44",
"relate_type": 2,
"relate_id": 2951881496577861,
"is_revoke": 0,
"is_delete": 0,
"online_pay_channel": 0,
"payment_method": 4,
"balance_frozen_amount": 0.0,
"card_frozen_amount": 0.0,
"member_id": 0,
"member_card_id": 0,
"round_amount": 0.0,
"online_pay_type": 0,
"action_type": 2,
"refund_amount": 0.0,
"cashier_point_id": 0,
"operator_id": 0,
"pay_terminal": 1,
"pay_config_id": 0,
"channel_payer_id": "",
"channel_pay_no": "",
"check_status": 1,
"channel_fee": 0.0
},
{
"tenantName": "朗朗桌球",
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 2,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"id": 2948959062542597,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"pay_sn": 0,
"pay_amount": -65.0,
"pay_status": 2,
"pay_time": "2025-11-03 15:36:19",
"create_time": "2025-11-03 15:36:19",
"relate_type": 2,
"relate_id": 2948934289967557,
"is_revoke": 0,
"is_delete": 0,
"online_pay_channel": 0,
"payment_method": 4,
"balance_frozen_amount": 0.0,
"card_frozen_amount": 0.0,
"member_id": 0,
"member_card_id": 0,
"round_amount": 0.0,
"online_pay_type": 0,
"action_type": 2,
"refund_amount": 0.0,
"cashier_point_id": 0,
"operator_id": 0,
"pay_terminal": 1,
"pay_config_id": 0,
"channel_payer_id": "",
"channel_pay_no": "",
"check_status": 1,
"channel_fee": 0.0
},
{
"tenantName": "朗朗桌球",
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 2,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"id": 2948630468005509,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"pay_sn": 0,
"pay_amount": -88.33,
"pay_status": 2,
"pay_time": "2025-11-03 10:02:03",
"create_time": "2025-11-03 10:02:03",
"relate_type": 2,
"relate_id": 2948246513454661,
"is_revoke": 0,
"is_delete": 0,
"online_pay_channel": 0,
"payment_method": 4,
"balance_frozen_amount": 0.0,
"card_frozen_amount": 0.0,
"member_id": 0,
"member_card_id": 0,
"round_amount": 0.0,
"online_pay_type": 0,
"action_type": 2,
"refund_amount": 0.0,
"cashier_point_id": 0,
"operator_id": 0,
"pay_terminal": 1,
"pay_config_id": 0,
"channel_payer_id": "",
"channel_pay_no": "",
"check_status": 1,
"channel_fee": 0.0
},
{
"tenantName": "朗朗桌球",
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 2,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"id": 2948269239095045,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"pay_sn": 0,
"pay_amount": -0.67,
"pay_status": 2,
"pay_time": "2025-11-03 03:54:36",
"create_time": "2025-11-03 03:54:36",
"relate_type": 2,
"relate_id": 2948246513454661,
"is_revoke": 0,
"is_delete": 0,
"online_pay_channel": 0,
"payment_method": 4,
"balance_frozen_amount": 0.0,
"card_frozen_amount": 0.0,
"member_id": 0,
"member_card_id": 0,
"round_amount": 0.0,
"online_pay_type": 0,
"action_type": 2,
"refund_amount": 0.0,
"cashier_point_id": 0,
"operator_id": 0,
"pay_terminal": 1,
"pay_config_id": 0,
"channel_payer_id": "",
"channel_pay_no": "",
"check_status": 1,
"channel_fee": 0.0
},
{
"tenantName": "朗朗桌球",
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 2,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"id": 2944743812581445,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"pay_sn": 0,
"pay_amount": -44000.0,
"pay_status": 2,
"pay_time": "2025-10-31 16:08:21",
"create_time": "2025-10-31 16:08:21",
"relate_type": 5,
"relate_id": 2944743413958789,
"is_revoke": 0,
"is_delete": 0,
"online_pay_channel": 0,
"payment_method": 4,
"balance_frozen_amount": 0.0,
"card_frozen_amount": 0.0,
"member_id": 0,
"member_card_id": 0,
"round_amount": 0.0,
"online_pay_type": 0,
"action_type": 2,
"refund_amount": 0.0,
"cashier_point_id": 0,
"operator_id": 0,
"pay_terminal": 1,
"pay_config_id": 0,
"channel_payer_id": "",
"channel_pay_no": "",
"check_status": 1,
"channel_fee": 0.0
},
{
"tenantName": "朗朗桌球",
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 2,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"id": 2931109065131653,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"pay_sn": 0,
"pay_amount": -10.0,
"pay_status": 2,
"pay_time": "2025-10-22 00:58:22",
"create_time": "2025-10-22 00:58:22",
"relate_type": 2,
"relate_id": 2931108522378885,
"is_revoke": 0,
"is_delete": 0,
"online_pay_channel": 0,
"payment_method": 4,
"balance_frozen_amount": 0.0,
"card_frozen_amount": 0.0,
"member_id": 0,
"member_card_id": 0,
"round_amount": 0.0,
"online_pay_type": 0,
"action_type": 2,
"refund_amount": 0.0,
"cashier_point_id": 0,
"operator_id": 0,
"pay_terminal": 1,
"pay_config_id": 0,
"channel_payer_id": "",
"channel_pay_no": "",
"check_status": 1,
"channel_fee": 0.0
},
{
"tenantName": "朗朗桌球",
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 2,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"id": 2921195994465669,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"pay_sn": 0,
"pay_amount": -2.0,
"pay_status": 2,
"pay_time": "2025-10-15 00:54:16",
"create_time": "2025-10-15 00:54:16",
"relate_type": 2,
"relate_id": 2920440691344901,
"is_revoke": 0,
"is_delete": 0,
"online_pay_channel": 0,
"payment_method": 4,
"balance_frozen_amount": 0.0,
"card_frozen_amount": 0.0,
"member_id": 0,
"member_card_id": 0,
"round_amount": 0.0,
"online_pay_type": 0,
"action_type": 2,
"refund_amount": 0.0,
"cashier_point_id": 0,
"operator_id": 0,
"pay_terminal": 1,
"pay_config_id": 0,
"channel_payer_id": "",
"channel_pay_no": "",
"check_status": 1,
"channel_fee": 0.0
},
{
"tenantName": "朗朗桌球",
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 2,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"id": 2919690732146181,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"pay_sn": 0,
"pay_amount": -3000.0,
"pay_status": 2,
"pay_time": "2025-10-13 23:23:02",
"create_time": "2025-10-13 23:23:02",
"relate_type": 5,
"relate_id": 2919519811440261,
"is_revoke": 0,
"is_delete": 0,
"online_pay_channel": 0,
"payment_method": 4,
"balance_frozen_amount": 0.0,
"card_frozen_amount": 0.0,
"member_id": 0,
"member_card_id": 0,
"round_amount": 0.0,
"online_pay_type": 0,
"action_type": 2,
"refund_amount": 0.0,
"cashier_point_id": 0,
"operator_id": 0,
"pay_terminal": 1,
"pay_config_id": 0,
"channel_payer_id": "",
"channel_pay_no": "",
"check_status": 1,
"channel_fee": 0.0
},
{
"tenantName": "朗朗桌球",
"siteProfile": {
"id": 2790685415443269,
"org_id": 2790684179467077,
"shop_name": "朗朗桌球",
"avatar": "https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg",
"business_tel": "13316068642",
"full_address": "广东省广州市天河区丽阳街12号",
"address": "广东省广州市天河区天园街道朗朗桌球",
"longitude": 113.360321,
"latitude": 23.133629,
"tenant_site_region_id": 156440100,
"tenant_id": 2790683160709957,
"auto_light": 1,
"attendance_distance": 0,
"wifi_name": "",
"wifi_password": "",
"customer_service_qrcode": "",
"customer_service_wechat": "",
"fixed_pay_qrCode": "",
"prod_env": 1,
"light_status": 2,
"light_type": 0,
"site_type": 1,
"light_token": "",
"site_label": "A",
"attendance_enabled": 1,
"shop_status": 1
},
"id": 2914039374956165,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"pay_sn": 0,
"pay_amount": -8.0,
"pay_status": 2,
"pay_time": "2025-10-09 23:34:11",
"create_time": "2025-10-09 23:34:11",
"relate_type": 2,
"relate_id": 2914030720124357,
"is_revoke": 0,
"is_delete": 0,
"online_pay_channel": 0,
"payment_method": 4,
"balance_frozen_amount": 0.0,
"card_frozen_amount": 0.0,
"member_id": 0,
"member_card_id": 0,
"round_amount": 0.0,
"online_pay_type": 0,
"action_type": 2,
"refund_amount": 0.0,
"cashier_point_id": 0,
"operator_id": 0,
"pay_terminal": 1,
"pay_config_id": 0,
"channel_payer_id": "",
"channel_pay_no": "",
"check_status": 1,
"channel_fee": 0.0
}
]

View File

@@ -1,712 +0,0 @@
[
{
"data": {
"total": 0,
"goodsCategoryList": [
{
"id": 2790683528350533,
"tenant_id": 2790683160709957,
"category_name": "槟榔",
"alias_name": "",
"pid": 0,
"business_name": "槟榔",
"tenant_goods_business_id": 2790683528317766,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2790683528350534,
"tenant_id": 2790683160709957,
"category_name": "槟榔",
"alias_name": "",
"pid": 2790683528350533,
"business_name": "槟榔",
"tenant_goods_business_id": 2790683528317766,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 1,
"is_warehousing": 1
},
{
"id": 2790683528350535,
"tenant_id": 2790683160709957,
"category_name": "器材",
"alias_name": "",
"pid": 0,
"business_name": "器材",
"tenant_goods_business_id": 2790683528317767,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2790683528350536,
"tenant_id": 2790683160709957,
"category_name": "皮头",
"alias_name": "",
"pid": 2790683528350535,
"business_name": "器材",
"tenant_goods_business_id": 2790683528317767,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350537,
"tenant_id": 2790683160709957,
"category_name": "球杆",
"alias_name": "",
"pid": 2790683528350535,
"business_name": "器材",
"tenant_goods_business_id": 2790683528317767,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350538,
"tenant_id": 2790683160709957,
"category_name": "其他",
"alias_name": "",
"pid": 2790683528350535,
"business_name": "器材",
"tenant_goods_business_id": 2790683528317767,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350539,
"tenant_id": 2790683160709957,
"category_name": "酒水",
"alias_name": "",
"pid": 0,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2790683528350540,
"tenant_id": 2790683160709957,
"category_name": "饮料",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350541,
"tenant_id": 2790683160709957,
"category_name": "酒水",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350542,
"tenant_id": 2790683160709957,
"category_name": "茶水",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350543,
"tenant_id": 2790683160709957,
"category_name": "咖啡",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350544,
"tenant_id": 2790683160709957,
"category_name": "加料",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2793221553489733,
"tenant_id": 2790683160709957,
"category_name": "洋酒",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350545,
"tenant_id": 2790683160709957,
"category_name": "果盘",
"alias_name": "",
"pid": 0,
"business_name": "水果",
"tenant_goods_business_id": 2790683528317769,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2792050275864453,
"tenant_id": 2790683160709957,
"category_name": "果盘",
"alias_name": "",
"pid": 2790683528350545,
"business_name": "水果",
"tenant_goods_business_id": 2790683528317769,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2791941988405125,
"tenant_id": 2790683160709957,
"category_name": "零食",
"alias_name": "",
"pid": 0,
"business_name": "零食",
"tenant_goods_business_id": 2791932037238661,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2791948300259205,
"tenant_id": 2790683160709957,
"category_name": "零食",
"alias_name": "",
"pid": 2791941988405125,
"business_name": "零食",
"tenant_goods_business_id": 2791932037238661,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2793236829620037,
"tenant_id": 2790683160709957,
"category_name": "面",
"alias_name": "",
"pid": 2791941988405125,
"business_name": "零食",
"tenant_goods_business_id": 2791932037238661,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2791942087561093,
"tenant_id": 2790683160709957,
"category_name": "雪糕",
"alias_name": "",
"pid": 0,
"business_name": "雪糕",
"tenant_goods_business_id": 2791931866402693,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2792035069284229,
"tenant_id": 2790683160709957,
"category_name": "雪糕",
"alias_name": "",
"pid": 2791942087561093,
"business_name": "雪糕",
"tenant_goods_business_id": 2791931866402693,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2792062778003333,
"tenant_id": 2790683160709957,
"category_name": "香烟",
"alias_name": "",
"pid": 0,
"business_name": "香烟",
"tenant_goods_business_id": 2790683528317765,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2792063209623429,
"tenant_id": 2790683160709957,
"category_name": "香烟",
"alias_name": "",
"pid": 2792062778003333,
"business_name": "香烟",
"tenant_goods_business_id": 2790683528317765,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 1,
"is_warehousing": 1
}
],
"sort": 1,
"is_warehousing": 1
},
{
"id": 2793217944864581,
"tenant_id": 2790683160709957,
"category_name": "其他",
"alias_name": "",
"pid": 0,
"business_name": "其他",
"tenant_goods_business_id": 2793217599407941,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2793218343257925,
"tenant_id": 2790683160709957,
"category_name": "其他2",
"alias_name": "",
"pid": 2793217944864581,
"business_name": "其他",
"tenant_goods_business_id": 2793217599407941,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2793220945250117,
"tenant_id": 2790683160709957,
"category_name": "小吃",
"alias_name": "",
"pid": 0,
"business_name": "小吃",
"tenant_goods_business_id": 2793220268902213,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2793221283104581,
"tenant_id": 2790683160709957,
"category_name": "小吃",
"alias_name": "",
"pid": 2793220945250117,
"business_name": "小吃",
"tenant_goods_business_id": 2793220268902213,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
}
]
},
"code": 0
},
{
"data": {
"total": 0,
"goodsCategoryList": [
{
"id": 2790683528350533,
"tenant_id": 2790683160709957,
"category_name": "槟榔",
"alias_name": "",
"pid": 0,
"business_name": "槟榔",
"tenant_goods_business_id": 2790683528317766,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2790683528350534,
"tenant_id": 2790683160709957,
"category_name": "槟榔",
"alias_name": "",
"pid": 2790683528350533,
"business_name": "槟榔",
"tenant_goods_business_id": 2790683528317766,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 1,
"is_warehousing": 1
},
{
"id": 2790683528350535,
"tenant_id": 2790683160709957,
"category_name": "器材",
"alias_name": "",
"pid": 0,
"business_name": "器材",
"tenant_goods_business_id": 2790683528317767,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2790683528350536,
"tenant_id": 2790683160709957,
"category_name": "皮头",
"alias_name": "",
"pid": 2790683528350535,
"business_name": "器材",
"tenant_goods_business_id": 2790683528317767,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350537,
"tenant_id": 2790683160709957,
"category_name": "球杆",
"alias_name": "",
"pid": 2790683528350535,
"business_name": "器材",
"tenant_goods_business_id": 2790683528317767,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350538,
"tenant_id": 2790683160709957,
"category_name": "其他",
"alias_name": "",
"pid": 2790683528350535,
"business_name": "器材",
"tenant_goods_business_id": 2790683528317767,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350539,
"tenant_id": 2790683160709957,
"category_name": "酒水",
"alias_name": "",
"pid": 0,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2790683528350540,
"tenant_id": 2790683160709957,
"category_name": "饮料",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350541,
"tenant_id": 2790683160709957,
"category_name": "酒水",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350542,
"tenant_id": 2790683160709957,
"category_name": "茶水",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350543,
"tenant_id": 2790683160709957,
"category_name": "咖啡",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350544,
"tenant_id": 2790683160709957,
"category_name": "加料",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2793221553489733,
"tenant_id": 2790683160709957,
"category_name": "洋酒",
"alias_name": "",
"pid": 2790683528350539,
"business_name": "酒水",
"tenant_goods_business_id": 2790683528317768,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2790683528350545,
"tenant_id": 2790683160709957,
"category_name": "果盘",
"alias_name": "",
"pid": 0,
"business_name": "水果",
"tenant_goods_business_id": 2790683528317769,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2792050275864453,
"tenant_id": 2790683160709957,
"category_name": "果盘",
"alias_name": "",
"pid": 2790683528350545,
"business_name": "水果",
"tenant_goods_business_id": 2790683528317769,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2791941988405125,
"tenant_id": 2790683160709957,
"category_name": "零食",
"alias_name": "",
"pid": 0,
"business_name": "零食",
"tenant_goods_business_id": 2791932037238661,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2791948300259205,
"tenant_id": 2790683160709957,
"category_name": "零食",
"alias_name": "",
"pid": 2791941988405125,
"business_name": "零食",
"tenant_goods_business_id": 2791932037238661,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2793236829620037,
"tenant_id": 2790683160709957,
"category_name": "面",
"alias_name": "",
"pid": 2791941988405125,
"business_name": "零食",
"tenant_goods_business_id": 2791932037238661,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2791942087561093,
"tenant_id": 2790683160709957,
"category_name": "雪糕",
"alias_name": "",
"pid": 0,
"business_name": "雪糕",
"tenant_goods_business_id": 2791931866402693,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2792035069284229,
"tenant_id": 2790683160709957,
"category_name": "雪糕",
"alias_name": "",
"pid": 2791942087561093,
"business_name": "雪糕",
"tenant_goods_business_id": 2791931866402693,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2792062778003333,
"tenant_id": 2790683160709957,
"category_name": "香烟",
"alias_name": "",
"pid": 0,
"business_name": "香烟",
"tenant_goods_business_id": 2790683528317765,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2792063209623429,
"tenant_id": 2790683160709957,
"category_name": "香烟",
"alias_name": "",
"pid": 2792062778003333,
"business_name": "香烟",
"tenant_goods_business_id": 2790683528317765,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 1,
"is_warehousing": 1
}
],
"sort": 1,
"is_warehousing": 1
},
{
"id": 2793217944864581,
"tenant_id": 2790683160709957,
"category_name": "其他",
"alias_name": "",
"pid": 0,
"business_name": "其他",
"tenant_goods_business_id": 2793217599407941,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2793218343257925,
"tenant_id": 2790683160709957,
"category_name": "其他2",
"alias_name": "",
"pid": 2793217944864581,
"business_name": "其他",
"tenant_goods_business_id": 2793217599407941,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
},
{
"id": 2793220945250117,
"tenant_id": 2790683160709957,
"category_name": "小吃",
"alias_name": "",
"pid": 0,
"business_name": "小吃",
"tenant_goods_business_id": 2793220268902213,
"open_salesman": 2,
"categoryBoxes": [
{
"id": 2793221283104581,
"tenant_id": 2790683160709957,
"category_name": "小吃",
"alias_name": "",
"pid": 2793220945250117,
"business_name": "小吃",
"tenant_goods_business_id": 2793220268902213,
"open_salesman": 2,
"categoryBoxes": [],
"sort": 0,
"is_warehousing": 1
}
],
"sort": 0,
"is_warehousing": 1
}
]
},
"code": 0
}
]

View File

@@ -1,646 +0,0 @@
[
{
"data": {
"total": 17,
"packageCouponList": [
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2939215004469573,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "早场特惠一小时",
"table_area_id": "0",
"table_area_name": "A区",
"selling_price": 0.0,
"duration": 3600,
"start_time": "2025-10-27 00:00:00",
"end_time": "2026-10-28 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 2,
"package_id": 1814707240811572,
"usable_count": 9999999,
"create_time": "2025-10-27 18:24:09",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791960001957765",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2861343275830405,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "B区桌球一小时",
"table_area_id": "0",
"table_area_name": "B区",
"selling_price": 0.0,
"duration": 3600,
"start_time": "2025-09-02 00:00:00",
"end_time": "2026-09-03 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 1,
"package_id": 1370841337,
"usable_count": 9999999,
"create_time": "2025-09-02 18:08:56",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791960521691013",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 3,
"id": 2836713896429317,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "午夜一小时",
"table_area_id": "0",
"table_area_name": "A区",
"selling_price": 0.0,
"duration": 3600,
"start_time": "2025-08-16 00:00:00",
"end_time": "2026-08-17 00:00:00",
"is_enabled": 2,
"is_delete": 0,
"type": 1,
"package_id": 1370841337,
"usable_count": 9999999,
"create_time": "2025-08-16 08:34:38",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791960001957765",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2801876691340293,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "中八、斯诺克包厢两小时",
"table_area_id": "0",
"table_area_name": "VIP包厢",
"selling_price": 0.0,
"duration": 7200,
"start_time": "2025-07-22 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 1,
"package_id": 1126976372,
"usable_count": 9999999,
"create_time": "2025-07-22 17:56:24",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791961060364165",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 3,
"id": 2801875268668357,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "中八、斯诺克包厢两小时",
"table_area_id": "0",
"table_area_name": "VIP包厢",
"selling_price": 0.0,
"duration": 7200,
"start_time": "2025-07-22 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 2,
"is_delete": 0,
"type": 1,
"package_id": 1126976372,
"usable_count": 9999999,
"create_time": "2025-07-22 17:54:57",
"creator_name": "管理员:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791961060364165",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "0",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 3,
"id": 2800772613934149,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "午夜场一小时A区",
"table_area_id": "0",
"table_area_name": "A区",
"selling_price": 0.0,
"duration": 3600,
"start_time": "2025-07-21 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 2,
"is_delete": 0,
"type": 1,
"package_id": 1370841337,
"usable_count": 9999999,
"create_time": "2025-07-21 23:13:16",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791960001957765",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2798905767676933,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "中八、斯诺克包厢两小时",
"table_area_id": "0",
"table_area_name": "VIP包厢",
"selling_price": 0.0,
"duration": 7200,
"start_time": "2025-07-21 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 2,
"package_id": 1812429097416714,
"usable_count": 9999999,
"create_time": "2025-07-20 15:34:13",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791961060364165",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 3,
"id": 2798901295615045,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "新人特惠A区中八一小时",
"table_area_id": "0",
"table_area_name": "A区",
"selling_price": 0.0,
"duration": 3600,
"start_time": "2025-07-21 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 2,
"is_delete": 0,
"type": 2,
"package_id": 1814707240811572,
"usable_count": 9999999,
"create_time": "2025-07-20 15:29:40",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791960001957765",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2798898826300485,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "斯诺克两小时",
"table_area_id": "0",
"table_area_name": "斯诺克区",
"selling_price": 0.0,
"duration": 7200,
"start_time": "2025-07-21 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 2,
"package_id": 1814983609169019,
"usable_count": 9999999,
"create_time": "2025-07-20 15:27:09",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791961347968901",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2798734170983493,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "助理教练竞技教学两小时",
"table_area_id": "0",
"table_area_name": "A区",
"selling_price": 0.0,
"duration": 7200,
"start_time": "2025-07-21 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 1,
"package_id": 1173128804,
"usable_count": 9999999,
"create_time": "2025-07-20 12:39:39",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791960001957765",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2798732571167749,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "全天斯诺克一小时",
"table_area_id": "0",
"table_area_name": "斯诺克区",
"selling_price": 0.0,
"duration": 3600,
"start_time": "2025-07-21 00:00:00",
"end_time": "2025-12-30 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 1,
"package_id": 1147633733,
"usable_count": 9999999,
"create_time": "2025-07-20 12:38:02",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791961347968901",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2798731703045189,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "KTV欢唱四小时",
"table_area_id": "0",
"table_area_name": "888",
"selling_price": 0.0,
"duration": 14400,
"start_time": "2025-07-21 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 1,
"package_id": 1137882866,
"usable_count": 9999999,
"create_time": "2025-07-20 12:37:09",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791961709907845",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "10:00:00",
"add_end_clock": "18:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2798729978514501,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "全天A区中八两小时",
"table_area_id": "0",
"table_area_name": "A区",
"selling_price": 0.0,
"duration": 7200,
"start_time": "2025-07-21 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 1,
"package_id": 1130465371,
"usable_count": 9999999,
"create_time": "2025-07-20 12:35:24",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791960001957765",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2798728823213061,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "全天B区中八两小时",
"table_area_id": "0",
"table_area_name": "B区",
"selling_price": 0.0,
"duration": 7200,
"start_time": "2025-07-21 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 1,
"package_id": 1137872168,
"usable_count": 9999999,
"create_time": "2025-07-20 12:34:13",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791960521691013",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2798727423528005,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "全天A区中八一小时",
"table_area_id": "0",
"table_area_name": "A区",
"selling_price": 0.0,
"duration": 3600,
"start_time": "2025-07-21 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 1,
"package_id": 1128411555,
"usable_count": 9999999,
"create_time": "2025-07-20 12:32:48",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791960001957765",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2798723640069125,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "中八A区新人特惠一小时",
"table_area_id": "0",
"table_area_name": "A区",
"selling_price": 0.0,
"duration": 3600,
"start_time": "2025-07-20 00:00:00",
"end_time": "2025-12-31 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 1,
"package_id": 1203035334,
"usable_count": 9999999,
"create_time": "2025-07-20 12:28:57",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791960001957765",
"start_clock": "00:00:00",
"end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"add_end_clock": "1.00:00:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"id": 2798713926290437,
"site_id": 2790685415443269,
"tenant_id": 2790683160709957,
"package_name": "麻将 、掼蛋包厢四小时",
"table_area_id": "0",
"table_area_name": "麻将房",
"selling_price": 0.0,
"duration": 14400,
"start_time": "2025-07-21 00:00:00",
"end_time": "2025-12-30 00:00:00",
"is_enabled": 1,
"is_delete": 0,
"type": 1,
"package_id": 1134269810,
"usable_count": 9999999,
"create_time": "2025-07-20 12:19:04",
"creator_name": "店长:郑丽珊",
"tenant_table_area_id": "0",
"table_area_id_list": "",
"tenant_table_area_id_list": "2791962314215301",
"start_clock": "10:00:00",
"end_clock": "1.02:00:00",
"add_start_clock": "10:00:00",
"add_end_clock": "23:59:00",
"date_info": "",
"date_type": 1,
"group_type": 1,
"usable_range": "",
"coupon_money": 0.0,
"area_tag_type": 1,
"system_group_type": 1,
"max_selectable_categories": 0,
"card_type_ids": "0"
}
]
},
"code": 0
},
{
"data": {
"total": 17,
"packageCouponList": []
},
"code": 0
}
]

View File

@@ -1,20 +0,0 @@
[
{
"data": {
"goodsStockA": 0,
"goodsStockB": 6252,
"goodsSaleNum": 210.29,
"stockSumMoney": 1461.28
},
"code": 0
},
{
"data": {
"goodsStockA": 0,
"goodsStockB": 6252,
"goodsSaleNum": 210.29,
"stockSumMoney": 1461.28
},
"code": 0
}
]

View File

@@ -1,144 +0,0 @@
==========================================================================================
20251110_034959_助教流水.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'orderAssistantDetails']
list orderAssistantDetails len 100, elem type dict, keys ['assistantNo', 'nickname', 'levelName', 'assistantName', 'tableName', 'siteProfile', 'skillName', 'id', 'order_trade_no', 'site_id']
==========================================================================================
20251110_035004_助教废除.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'abolitionAssistants']
list abolitionAssistants len 15, elem type dict, keys ['siteProfile', 'createTime', 'id', 'siteId', 'tableAreaId', 'tableId', 'tableArea', 'tableName', 'assistantOn', 'assistantName']
==========================================================================================
20251110_035011_台费流水.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'siteTableUseDetailsList']
list siteTableUseDetailsList len 100, elem type dict, keys ['siteProfile', 'id', 'order_trade_no', 'site_id', 'tenant_id', 'member_id', 'operator_id', 'operator_name', 'order_settle_id', 'ledger_unit_price']
==========================================================================================
20251110_035904_小票详情.json
root list len 193
sample keys ['orderSettleId', 'data']
data keys ['data', 'code']
dict data keys ['tenantId', 'siteId', 'orderSettleId', 'orderSettleNumber', 'assistantManualDiscount', 'siteName', 'tenantName', 'siteAddress', 'siteBusinessTel', 'ticketRemark']
==========================================================================================
20251110_035908_台费打折.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'taiFeeAdjustInfos']
list taiFeeAdjustInfos len 100, elem type dict, keys ['tableProfile', 'siteProfile', 'id', 'adjust_type', 'applicant_id', 'applicant_name', 'create_time', 'is_delete', 'ledger_amount', 'ledger_count']
==========================================================================================
20251110_035916_结账记录.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'settleList']
list settleList len 100, elem type dict, keys ['siteProfile', 'settleList']
==========================================================================================
20251110_035923_支付记录.json
root list len 200
sample keys ['siteProfile', 'create_time', 'pay_amount', 'pay_status', 'pay_time', 'online_pay_channel', 'relate_type', 'relate_id', 'site_id', 'id', 'payment_method']
dict siteProfile keys ['id', 'org_id', 'shop_name', 'avatar', 'business_tel', 'full_address', 'address', 'longitude', 'latitude', 'tenant_site_region_id']
==========================================================================================
20251110_035929_退款记录.json
root list len 11
sample keys ['tenantName', 'siteProfile', 'id', 'site_id', 'tenant_id', 'pay_sn', 'pay_amount', 'pay_status', 'pay_time', 'create_time', 'relate_type', 'relate_id', 'is_revoke', 'is_delete', 'online_pay_channel', 'payment_method', 'balance_frozen_amount', 'card_frozen_amount', 'member_id', 'member_card_id']
dict siteProfile keys ['id', 'org_id', 'shop_name', 'avatar', 'business_tel', 'full_address', 'address', 'longitude', 'latitude', 'tenant_site_region_id']
==========================================================================================
20251110_035934_平台验券记录.json
root list len 200
sample keys ['siteProfile', 'id', 'tenant_id', 'site_id', 'sale_price', 'coupon_code', 'coupon_channel', 'site_order_id', 'coupon_free_time', 'use_status', 'create_time', 'is_delete', 'coupon_name', 'coupon_cover', 'coupon_remark', 'channel_deal_id', 'group_package_id', 'consume_time', 'groupon_type', 'coupon_money']
dict siteProfile keys ['id', 'org_id', 'shop_name', 'avatar', 'business_tel', 'full_address', 'address', 'longitude', 'latitude', 'tenant_site_region_id']
==========================================================================================
20251110_035941_商品档案.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'tenantGoodsList']
list tenantGoodsList len 100, elem type dict, keys ['categoryName', 'isInSite', 'commodityCode', 'id', 'tenant_id', 'goods_name', 'goods_cover', 'goods_state', 'goods_category_id', 'unit']
==========================================================================================
20251110_035948_门店销售记录.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'orderGoodsLedgers']
list orderGoodsLedgers len 100, elem type dict, keys ['siteId', 'siteName', 'orderGoodsId', 'openSalesman', 'id', 'order_trade_no', 'site_id', 'tenant_id', 'operator_id', 'operator_name']
==========================================================================================
20251110_043159_库存变化记录1.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'queryDeliveryRecordsList']
list queryDeliveryRecordsList len 100, elem type dict, keys ['siteGoodsStockId', 'siteGoodsId', 'siteId', 'tenantId', 'stockType', 'goodsName', 'createTime', 'startNum', 'endNum', 'changeNum']
==========================================================================================
20251110_043204_库存变化记录2.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'goodsCategoryList']
list goodsCategoryList len 9, elem type dict, keys ['id', 'tenant_id', 'category_name', 'alias_name', 'pid', 'business_name', 'tenant_goods_business_id', 'open_salesman', 'categoryBoxes', 'sort']
==========================================================================================
20251110_043209_会员档案.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'tenantMemberInfos']
list tenantMemberInfos len 100, elem type dict, keys ['id', 'create_time', 'member_card_grade_code', 'mobile', 'nickname', 'register_site_id', 'site_name', 'member_card_grade_name', 'system_member_id', 'tenant_id']
==========================================================================================
20251110_043217_余额变更记录.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'tenantMemberCardLogs']
list tenantMemberCardLogs len 100, elem type dict, keys ['memberCardTypeName', 'paySiteName', 'registerSiteName', 'memberName', 'memberMobile', 'id', 'account_data', 'after', 'before', 'card_type_id']
==========================================================================================
20251110_043223_储值卡列表.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'totalOther', 'tenantMemberCards']
list tenantMemberCards len 100, elem type dict, keys ['site_name', 'member_name', 'member_mobile', 'member_card_type_name', 'table_service_discount', 'assistant_service_discount', 'coupon_discount', 'goods_service_discount', 'is_allow_give', 'able_cross_site']
==========================================================================================
20251110_043231_充值记录.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'settleList']
list settleList len 74, elem type dict, keys ['siteProfile', 'settleList']
==========================================================================================
20251110_043237_助教账号1.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'assistantInfos']
list assistantInfos len 50, elem type dict, keys ['job_num', 'shop_name', 'group_id', 'group_name', 'staff_profile_id', 'ding_talk_synced', 'entry_type', 'team_name', 'entry_sign_status', 'resign_sign_status']
==========================================================================================
20251110_043243_助教账号2.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'assistantInfos']
list assistantInfos len 50, elem type dict, keys ['job_num', 'shop_name', 'group_id', 'group_name', 'staff_profile_id', 'ding_talk_synced', 'entry_type', 'team_name', 'entry_sign_status', 'resign_sign_status']
==========================================================================================
20251110_043250_台桌列表.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'siteTables']
list siteTables len 71, elem type dict, keys ['id', 'audit_status', 'charge_free', 'self_table', 'create_time', 'is_rest_area', 'light_status', 'show_status', 'site_id', 'site_table_area_id']
==========================================================================================
20251110_043255_团购套餐.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'packageCouponList']
list packageCouponList len 17, elem type dict, keys ['site_name', 'effective_status', 'id', 'site_id', 'tenant_id', 'package_name', 'table_area_id', 'table_area_name', 'selling_price', 'duration']
==========================================================================================
20251110_043302_团购套餐流水.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'couponAmountSum', 'siteTableUseDetailsList']
list siteTableUseDetailsList len 100, elem type dict, keys ['tableName', 'tableAreaName', 'siteName', 'goodsOptionPrice', 'id', 'order_trade_no', 'table_id', 'site_id', 'tenant_id', 'operator_id']
==========================================================================================
20251110_043308_库存汇总.json
root list len 161
sample keys ['siteGoodsId', 'goodsName', 'goodsUnit', 'goodsCategoryId', 'goodsCategorySecondId', 'rangeStartStock', 'rangeEndStock', 'rangeIn', 'rangeOut', 'rangeInventory', 'rangeSale', 'rangeSaleMoney', 'currentStock', 'categoryName']
==========================================================================================
20251110_051132_门店商品档案1.json
root list len 2
sample keys ['data', 'code']
data keys ['total', 'orderGoodsList']
list orderGoodsList len 100, elem type dict, keys ['siteName', 'oneCategoryName', 'twoCategoryName', 'id', 'tenant_goods_id', 'site_id', 'tenant_id', 'goods_name', 'goods_cover', 'goods_state']
==========================================================================================
20251110_051138_门店商品档案2.json
root list len 2
sample keys ['data', 'code']
data keys ['goodsStockA', 'goodsStockB', 'goodsSaleNum', 'stockSumMoney']

View File

@@ -26,6 +26,7 @@ from tasks.refunds_task import RefundsTask
from tasks.table_discount_task import TableDiscountTask
from tasks.tables_task import TablesTask
from tasks.topups_task import TopupsTask
from utils.json_store import endpoint_to_filename
DEFAULT_STORE_ID = 2790685415443269
BASE_TS = "2025-01-01 10:00:00"
@@ -47,12 +48,6 @@ class TaskSpec:
return endpoint_to_filename(self.endpoint)
def endpoint_to_filename(endpoint: str) -> str:
"""根据 API endpoint 生成稳定可复用的文件名,便于离线模式在目录中直接定位归档 JSON。"""
normalized = endpoint.strip("/").replace("/", "__").replace(" ", "_").lower()
return f"{normalized or 'root'}.json"
def wrap_records(records: List[Dict], data_path: Sequence[str]):
"""按照 data_path 逐层包裹记录列表,使其结构与真实 API 返回体一致,方便离线回放。"""
payload = records
@@ -140,6 +135,8 @@ class FakeDBOperations:
self.commits = 0
self.rollbacks = 0
self.conn = FakeConnection()
# Pre-seeded query results (FIFO) to let tests control DB-returned rows
self.query_results: List[List[Dict]] = []
def batch_upsert_with_returning(self, sql: str, rows: List[Dict], page_size: int = 1000):
self.upserts.append(
@@ -167,6 +164,8 @@ class FakeDBOperations:
def query(self, sql: str, params=None):
self.executes.append({"sql": sql.strip(), "params": params, "type": "query"})
if self.query_results:
return self.query_results.pop(0)
return []
def cursor(self):

View File

@@ -0,0 +1,59 @@
# -*- coding: utf-8 -*-
"""验证 14 个任务的 E/T/L 分阶段调用FakeDB/FakeAPI不访问真实接口或数据库"""
import logging
import sys
from pathlib import Path
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
import pytest
PROJECT_ROOT = Path(__file__).resolve().parents[2]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from tasks.base_task import TaskContext
from tests.unit.task_test_utils import (
TASK_SPECS,
create_test_config,
get_db_operations,
FakeAPIClient,
)
def _build_context(store_id: int) -> TaskContext:
now = datetime.now(ZoneInfo("Asia/Taipei"))
return TaskContext(
store_id=store_id,
window_start=now - timedelta(minutes=30),
window_end=now,
window_minutes=30,
cursor=None,
)
@pytest.mark.parametrize("spec", TASK_SPECS)
def test_etl_stage_flow(spec, tmp_path):
"""对每个任务,单独调用 transform/load验证 counts 结构与 FakeDB 写入。"""
config = create_test_config("ONLINE", tmp_path / "archive", tmp_path / "temp")
api = FakeAPIClient({spec.endpoint: spec.sample_records})
logger = logging.getLogger(f"test_{spec.code.lower()}")
task_cls = spec.task_cls
with get_db_operations() as db_ops:
task = task_cls(config, db_ops, api, logger)
ctx = _build_context(config.get("app.store_id"))
# 跳过 extract直接验证 transform + load
extracted = {"records": spec.sample_records}
transformed = task.transform(extracted, ctx)
counts = task.load(transformed, ctx)
assert set(counts.keys()) == {"fetched", "inserted", "updated", "skipped", "errors"}
assert counts["fetched"] == len(spec.sample_records)
assert counts["errors"] == 0
# FakeDB 记录upserts/executes至少有一条
upserts = getattr(db_ops, "upserts", [])
executes = getattr(db_ops, "executes", [])
assert upserts or executes, "expected db operations to be recorded"

View File

@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
"""Unit tests for the new ODS ingestion tasks."""
import logging
import os
import sys
from pathlib import Path
@@ -9,6 +10,8 @@ PROJECT_ROOT = Path(__file__).resolve().parents[2]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
os.environ.setdefault("ETL_SKIP_DOTENV", "1")
from tasks.ods_tasks import ODS_TASK_CLASSES
from .task_test_utils import create_test_config, get_db_operations, FakeAPIClient
@@ -19,44 +22,80 @@ def _build_config(tmp_path):
return create_test_config("ONLINE", archive_dir, temp_dir)
def test_ods_order_settle_ingest(tmp_path):
"""Ensure ODS_ORDER_SETTLE task writes raw payload + metadata."""
def test_ods_assistant_accounts_ingest(tmp_path):
"""Ensure ODS_ASSISTANT_ACCOUNTS task stores raw payload with record_index dedup keys."""
config = _build_config(tmp_path)
sample = [
{
"orderSettleId": 701,
"orderTradeNo": 8001,
"anyField": "value",
"id": 5001,
"assistant_no": "A01",
"nickname": "小张",
}
]
api = FakeAPIClient({"/Site/GetAllOrderSettleList": sample})
task_cls = ODS_TASK_CLASSES["ODS_ORDER_SETTLE"]
api = FakeAPIClient({"/PersonnelManagement/SearchAssistantInfo": sample})
task_cls = ODS_TASK_CLASSES["ODS_ASSISTANT_ACCOUNTS"]
with get_db_operations() as db_ops:
task = task_cls(config, db_ops, api, logging.getLogger("test_ods_order"))
task = task_cls(config, db_ops, api, logging.getLogger("test_ods_assistant_accounts"))
result = task.execute()
assert result["status"] == "SUCCESS"
assert result["counts"]["fetched"] == 1
assert db_ops.commits == 1
row = db_ops.upserts[0]["rows"][0]
assert row["order_settle_id"] == 701
assert row["order_trade_no"] == 8001
assert row["source_endpoint"] == "/Site/GetAllOrderSettleList"
assert '"orderSettleId": 701' in row["payload"]
assert row["id"] == 5001
assert row["record_index"] == 0
assert row["source_file"] is None or row["source_file"] == ""
assert '"id": 5001' in row["payload"]
def test_ods_payment_ingest(tmp_path):
"""Ensure ODS_PAYMENT task stores relate fields and payload."""
def test_ods_inventory_change_ingest(tmp_path):
"""Ensure ODS_INVENTORY_CHANGE task stores raw payload with record_index dedup keys."""
config = _build_config(tmp_path)
sample = [
{
"payId": 901,
"relateType": "ORDER",
"relateId": 123,
"payAmount": "100.00",
"siteGoodsStockId": 123456,
"stockType": 1,
"goodsName": "测试商品",
}
]
api = FakeAPIClient({"/GoodsStockManage/QueryGoodsOutboundReceipt": sample})
task_cls = ODS_TASK_CLASSES["ODS_INVENTORY_CHANGE"]
with get_db_operations() as db_ops:
task = task_cls(config, db_ops, api, logging.getLogger("test_ods_inventory_change"))
result = task.execute()
assert result["status"] == "SUCCESS"
assert result["counts"]["fetched"] == 1
assert db_ops.commits == 1
row = db_ops.upserts[0]["rows"][0]
assert row["sitegoodsstockid"] == 123456
assert row["record_index"] == 0
assert '"siteGoodsStockId": 123456' in row["payload"]
def test_ods_member_profiles_ingest(tmp_path):
"""Ensure ODS_MEMBER task stores tenantMemberInfos raw JSON."""
config = _build_config(tmp_path)
sample = [{"tenantMemberInfos": [{"id": 101, "mobile": "13800000000"}]}]
api = FakeAPIClient({"/MemberProfile/GetTenantMemberList": sample})
task_cls = ODS_TASK_CLASSES["ODS_MEMBER"]
with get_db_operations() as db_ops:
task = task_cls(config, db_ops, api, logging.getLogger("test_ods_member"))
result = task.execute()
assert result["status"] == "SUCCESS"
row = db_ops.upserts[0]["rows"][0]
assert row["record_index"] == 0
assert '"id": 101' in row["payload"]
def test_ods_payment_ingest(tmp_path):
"""Ensure ODS_PAYMENT task stores payment_transactions raw JSON."""
config = _build_config(tmp_path)
sample = [{"payId": 901, "payAmount": "100.00"}]
api = FakeAPIClient({"/PayLog/GetPayLogListPage": sample})
task_cls = ODS_TASK_CLASSES["ODS_PAYMENT"]
@@ -65,10 +104,57 @@ def test_ods_payment_ingest(tmp_path):
result = task.execute()
assert result["status"] == "SUCCESS"
assert result["counts"]["fetched"] == 1
assert db_ops.commits == 1
row = db_ops.upserts[0]["rows"][0]
assert row["pay_id"] == 901
assert row["relate_type"] == "ORDER"
assert row["relate_id"] == 123
assert row["record_index"] == 0
assert '"payId": 901' in row["payload"]
def test_ods_settlement_records_ingest(tmp_path):
"""Ensure ODS_ORDER_SETTLE task stores settleList raw JSON."""
config = _build_config(tmp_path)
sample = [{"data": {"settleList": [{"id": 701, "orderTradeNo": 8001}]}}]
api = FakeAPIClient({"/Site/GetAllOrderSettleList": sample})
task_cls = ODS_TASK_CLASSES["ODS_ORDER_SETTLE"]
with get_db_operations() as db_ops:
task = task_cls(config, db_ops, api, logging.getLogger("test_ods_order_settle"))
result = task.execute()
assert result["status"] == "SUCCESS"
row = db_ops.upserts[0]["rows"][0]
assert row["record_index"] == 0
assert '"orderTradeNo": 8001' in row["payload"]
def test_ods_settlement_ticket_by_payment_relate_ids(tmp_path):
"""Ensure settlement tickets are fetched per payment relate_id and skip existing ones."""
config = _build_config(tmp_path)
ticket_payload = {"data": {"data": {"orderSettleId": 9001, "orderSettleNumber": "T001"}}}
api = FakeAPIClient({"/Order/GetOrderSettleTicketNew": [ticket_payload]})
task_cls = ODS_TASK_CLASSES["ODS_SETTLEMENT_TICKET"]
with get_db_operations() as db_ops:
# First query: existing ticket ids; Second query: payment relate_ids
db_ops.query_results = [
[{"order_settle_id": 9002}],
[
{"order_settle_id": 9001},
{"order_settle_id": 9002},
{"order_settle_id": None},
],
]
task = task_cls(config, db_ops, api, logging.getLogger("test_ods_settlement_ticket"))
result = task.execute()
assert result["status"] == "SUCCESS"
counts = result["counts"]
assert counts["fetched"] == 1
assert counts["inserted"] == 1
assert counts["updated"] == 0
assert counts["skipped"] == 0
assert '"orderSettleId": 9001' in db_ops.upserts[0]["rows"][0]["payload"]
assert any(
call["endpoint"] == "/Order/GetOrderSettleTicketNew"
and call.get("params", {}).get("orderSettleId") == 9001
for call in api.calls
)

View File

@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
"""汇总与报告工具的单测。"""
from utils.reporting import summarize_counts, format_report
def test_summarize_counts_and_format():
task_results = [
{"task_code": "ORDERS", "counts": {"fetched": 2, "inserted": 2, "updated": 0, "skipped": 0, "errors": 0}},
{"task_code": "PAYMENTS", "counts": {"fetched": 3, "inserted": 2, "updated": 1, "skipped": 0, "errors": 0}},
]
summary = summarize_counts(task_results)
assert summary["total"]["fetched"] == 5
assert summary["total"]["inserted"] == 4
assert summary["total"]["updated"] == 1
assert summary["total"]["errors"] == 0
assert len(summary["details"]) == 2
report = format_report(summary)
assert "TOTAL fetched=5" in report
assert "ORDERS:" in report
assert "PAYMENTS:" in report