import json
from modules.processing.llm1.config import FOLDER_PATH
#from modules.processing.llm1.document_processor import process_folder
from modules.processing.llm1.vector_store import VectorStore
from modules.processing.llm1.retrieval_qa import RetrievalQAProcessor
from modules.data_collection.mongodb_storage import MongoDBStorage

# Configuración inicial
USUARIO = "mindefensa"
USUARIO2 = "petrogustavo"
CANTIDAD = 20
MONGO_URI = "mongodb://localhost:27017"
DB_NAME = "Armada"
COLLECTION_NAME = "tweets"
# Inicializar el almacenamiento en MongoDB
mongo_storage = MongoDBStorage(MONGO_URI, DB_NAME, COLLECTION_NAME)


def categorias(documentos):
    cantidad_categorias = 10

    #documentos = mongo_storage.obtener_tweets_sem()  # ✅ ya es lista directamente


    print(f"Total documentos cargados para categorizar: {len(documentos)}")

    vector_store = VectorStore().create_store(documentos)
    qa_processor = RetrievalQAProcessor(vector_store, cantidad_categorias)
    respuesta = qa_processor.query("Categoriza los tweets")

    try:
        json_inicio = respuesta.find("{")
        json_fin = respuesta.rfind("}") + 1
        json_puro = respuesta[json_inicio:json_fin]

        data = json.loads(json_puro)

        with open('resultado.json', 'w', encoding='utf-8') as f:
            json.dump(data, f, ensure_ascii=False, indent=2)

        mongo_storage.guardar_categorias(data, USUARIO)

        print("El archivo 'resultado.json' y las categorías en MongoDB fueron generadas correctamente.")
        return data
    except json.JSONDecodeError as e:
        print("Error al decodificar el JSON:", e)


def categoriasold():
    cantidad_categorias = 10 #int(input("Ingrese la cantidad a categorizar: "))

    # Procesar documentos
    documents = mongo_storage.obtener_tweets()   #process_folder(FOLDER_PATH)

    # Crear vector store
    vector_store = VectorStore().create_store(documents)

    # Configurar RetrievalQA
    qa_processor = RetrievalQAProcessor(vector_store, cantidad_categorias)

    # Ejecutar consulta
    respuesta = qa_processor.query("Categoriza los tweets")

    # Guardar resultado
    try:
        json_inicio = respuesta.find("{")
        json_fin = respuesta.rfind("}") + 1
        json_puro = respuesta[json_inicio:json_fin]

        data = json.loads(json_puro)
        with open('resultado.json', 'w', encoding='utf-8') as f:
            json.dump(data, f, ensure_ascii=False, indent=2)

        print("El archivo 'resultado.json' ha sido generado correctamente.")
        return data
    except json.JSONDecodeError as e:
        print("Error al decodificar el JSON:", e)
