MRobot/debug_import_issue.py
2025-11-25 17:26:46 +08:00

108 lines
4.1 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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()