#!/usr/bin/env python3 """ 定时任务:将最近 N 天的交易数据聚合到 trade_stats_daily / trade_stats_time_bucket。 优先从 binance_trades 读取(需先跑 sync_binance_orders.py),无数据时用 trades 表。 用法: python scripts/aggregate_trade_stats.py # 默认 7 天、默认账号 python scripts/aggregate_trade_stats.py -d 30 # 最近 30 天 python scripts/aggregate_trade_stats.py -a 2 # 指定账号 """ import argparse import sys from pathlib import Path proj = Path(__file__).resolve().parent.parent if (proj / "backend").exists(): sys.path.insert(0, str(proj / "backend")) sys.path.insert(0, str(proj)) def main(): parser = argparse.ArgumentParser(description="聚合交易统计到 trade_stats_* 表") parser.add_argument("-a", "--account", type=int, default=None, help="账号 ID,不传则用默认") parser.add_argument("-d", "--days", type=int, default=7, help="聚合最近 N 天,默认 7") args = parser.parse_args() if args.days <= 0: print("days 须 > 0") sys.exit(1) try: from database.models import TradeStats TradeStats.aggregate_recent_days(days=args.days, account_id=args.account) print(f"已聚合最近 {args.days} 天统计 (account_id={args.account or 'default'})") except Exception as e: print(f"聚合失败: {e}") sys.exit(1) if __name__ == "__main__": main()