#!/usr/bin/env python3
"""
Health Watchdog - Überwacht ~/Gesundheit_Inbox auf neue PDFs
und verarbeitet sie automatisch.
"""

import os
import sys
import time
import hashlib
import subprocess
from datetime import datetime
from pathlib import Path

try:
    from watchdog.observers import Observer
    from watchdog.events import FileSystemEventHandler
except ImportError:
    print("[WARN] watchdog nicht installiert. Installiere mit: pip install watchdog")
    sys.exit(1)

# Pfade
INBOX_DIR = Path('/home/agent/.hermes/assets/Gesundheit/inbox')
PROCESSED_DIR = Path('/home/agent/.hermes/assets/Gesundheit/processed')
DB_PATH = Path('/home/agent/.hermes/assets/Gesundheit/health_data.db')

class HealthPDFHandler(FileSystemEventHandler):
    """Verarbeitet neue PDFs im Inbox-Ordner."""
    
    def on_created(self, event):
        if not event.src_path.endswith('.pdf'):
            return
        self._process_pdf(event.src_path)
    
    def on_modified(self, event):
        if not event.src_path.endswith('.pdf'):
            return
        self._process_pdf(event.src_path)
    
    def _process_pdf(self, pdf_path):
        """Verarbeite ein PDF via health_manager.py."""
        print(f"[WATCHDOG] Neues PDF: {pdf_path}")
        
        if not DB_PATH.exists():
            print(f"[WARN] Datenbank nicht gefunden: {DB_PATH}")
            return
        
        try:
            result = subprocess.run(
                ['/usr/bin/python3.12', '-c', 'import sys; sys.path.insert(0, "/home/agent/.hermes/assets/Gesundheit/scripts"); from health_manager import HealthManager; hm = HealthManager(); hm.process_inbox_pdf("' + pdf_path + '")'],
                capture_output=True, text=True, timeout=120
            )
            
            if result.returncode == 0:
                print(f"[WATCHDOG] Erfolgreich: {pdf_path}")
                # Bewege zu processed
                dest = PROCESSED_DIR / os.path.basename(pdf_path)
                if dest.exists():
                    ts = datetime.now().strftime('%Y%m%d_%H%M%S')
                    dest = PROCESSED_DIR / f"{ts}_{os.path.basename(pdf_path)}"
                os.rename(pdf_path, str(dest))
            else:
                print(f"[WATCHDOG] Fehler: {result.stderr[:200]}")
        except Exception as e:
            print(f"[WATCHDOG] Exception: {e}")

def main():
    """Starte den Watchdog."""
    INBOX_DIR.mkdir(parents=True, exist_ok=True)
    PROCESSED_DIR.mkdir(parents=True, exist_ok=True)
    
    print(f"[WATCHDOG] Starte Health Watchdog...")
    print(f"  Inbox: {INBOX_DIR}")
    print(f"  Processed: {PROCESSED_DIR}")
    print(f"  DB: {DB_PATH}")
    print(f"  Drücke STRG+C zum Stoppen.\n")
    
    event_handler = HealthPDFHandler()
    observer = Observer()
    observer.schedule(event_handler, str(INBOX_DIR), recursive=False)
    observer.start()
    
    print("[WATCHDOG] Überwache Inbox-Ordner...")
    
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        print("\n[WATCHDOG] Stoppe...")
        observer.stop()
    
    observer.join()
    print("[WATCHDOG] Gestoppt.")

if __name__ == '__main__':
    main()
