#!/usr/bin/env python3
"""
Alege o tehnică de pauză random din memory/tehnici-pauza.md
În funcție de ora curentă (București = UTC+2):
- 09:00-17:00 → BIROU
- 18:00+ → ACASĂ

Output include: tehnica + rezultat + sursă (pentru context)
"""

import random
import re
from datetime import datetime, timezone, timedelta
from pathlib import Path

# Timezone București (UTC+2, simplificat)
TZ_OFFSET = timedelta(hours=2)

def get_bucharest_hour():
    """Returnează ora curentă în București."""
    utc_now = datetime.now(timezone.utc)
    bucharest_now = utc_now + TZ_OFFSET
    return bucharest_now.hour

def parse_tehnici(filepath):
    """Parsează fișierul și returnează dict cu BIROU și ACASA."""
    content = Path(filepath).read_text(encoding='utf-8')
    
    tehnici = {'BIROU': [], 'ACASA': []}
    current_section = None
    current_tehnica = None
    current_detalii = []
    current_rezultat = None
    current_sursa = None
    
    for line in content.split('\n'):
        # Detectează secțiunea
        if '## BIROU' in line:
            current_section = 'BIROU'
            continue
        elif '## ACASĂ' in line or '## ACASA' in line:
            current_section = 'ACASA'
            continue
        elif line.startswith('## ') or line.startswith('---'):
            # Altă secțiune (Surse, etc.) - salvează și oprește
            if current_section and current_tehnica:
                tehnici[current_section].append({
                    'titlu': current_tehnica,
                    'detalii': current_detalii,
                    'rezultat': current_rezultat,
                    'sursa': current_sursa
                })
            current_section = None
            continue
        
        if not current_section:
            continue
            
        # Detectează titlu tehnică (### Titlu)
        if line.startswith('### '):
            # Salvează tehnica anterioară
            if current_tehnica:
                tehnici[current_section].append({
                    'titlu': current_tehnica,
                    'detalii': current_detalii,
                    'rezultat': current_rezultat,
                    'sursa': current_sursa
                })
            current_tehnica = line[4:].strip()
            current_detalii = []
            current_rezultat = None
            current_sursa = None
        elif line.startswith('- **Rezultat:**'):
            current_rezultat = line.replace('- **Rezultat:**', '').strip()
        elif line.startswith('- **Sursă:**'):
            current_sursa = line.replace('- **Sursă:**', '').strip()
        elif line.startswith('- ') and current_tehnica:
            # Detaliu (bullet point, exclude doar Rezultat și Sursă)
            detaliu = line[2:].strip()
            # Curăță bold markers
            detaliu = re.sub(r'\*\*([^*]+)\*\*:', r'\1:', detaliu)
            if detaliu:
                current_detalii.append(detaliu)
    
    # Salvează ultima tehnică
    if current_section and current_tehnica:
        tehnici[current_section].append({
            'titlu': current_tehnica,
            'detalii': current_detalii,
            'rezultat': current_rezultat,
            'sursa': current_sursa
        })
    
    return tehnici

def formateaza_mesaj(tehnica):
    """Formatează tehnica pentru mesaj Discord cu context."""
    titlu = tehnica['titlu']
    detalii = tehnica['detalii']
    rezultat = tehnica.get('rezultat')
    sursa = tehnica.get('sursa')
    
    # Alege un detaliu random dacă sunt mai multe
    if detalii:
        detaliu = random.choice(detalii)
    else:
        detaliu = ""
    
    # Construiește mesajul
    lines = [f"**{titlu}**"]
    if detaliu:
        lines.append(detaliu)
    if rezultat:
        lines.append(f"📊 _{rezultat}_")
    if sursa:
        # Extrage link-uri din markdown [text](url) și afișează separat
        link_pattern = re.compile(r'\[([^\]]+)\]\(([^)]+)\)')
        links = link_pattern.findall(sursa)
        # Curăță sursa de markdown links pentru text simplu
        sursa_clean = link_pattern.sub(r'\1', sursa)
        lines.append(f"📚 {sursa_clean}")
        # Adaugă link-urile pe linii separate
        for text, url in links:
            lines.append(f"🔗 <{url}>")
    
    return '\n'.join(lines)

def main():
    filepath = Path(__file__).parent.parent / 'memory/kb/tehnici-pauza.md'
    
    if not filepath.exists():
        print("Fișierul tehnici-pauza.md nu există!")
        return
    
    hora = get_bucharest_hour()
    tehnici = parse_tehnici(filepath)
    
    # Alege secțiunea în funcție de oră
    if 9 <= hora <= 17:
        sectiune = 'BIROU'
    else:
        sectiune = 'ACASA'
    
    if not tehnici[sectiune]:
        print(f"Nu am tehnici pentru secțiunea {sectiune}!")
        return
    
    # Alege o tehnică random
    tehnica = random.choice(tehnici[sectiune])
    mesaj = formateaza_mesaj(tehnica)
    
    print(mesaj)

if __name__ == '__main__':
    main()
