#!/usr/bin/env python3
"""
Real-time signal tracker - runs every 60 seconds.

1. Track new signals when generated
2. Check existing signals for outcomes
3. Update performance metrics
4. Save performance report for UI
"""

import subprocess
import time
import json
from pathlib import Path
from datetime import datetime
import sys

# Add scripts directory to path
sys.path.insert(0, '/home/ubuntu/.hermes/workspace/projects/ORDER_FLOW_GRAPH/scripts')

from signal_tracker import SignalTracker


def main():
    """Main tracking loop."""

    print("="*80)
    print("REAL-TIME SIGNAL TRACKER")
    print("="*80)
    print("\nTracking signals every 60 seconds...")
    print("Press Ctrl+C to stop\n")

    db_path = Path('/home/ubuntu/.hermes/workspace/projects/ORDER_FLOW_GRAPH/data/signal_performance.db')
    tracker = SignalTracker(db_path)

    update_count = 0

    try:
        while True:
            update_count += 1

            print(f"\n[{update_count}] Update at {datetime.now().strftime('%H:%M:%S')}")
            print("-"*80)

            # Track new signals
            print("1. Tracking new signals...")
            result = subprocess.run(
                ['/home/ubuntu/.hermes/hermes-agent/.venv/bin/python3', 'signal_tracker.py'],
                capture_output=True,
                text=True,
                cwd='/home/ubuntu/.hermes/workspace/projects/ORDER_FLOW_GRAPH/scripts'
            )

            if result.returncode == 0:
                # Parse output to see how many signals were added
                for line in result.stdout.split('\n'):
                    if 'Added signal' in line:
                        print(f"  {line.strip()}")
            else:
                print(f"  ✗ Error: {result.stderr}")

            # Check outcomes
            print("\n2. Checking signal outcomes...")
            result = subprocess.run(
                ['/home/ubuntu/.hermes/hermes-agent/.venv/bin/python3', 'check_signal_outcomes.py'],
                capture_output=True,
                text=True,
                cwd='/home/ubuntu/.hermes/workspace/projects/ORDER_FLOW_GRAPH/scripts'
            )

            if result.returncode == 0:
                # Show summary
                in_summary = False
                for line in result.stdout.split('\n'):
                    if 'PERFORMANCE SUMMARY' in line:
                        in_summary = True
                    if in_summary or 'Closed' in line or 'ACTIVE' in line:
                        print(f"  {line}")
            else:
                print(f"  ✗ Error: {result.stderr}")

            # Generate performance report for UI
            print("\n3. Generating performance report...")

            # Import check outcomes function
            import check_signal_outcomes
            summary = check_signal_outcomes.get_performance_summary()

            # Save performance report
            report_file = Path('/home/ubuntu/.hermes/workspace/projects/ORDER_FLOW_GRAPH/outputs/data/performance_report.json')
            with open(report_file, 'w') as f:
                json.dump({
                    'generated_at': datetime.now().isoformat(),
                    'summary': summary
                }, f, indent=2)

            print(f"  ✓ Saved to {report_file}")

            if summary.get('total_signals', 0) > 0:
                print(f"\n  📊 Overall Win Rate: {summary['win_rate']}%")
                print(f"  📊 Total Signals: {summary['total_signals']}")
                print(f"  📊 Profit Factor: {summary.get('profit_factor', 0)}")

            # Wait 60 seconds
            print("\n⏱️  Waiting 60 seconds...")
            time.sleep(60)

    except KeyboardInterrupt:
        print("\n\n✓ Stopped by user")
        print(f"Total updates: {update_count}")


if __name__ == "__main__":
    main()
