import joblib
import pandas as pd
# Импортируем наши классы, чтобы joblib мог их десериализовать
from train import TextExtractor, NumberExtractor

# 1. Загружаем модель
model = joblib.load('solution/model/mcc_model.pkl')

# 2. Подготавливаем тестовые данные (как они придут в API)
test_json = {
    "transaction_id": "TX00001116",
    "terminal_name": "STORE001",
    "terminal_description": "common common common thing",
    "city": "NYC",
    "amount": 272.80,
    "items": [
        {"name": "basic loyalty", "price": 58.20},
        {"name": "Bringiong item lifes", "price": 28.99}
    ]
}


# 3. Преобразуем в формат, который понимает пайплайн (как в main.py)
items_str = " ".join([i['name'] for i in test_json['items']])
full_text = f"{test_json['terminal_name']} {test_json['terminal_description']} {items_str}".lower()

input_df = pd.DataFrame([{
    'full_text': full_text,
    'amount': test_json['amount']
}])

# 4. Делаем предсказание
prediction = model.predict(input_df)[0]
confidence = model.predict_proba(input_df).max()

print(f"Transaction ID: {test_json['transaction_id']}")
print(f"Predicted MCC: {prediction}")
print(f"Confidence: {confidence:.4f}")
