#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Тестирование приоритетных правил для калорий в AI-КАЛОРИЯ боте
"""

import os
import sys
import json
from pathlib import Path

# Добавляем текущую директорию в путь
sys.path.insert(0, str(Path(__file__).parent))

# Загружаем переменные окружения
from dotenv import load_dotenv
load_dotenv()

def test_priority_calories():
    """Тестирование приоритетных правил для калорий"""
    print("🧪 Тестирование приоритетных правил для калорий...")
    
    try:
        from openai_client import OpenAIClient
        
        # Проверяем API ключ
        api_key = os.getenv('OPENAI_API_KEY')
        if not api_key:
            print("❌ OPENAI_API_KEY не установлен")
            return False
        
        client = OpenAIClient(api_key)
        
        # Тестовые случаи с указанными калориями
        test_cases = [
            "овсянка 200 калорий",
            "гречка 300 ккал",
            "яблоко 50 калорий",
            "банан 80 ккал",
            "капучино 150 калорий",
            "латте 200 ккал",
            "флэт вайт 180 калорий",
            "молоко 100 ккал",
            "сок 80 калорий",
            "вода 0 ккал",
            "Съел овсянку 250 калорий",
            "Выпил капучино 120 ккал"
        ]
        
        for test_text in test_cases:
            print(f"\n📝 Тестируем: '{test_text}'")
            result = client.analyze_food_intake(test_text)
            print(f"✅ Результат: {json.dumps(result, ensure_ascii=False, indent=2)}")
            
            if result.get('success'):
                print(f"   🍽️ {result['food_name']} - {result['amount']} {result['unit']} - {result['calories']} ккал")
                # Проверяем, что использованы указанные пользователем калории
                expected_calories = None
                if "200 калорий" in test_text:
                    expected_calories = 200
                elif "300 ккал" in test_text:
                    expected_calories = 300
                elif "50 калорий" in test_text:
                    expected_calories = 50
                elif "80 ккал" in test_text:
                    expected_calories = 80
                elif "150 калорий" in test_text:
                    expected_calories = 150
                elif "200 ккал" in test_text:
                    expected_calories = 200
                elif "180 калорий" in test_text:
                    expected_calories = 180
                elif "100 ккал" in test_text:
                    expected_calories = 100
                elif "80 калорий" in test_text:
                    expected_calories = 80
                elif "0 ккал" in test_text:
                    expected_calories = 0
                elif "250 калорий" in test_text:
                    expected_calories = 250
                elif "120 ккал" in test_text:
                    expected_calories = 120
                
                if expected_calories is not None:
                    if result['calories'] == expected_calories:
                        print(f"   ✅ Приоритет работает: использованы указанные {expected_calories} ккал")
                    else:
                        print(f"   ⚠️ Приоритет не сработал: ожидалось {expected_calories} ккал, получено {result['calories']} ккал")
            else:
                print(f"   ❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}")
        
        return True
        
    except Exception as e:
        print(f"❌ Ошибка при тестировании: {e}")
        return False

def main():
    """Основная функция тестирования"""
    print("🧪 Запуск тестов приоритетных правил для калорий\n")
    
    success = test_priority_calories()
    
    if success:
        print("\n🎉 Тестирование завершено!")
    else:
        print("\n⚠️ Тестирование завершено с ошибками")
    
    return 0 if success else 1

if __name__ == '__main__':
    exit_code = main()
    sys.exit(exit_code)
