在准备环境前提交次全部更改。

This commit is contained in:
Neo
2026-02-19 08:35:13 +08:00
parent ded6dfb9d8
commit 4eac07da47
1387 changed files with 6107191 additions and 33002 deletions

0
tmp/.gitkeep Normal file
View File

2
tmp/_gen.py Normal file
View File

@@ -0,0 +1,2 @@
import pathlib
print(42)

112
tmp/_write_test.py Normal file
View File

@@ -0,0 +1,112 @@
"""Helper script to write the PBT test file to C:\\NeoZQYY\\tests\\."""
import pathlib
content = r'''# -*- coding: utf-8 -*-
"""
必需配置缺失检测属性测试
**Validates: Requirements 4.4**
Property 4: 必需配置缺失检测
对于任意必需配置项,当所有配置层级(.env、.env.local、环境变量、CLI
均未提供该项时,配置加载器应抛出错误,且错误信息中包含该缺失配置项的名称。
"""
import pytest
from hypothesis import given, settings
from hypothesis.strategies import lists, from_regex
def validate_required_config(required_keys: list[str], config: dict) -> None:
"""验证必需配置项是否全部存在且非空。
Args:
required_keys: 必需配置项名称列表
config: 实际配置字典
Raises:
ValueError: 当存在缺失或空值的必需配置项时,
错误信息包含所有缺失项名称
"""
missing = [k for k in required_keys if k not in config or not config[k]]
if missing:
raise ValueError(f"缺失必需配置项: {', '.join(missing)}")
# 合法配置项名称:大写字母开头,后跟大写字母/数字/下划线
_key_strategy = from_regex(r"[A-Z][A-Z0-9_]{0,19}", fullmatch=True)
@given(
required_keys=lists(
_key_strategy,
min_size=1,
max_size=5,
unique=True,
)
)
@settings(max_examples=100)
def test_missing_required_config_raises_error(required_keys: list[str]):
"""
Property 4: 空配置字典 -> 抛出 ValueError 且包含缺失项名称
**Validates: Requirements 4.4**
"""
empty_config: dict = {}
with pytest.raises(ValueError, match="缺失必需配置项"):
validate_required_config(required_keys, empty_config)
# 额外验证:错误信息包含每个缺失项名称
try:
validate_required_config(required_keys, empty_config)
except ValueError as exc:
msg = str(exc)
for key in required_keys:
assert key in msg, (
f"错误信息应包含缺失配置项 '{key}',但实际信息为: {msg}"
)
@given(
required_keys=lists(
_key_strategy,
min_size=1,
max_size=5,
unique=True,
)
)
@settings(max_examples=100)
def test_empty_value_treated_as_missing(required_keys: list[str]):
"""
Property 4: 空值视为缺失 -> 抛出 ValueError
**Validates: Requirements 4.4**
"""
config_with_empty = {k: "" for k in required_keys}
with pytest.raises(ValueError, match="缺失必需配置项"):
validate_required_config(required_keys, config_with_empty)
@given(
required_keys=lists(
_key_strategy,
min_size=1,
max_size=5,
unique=True,
)
)
@settings(max_examples=100)
def test_all_required_present_no_error(required_keys: list[str]):
"""
Property 4 反向验证:所有必需项均提供非空值时不抛异常
**Validates: Requirements 4.4**
"""
config_complete = {k: f"value_for_{k}" for k in required_keys}
validate_required_config(required_keys, config_complete)
'''
target = pathlib.Path(r"C:\NeoZQYY\tests\test_property_config_missing.py")
target.write_text(content, encoding="utf-8")
print(f"wrote {len(content)} bytes to {target}")

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,830 @@
[
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791960001957765
],
"tableAreaNameList": [
"A区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3048468851870085,
"add_end_clock": "1.02:00:00",
"add_start_clock": "23:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2026-01-12 22:42:55",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 3600,
"end_clock": "1.02:00:00",
"end_time": "2027-01-13 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1134850618,
"package_name": "午夜场9.9",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "23:00:00",
"start_time": "2026-01-12 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791961347968901
],
"tableAreaNameList": [
"斯诺克区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3035353129373509,
"add_end_clock": "23:59:59",
"add_start_clock": "10:00:00",
"area_tag_type": 1,
"card_type_ids": "",
"coupon_money": 0.0,
"create_time": "2026-01-03 16:20:55",
"creator_name": "店长:郑丽珊",
"date_info": "0",
"date_type": 1,
"duration": 7200,
"end_clock": "23:59:59",
"end_time": "2027-01-04 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1130443985,
"package_name": "斯诺克两小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "10:00:00",
"start_time": "2026-01-03 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 3,
"tenantTableAreaIdList": [
2791961347968901
],
"tableAreaNameList": [
"斯诺克区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3035353102028549,
"add_end_clock": "23:59:59",
"add_start_clock": "10:00:00",
"area_tag_type": 1,
"card_type_ids": "",
"coupon_money": 0.0,
"create_time": "2026-01-03 16:20:53",
"creator_name": "店长:郑丽珊",
"date_info": "0",
"date_type": 1,
"duration": 7200,
"end_clock": "23:59:59",
"end_time": "2027-01-04 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 2,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1130443985,
"package_name": "斯诺克两小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "10:00:00",
"start_time": "2026-01-03 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 3,
"tenantTableAreaIdList": [
2791961347968901
],
"tableAreaNameList": [
"斯诺克区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3035346503502213,
"add_end_clock": "23:59:59",
"add_start_clock": "10:00:00",
"area_tag_type": 1,
"card_type_ids": "",
"coupon_money": 0.0,
"create_time": "2026-01-03 16:14:10",
"creator_name": "管理员:郑丽珊",
"date_info": "0",
"date_type": 1,
"duration": 7200,
"end_clock": "23:59:59",
"end_time": "2026-01-03 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 2,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1130443985,
"package_name": "斯诺克两小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "10:00:00",
"start_time": "2026-01-03 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791960001957765
],
"tableAreaNameList": [
"A区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3031000036133445,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-31 14:32:43",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 3600,
"end_clock": "1.00:00:00",
"end_time": "2027-01-01 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1203035334,
"package_name": "新人特惠一小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-12-31 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 3,
"tenantTableAreaIdList": [
2791961060364165
],
"tableAreaNameList": [
"VIP包厢"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3030876421573701,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-31 12:26:58",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 7200,
"end_clock": "1.00:00:00",
"end_time": "2027-01-01 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 2,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1812429097416714,
"package_name": "中八、斯诺克包厢两小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-07-21 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 2,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 3,
"tenantTableAreaIdList": [
2791960001957765
],
"tableAreaNameList": [
"A区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3030875431701445,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-31 12:25:58",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 3600,
"end_clock": "1.00:00:00",
"end_time": "2027-01-01 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 2,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1814707240811572,
"package_name": "新人特惠A区中八一小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-07-21 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 2,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791961709907845
],
"tableAreaNameList": [
"K包"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3030874907937861,
"add_end_clock": "18:00:00",
"add_start_clock": "10:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-31 12:25:26",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 14400,
"end_clock": "1.00:00:00",
"end_time": "2027-01-01 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1137882866,
"package_name": "KTV欢唱四小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-07-21 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791960001957765
],
"tableAreaNameList": [
"A区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3030874716834757,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-31 12:25:14",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 7200,
"end_clock": "1.00:00:00",
"end_time": "2027-09-01 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1130465371,
"package_name": "全天A区中八两小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-07-21 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791960521691013
],
"tableAreaNameList": [
"B区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3030874133269445,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-31 12:24:38",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 7200,
"end_clock": "1.00:00:00",
"end_time": "2027-01-01 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1137872168,
"package_name": "全天B区中八两小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-07-21 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 3,
"tenantTableAreaIdList": [
2791961347968901
],
"tableAreaNameList": [
"斯诺克区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3030873639701573,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-31 12:24:08",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 7200,
"end_clock": "1.00:00:00",
"end_time": "2027-01-01 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 2,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1814983609169019,
"package_name": "斯诺克两小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-07-21 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 2,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791960001957765
],
"tableAreaNameList": [
"A区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3030873437310021,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-31 12:23:56",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 7200,
"end_clock": "1.00:00:00",
"end_time": "2027-01-01 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1173128804,
"package_name": "助理教练竞技教学两小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-07-21 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 3,
"tenantTableAreaIdList": [
2791961060364165
],
"tableAreaNameList": [
"VIP包厢"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3030873263688773,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-31 12:23:45",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 7200,
"end_clock": "1.00:00:00",
"end_time": "2027-01-01 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 2,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1812429097416714,
"package_name": "中八、斯诺克包厢两小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-07-21 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 2,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791961060364165
],
"tableAreaNameList": [
"VIP包厢"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3030872859429829,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-31 12:23:21",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 7200,
"end_clock": "1.00:00:00",
"end_time": "2027-01-01 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1126976372,
"package_name": "中八、斯诺克包厢两小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-07-22 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791960001957765
],
"tableAreaNameList": [
"A区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3030872476945477,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-31 12:22:57",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 3600,
"end_clock": "1.00:00:00",
"end_time": "2027-01-01 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1128411555,
"package_name": "全天A区中八一小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-07-21 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791961347968901
],
"tableAreaNameList": [
"斯诺克区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3030025905916997,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-30 22:01:47",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 3600,
"end_clock": "1.00:00:00",
"end_time": "2026-12-31 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1147633733,
"package_name": "全天斯诺克一小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-12-30 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791962314215301
],
"tableAreaNameList": [
"麻将房"
],
"tenantCouponSaleOrderItemId": 0,
"id": 3029784419027909,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-12-30 17:56:07",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 14400,
"end_clock": "1.00:00:00",
"end_time": "2026-12-31 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1134269810,
"package_name": "麻将包厢4小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-12-30 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "",
"type": 1,
"usable_count": 0,
"usable_range": ""
},
{
"site_name": "朗朗桌球",
"effective_status": 1,
"tenantTableAreaIdList": [
2791960521691013
],
"tableAreaNameList": [
"B区"
],
"tenantCouponSaleOrderItemId": 0,
"id": 2861343275830405,
"add_end_clock": "1.00:00:00",
"add_start_clock": "00:00:00",
"area_tag_type": 1,
"card_type_ids": "0",
"coupon_money": 0.0,
"create_time": "2025-09-02 18:08:56",
"creator_name": "店长:郑丽珊",
"date_info": "",
"date_type": 1,
"duration": 3600,
"end_clock": "1.00:00:00",
"end_time": "2026-09-03 00:00:00",
"group_type": 1,
"is_delete": 0,
"is_enabled": 1,
"is_first_limit": 1,
"max_selectable_categories": 0,
"package_id": 1370841337,
"package_name": "B区桌球一小时",
"selling_price": 0.0,
"site_id": 2790685415443269,
"sort": 100,
"start_clock": "00:00:00",
"start_time": "2025-09-02 00:00:00",
"system_group_type": 1,
"table_area_id": "0",
"table_area_id_list": "",
"table_area_name": "B区",
"tenant_id": 2790683160709957,
"tenant_table_area_id": "0",
"tenant_table_area_id_list": "2791960521691013",
"type": 1,
"usable_count": 0,
"usable_range": ""
}
]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,349 @@
[
{
"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
}
]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

0
tmp/finalize_err.txt Normal file
View File

134
tmp/finalize_out.txt Normal file
View File

@@ -0,0 +1,134 @@
============================================================
步骤 1: 创建物化视图
============================================================
mv_dws_assistant_daily_detail_l1: 已存在,跳过
mv_dws_assistant_daily_detail_l2: 已存在,跳过
mv_dws_assistant_daily_detail_l3: 已存在,跳过
mv_dws_assistant_daily_detail_l4: 已存在,跳过
mv_dws_finance_daily_summary_l1: 已存在,跳过
mv_dws_finance_daily_summary_l2: 已存在,跳过
mv_dws_finance_daily_summary_l3: 已存在,跳过
mv_dws_finance_daily_summary_l4: 已存在,跳过
物化视图: 8/8 成功
============================================================
步骤 2: 创建物化视图索引
============================================================
idx_mv_assistant_daily_l1: OK
idx_mv_assistant_daily_l2: OK
idx_mv_assistant_daily_l3: OK
idx_mv_assistant_daily_l4: OK
idx_mv_finance_daily_l1: OK
idx_mv_finance_daily_l2: OK
idx_mv_finance_daily_l3: OK
idx_mv_finance_daily_l4: OK
索引: 8/8 成功
============================================================
步骤 3: ANALYZE
============================================================
ods: 23 个对象已 ANALYZE
dwd: 40 个对象已 ANALYZE
dws: 37 个对象已 ANALYZE
meta: 3 个对象已 ANALYZE
core: 7 个对象已 ANALYZE
app: 0 个对象已 ANALYZE
ANALYZE 完成
============================================================
步骤 4: 最终验证
============================================================
OK ods.assistant_accounts_master: 223 行
OK ods.assistant_cancellation_records: 100 行
OK ods.assistant_service_records: 10203 行
OK ods.goods_stock_movements: 35005 行
OK ods.goods_stock_summary: 867 行
OK ods.group_buy_packages: 52 行
OK ods.group_buy_redemption_records: 19532 行
OK ods.member_balance_changes: 7366 行
OK ods.member_profiles: 1202 行
OK ods.member_stored_value_cards: 2008 行
OK ods.payment_transactions: 24674 行
OK ods.platform_coupon_redemption_records: 18125 行
OK ods.recharge_settlements: 3333 行
OK ods.refund_transactions: 50 行
OK ods.settlement_records: 55137 行
OK ods.settlement_ticket_details: 193 行
OK ods.site_tables_master: 949 行
OK ods.stock_goods_category_tree: 9 行
OK ods.store_goods_master: 1398 行
OK ods.store_goods_sales_records: 17563 行
OK ods.table_fee_discount_records: 3100 行
OK ods.table_fee_transactions: 28881 行
OK ods.tenant_goods_master: 176 行
OK dwd.dim_assistant: 1208 行
OK dwd.dim_assistant_ex: 1251 行
OK dwd.dim_goods_category: 125 行
OK dwd.dim_groupbuy_package: 373 行
OK dwd.dim_groupbuy_package_ex: 373 行
OK dwd.dim_member: 10801 行
OK dwd.dim_member_card_account: 18370 行
OK dwd.dim_member_card_account_ex: 18172 行
OK dwd.dim_member_ex: 10770 行
OK dwd.dim_site: 52 行
OK dwd.dim_site_ex: 52 行
OK dwd.dim_store_goods: 5444 行
OK dwd.dim_store_goods_ex: 5402 行
OK dwd.dim_table: 2749 行
OK dwd.dim_table_ex: 2903 行
OK dwd.dim_tenant_goods: 2018 行
OK dwd.dim_tenant_goods_ex: 2016 行
OK dwd.dwd_assistant_service_log: 5281 行
OK dwd.dwd_assistant_service_log_ex: 5281 行
OK dwd.dwd_assistant_trash_event: 100 行
OK dwd.dwd_assistant_trash_event_ex: 100 行
OK dwd.dwd_groupbuy_redemption: 12526 行
OK dwd.dwd_groupbuy_redemption_ex: 12526 行
OK dwd.dwd_member_balance_change: 5042 行
OK dwd.dwd_member_balance_change_ex: 5042 行
OK dwd.dwd_payment: 24597 行
OK dwd.dwd_platform_coupon_redemption: 18069 行
OK dwd.dwd_platform_coupon_redemption_ex: 18069 行
OK dwd.dwd_recharge_order: 485 行
OK dwd.dwd_recharge_order_ex: 485 行
OK dwd.dwd_refund: 50 行
OK dwd.dwd_refund_ex: 50 行
OK dwd.dwd_settlement_head: 26115 行
OK dwd.dwd_settlement_head_ex: 26115 行
OK dwd.dwd_store_goods_sale: 17563 行
OK dwd.dwd_store_goods_sale_ex: 17563 行
OK dwd.dwd_table_fee_adjust: 3085 行
OK dwd.dwd_table_fee_adjust_ex: 3085 行
OK dwd.dwd_table_fee_log: 19847 行
OK dwd.dwd_table_fee_log_ex: 19847 行
OK dws.cfg_index_parameters: 127 行
OK dws.dws_assistant_daily_detail: 5276 行
OK dws.dws_finance_daily_summary: 210 行
OK dws.dws_index_percentile_history: 80 行
OK dws.dws_member_assistant_intimacy: 219 行
OK dws.dws_member_newconv_index: 49 行
OK dws.dws_member_visit_detail: 4398 行
OK dws.dws_member_winback_index: 122 行
OK meta.etl_cursor: 44 行
OK meta.etl_run: 8726 行
OK meta.etl_task: 49 行
物化视图检查:
OK dws.mv_dws_assistant_daily_detail_l1: 0 行
OK dws.mv_dws_assistant_daily_detail_l2: 584 行
OK dws.mv_dws_assistant_daily_detail_l3: 2400 行
OK dws.mv_dws_assistant_daily_detail_l4: 4794 行
OK dws.mv_dws_finance_daily_summary_l1: 0 行
OK dws.mv_dws_finance_daily_summary_l2: 26 行
OK dws.mv_dws_finance_daily_summary_l3: 86 行
OK dws.mv_dws_finance_daily_summary_l4: 184 行
索引统计:
ods: 69 个索引
dwd: 135 个索引
dws: 123 个索引
meta: 5 个索引
============================================================
验证通过: 74 表, 572448 行全部一致
============================================================

BIN
tmp/finalize_output.txt Normal file

Binary file not shown.