mirror of
https://github.com/goldenfishs/MRobot.git
synced 2026-02-04 18:00:19 +08:00
108 lines
4.1 KiB
Python
108 lines
4.1 KiB
Python
#!/usr/bin/env python3
|
||
"""调试导入后查询无法显示的问题"""
|
||
|
||
import sys
|
||
import os
|
||
from pathlib import Path
|
||
|
||
# 添加项目根路径
|
||
sys.path.insert(0, str(Path(__file__).parent))
|
||
|
||
from app.tools.finance_manager import FinanceManager
|
||
|
||
def debug_import_issue():
|
||
"""调试导入问题"""
|
||
fm = FinanceManager()
|
||
|
||
print("=" * 60)
|
||
print("财务模块 - 导入查询调试")
|
||
print("=" * 60)
|
||
|
||
# 1. 显示当前所有账户
|
||
print("\n1️⃣ 当前所有账户:")
|
||
all_accounts = fm.get_all_accounts()
|
||
for i, account in enumerate(all_accounts, 1):
|
||
print(f" [{i}] {account.name} (ID: {account.id})")
|
||
print(f" 交易数: {len(account.transactions)}")
|
||
if account.transactions:
|
||
for j, trans in enumerate(account.transactions[:3], 1):
|
||
print(f" - [{j}] {trans.date} | {trans.trader} | ¥{trans.amount:.2f}")
|
||
if len(account.transactions) > 3:
|
||
print(f" ... 还有 {len(account.transactions) - 3} 条记录")
|
||
|
||
if not all_accounts:
|
||
print(" ❌ 没有账户")
|
||
return
|
||
|
||
# 2. 针对每个账户进行详细检查
|
||
for account in all_accounts:
|
||
print(f"\n2️⃣ 账户 '{account.name}' 的详细信息:")
|
||
print(f" - 账户 ID: {account.id}")
|
||
print(f" - 创建时间: {account.created_at}")
|
||
print(f" - 交易总数: {len(account.transactions)}")
|
||
|
||
if account.transactions:
|
||
print(f" - 金额范围: ¥{min(t.amount for t in account.transactions):.2f} ~ ¥{max(t.amount for t in account.transactions):.2f}")
|
||
|
||
# 按日期排序显示
|
||
sorted_trans = sorted(account.transactions, key=lambda x: x.date)
|
||
print(f" - 日期范围: {sorted_trans[0].date} ~ {sorted_trans[-1].date}")
|
||
|
||
# 显示样本交易
|
||
print(f"\n 📋 交易样本 (前5条):")
|
||
for i, trans in enumerate(sorted_trans[:5], 1):
|
||
print(f" [{i}] 日期: {trans.date}")
|
||
print(f" 交易人: {trans.trader}")
|
||
print(f" 金额: ¥{trans.amount:.2f}")
|
||
print(f" 备注: {trans.notes or '(无)'}")
|
||
print(f" ID: {trans.id}")
|
||
|
||
# 3. 测试查询功能
|
||
print("\n3️⃣ 测试查询功能:")
|
||
if all_accounts:
|
||
test_account = all_accounts[0]
|
||
print(f" 使用账户: '{test_account.name}'")
|
||
|
||
# 无条件查询
|
||
print(f"\n a) 无条件查询:")
|
||
results = fm.query_transactions(test_account.id)
|
||
print(f" 结果数: {len(results)} 条")
|
||
|
||
# 有条件查询
|
||
if test_account.transactions:
|
||
first_trans = sorted(test_account.transactions, key=lambda x: x.date)[0]
|
||
print(f"\n b) 按日期查询 (>= {first_trans.date}):")
|
||
results = fm.query_transactions(test_account.id, date_start=first_trans.date)
|
||
print(f" 结果数: {len(results)} 条")
|
||
|
||
# 金额查询
|
||
min_amount = min(t.amount for t in test_account.transactions)
|
||
print(f"\n c) 按金额查询 (>= ¥{min_amount:.2f}):")
|
||
results = fm.query_transactions(test_account.id, amount_min=min_amount)
|
||
print(f" 结果数: {len(results)} 条")
|
||
|
||
# 4. 检查数据文件
|
||
print("\n4️⃣ 检查数据文件位置:")
|
||
data_root = fm.data_root
|
||
print(f" 数据根目录: {data_root}")
|
||
|
||
accounts_dir = data_root / 'accounts'
|
||
if accounts_dir.exists():
|
||
print(f" 账户目录存在: ✅")
|
||
account_dirs = list(accounts_dir.iterdir())
|
||
print(f" 账户文件夹数: {len(account_dirs)}")
|
||
for acc_dir in account_dirs[:3]:
|
||
print(f" - {acc_dir.name}/")
|
||
metadata_file = acc_dir / 'metadata.json'
|
||
if metadata_file.exists():
|
||
print(f" metadata.json: ✅")
|
||
else:
|
||
print(f" 账户目录不存在: ❌")
|
||
|
||
print("\n" + "=" * 60)
|
||
print("调试完成!")
|
||
print("=" * 60)
|
||
|
||
if __name__ == '__main__':
|
||
debug_import_issue()
|