微信小程序页面迁移校验之前 P5任务处理之前
This commit is contained in:
116
scripts/ops/_inspect_settlement_json.py
Normal file
116
scripts/ops/_inspect_settlement_json.py
Normal file
@@ -0,0 +1,116 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
检查结账数据 JSON 文件的结构,了解实际字段名称
|
||||
|
||||
用法:
|
||||
cd C:/NeoZQYY
|
||||
python scripts/ops/_inspect_settlement_json.py
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# 添加项目根目录到 Python 路径
|
||||
project_root = Path(__file__).parent.parent.parent
|
||||
sys.path.insert(0, str(project_root))
|
||||
|
||||
# 加载环境变量
|
||||
from dotenv import load_dotenv
|
||||
load_dotenv(project_root / ".env")
|
||||
|
||||
def main():
|
||||
"""检查结账数据的实际结构"""
|
||||
|
||||
# 查找最新的结账数据文件
|
||||
log_dir = Path(os.environ["SYSTEM_LOG_ROOT"])
|
||||
settlement_files = list(log_dir.glob("settlement_manual_fetch_*.json"))
|
||||
|
||||
if not settlement_files:
|
||||
print("❌ 未找到结账数据文件")
|
||||
return
|
||||
|
||||
# 使用最新的文件
|
||||
latest_file = max(settlement_files, key=lambda f: f.stat().st_mtime)
|
||||
print(f"📂 检查文件: {latest_file.name}")
|
||||
|
||||
# 读取数据
|
||||
with open(latest_file, "r", encoding="utf-8") as f:
|
||||
data = json.load(f)
|
||||
|
||||
print(f"📊 文件顶层结构:")
|
||||
for key in data.keys():
|
||||
print(f" - {key}: {type(data[key])}")
|
||||
|
||||
records = data.get("records", [])
|
||||
print(f"\n📋 总记录数: {len(records)}")
|
||||
|
||||
if not records:
|
||||
print("❌ 没有记录数据")
|
||||
return
|
||||
|
||||
# 检查第一条记录的结构
|
||||
first_record = records[0]
|
||||
print(f"\n🔍 第一条记录的字段:")
|
||||
for key, value in first_record.items():
|
||||
value_type = type(value).__name__
|
||||
if isinstance(value, str) and len(value) > 50:
|
||||
value_preview = f"{value[:50]}..."
|
||||
else:
|
||||
value_preview = str(value)
|
||||
print(f" - {key}: {value_type} = {value_preview}")
|
||||
|
||||
# 查找时间相关字段
|
||||
time_fields = []
|
||||
for key, value in first_record.items():
|
||||
if isinstance(value, str) and any(pattern in key.lower() for pattern in ['time', 'date', '时间', '日期']):
|
||||
time_fields.append((key, value))
|
||||
|
||||
if time_fields:
|
||||
print(f"\n🕐 时间相关字段:")
|
||||
for key, value in time_fields:
|
||||
print(f" - {key}: {value}")
|
||||
else:
|
||||
print(f"\n❌ 未找到明显的时间字段")
|
||||
|
||||
# 检查前几条记录,寻找时间模式
|
||||
print(f"\n🔍 前 5 条记录的所有字段值 (寻找时间模式):")
|
||||
for i, record in enumerate(records[:5]):
|
||||
print(f"\n记录 {i+1}:")
|
||||
for key, value in record.items():
|
||||
if isinstance(value, str) and len(value) > 10:
|
||||
# 检查是否像时间格式
|
||||
if any(char in str(value) for char in ['-', ':', ' ']) and any(char.isdigit() for char in str(value)):
|
||||
print(f" - {key}: {value} ⭐")
|
||||
else:
|
||||
print(f" - {key}: {value}")
|
||||
else:
|
||||
print(f" - {key}: {value}")
|
||||
|
||||
# 保存结构分析
|
||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
analysis_file = log_dir / f"settlement_structure_analysis_{timestamp}.txt"
|
||||
|
||||
with open(analysis_file, "w", encoding="utf-8") as f:
|
||||
f.write(f"结账数据结构分析\n")
|
||||
f.write(f"分析时间: {datetime.now().isoformat()}\n")
|
||||
f.write(f"数据文件: {latest_file.name}\n")
|
||||
f.write(f"总记录数: {len(records)}\n\n")
|
||||
|
||||
f.write(f"第一条记录字段:\n")
|
||||
for key, value in first_record.items():
|
||||
f.write(f" {key}: {type(value).__name__} = {str(value)[:100]}\n")
|
||||
|
||||
if time_fields:
|
||||
f.write(f"\n时间相关字段:\n")
|
||||
for key, value in time_fields:
|
||||
f.write(f" {key}: {value}\n")
|
||||
|
||||
print(f"\n📋 结构分析已保存到: {analysis_file}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
from datetime import datetime
|
||||
main()
|
||||
Reference in New Issue
Block a user