#!/usr/bin/env python3
"""
Минимальный инкрементальный индексер для Meilisearch — добавляет только сообщения из указанного файла.
"""
import json
import time
import os
from pathlib import Path

# Убираем proxy для локальных запросов ДО импорта meilisearch
for k in list(os.environ):
    if "proxy" in k.lower():
        del os.environ[k]

import meilisearch

MEILI_URL = "http://127.0.0.1:7700"
INDEX_NAME = "snowbike_messages"
INCREMENTAL_FILE = Path(__file__).parent.parent / "data" / "incremental_20260407.jsonl"
BATCH_SIZE = 1000

def main():
    print("=== Инкрементальная индексация Meilisearch ===")

    client = meilisearch.Client(MEILI_URL)
    health = client.health()
    print(f"Meilisearch: {health}")

    index = client.get_index(INDEX_NAME)
    stats = index.get_stats()
    print(f"Текущих документов: {stats.number_of_documents}")

    # Load incremental messages
    messages = []
    with open(INCREMENTAL_FILE, "r", encoding="utf-8") as f:
        for line in f:
            line = line.strip()
            if line:
                messages.append(json.loads(line))
    print(f"Загружено из incremental: {len(messages)} сообщений")

    # Add documents
    task = index.add_documents(messages)
    print(f"Task UID: {task.task_uid}")
    
    # Wait for completion
    start = time.time()
    while time.time() - start < 120:
        t = client.get_task(task.task_uid)
        if t.status in ("succeeded", "failed", "canceled"):
            print(f"Статус: {t.status}")
            if t.status == "failed":
                print(f"Ошибка: {t.error}")
            break
        time.sleep(1)
    
    final_stats = index.get_stats()
    print(f"Документов после индексации: {final_stats.number_of_documents}")
    print("Готово!")


if __name__ == "__main__":
    main()
