"""
Configurazione centralizzata del progetto.

Unico punto dove sono definiti: path degli artefatti, nomi dei modelli,
parametri di ricerca e costanti di sessione. Tutti gli altri moduli
importano da qui, evitando valori hardcoded sparsi nel codice.
"""

import os
from dotenv import load_dotenv

# Carica le variabili d'ambiente da .env (API keys)
load_dotenv()

# --- Path Progetto ---
# Risale di due livelli: utils/config.py → utils/ → root progetto
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# --- Path Artefatti ---
ARTIFACTS_DIR = os.path.join(PROJECT_ROOT, "artifacts")
FAISS_PRODUCT_INDEX = os.path.join(ARTIFACTS_DIR, "faiss_products")      # Indice FAISS catalogo (100k prodotti)
FAISS_ROUTER_INDEX = os.path.join(ARTIFACTS_DIR, "faiss_router")         # Indice FAISS router (few-shot examples)
RECOMMENDER_MODEL_PATH = os.path.join(ARTIFACTS_DIR, "recommender_model.pkl")  # Modello LightFM ibrido
METADATA_PATH = os.path.join(ARTIFACTS_DIR, "metadata_cleaned.json")     # Metadati prodotti (ASIN, titolo, prezzo, ecc.)

# --- Modelli ---
EMBEDDING_MODEL_NAME = "all-MiniLM-L6-v2"  # Sentence-transformer per embedding testuali
LLM_MODEL_NAME = "gpt-4o-mini"             # LLM per router, traduzione e risposte
LLM_TEMPERATURE = 0                        # Deterministico (nessuna variabilita')

# --- Parametri Ricerca ---
PRODUCT_SEARCH_K = 20   # Quanti prodotti restituisce FAISS al Search Agent
ROUTER_SEARCH_K = 5     # Quanti esempi few-shot restituisce FAISS al Router

# --- Sessione ---
DEFAULT_THREAD_ID = "memorysaver_id"  # ID sessione per il MemorySaver di LangGraph
