Questa è un'ottima mossa. Usare un Coding Agent (come **Claude Dev** o **GitHub Copilot** in VS Code) leggendo un file di contesto è il modo più professionale per mantenere la continuità.

Ecco il file **`PROJECT_CONTEXT_STATUS.md`**.
Salvalo nella cartella principale del tuo progetto (`~/Desktop/tesi`).

Quando aprirai VS Code e attiverai l'Agente, la tua prima istruzione sarà:

> *"Leggi il file PROJECT_CONTEXT_STATUS.md e aiutami a completare il task 1: Migrazione a OpenAI."*

---

### Copia il contenuto qui sotto e salvalo come `PROJECT_CONTEXT_STATUS.md`

```markdown
# 📂 PROJECT CONTEXT & STATUS: Fashion E-Commerce Chatbot (Tesi)

## 1. Obiettivo del Progetto
Sviluppare un **Chatbot Multi-Agente** per e-commerce nel dominio Fashion. Il sistema deve orchestrare diversi "esperti" (Agenti) per gestire ricerche specifiche di prodotti, raccomandazioni personalizzate e assistenza clienti, superando i limiti dei chatbot basati solo su regole o solo su LLM generici.

## 2. Architettura Tecnica
* **Orchestrator:** LangGraph (StateGraph con nodi condizionali).
* **Framework:** LangChain.
* **LLM Attuale:** Google Gemini (In fase di migrazione a OpenAI GPT-4o-mini per problemi di stabilità).
* **Vector Database:** FAISS (Locale) con embeddings `all-MiniLM-L6-v2`.
* **Recommender Engine:** LightFM (Hybrid/Collaborative Filtering) addestrato su recensioni reali.
* **Ambiente:** Python 3.9 (Virtual Environment `.venv`) su macOS M1 (Apple Silicon).

## 3. Struttura dei File (Situazione Attuale)
I file sono posizionati in `~/Desktop/tesi`.

### 🟢 Script Core (Runtime)
* **`main_thesis_bot.py`**: L'entry point principale. Contiene la logica LangGraph, il Router, e la definizione dei Nodi (Agenti). **È qui che bisogna intervenire per il cambio LLM.**
* **`.env`**: Contiene le chiavi API (`GOOGLE_API_KEY`, da aggiungere `OPENAI_API_KEY`).

### 🟡 Pipeline Dati (ETL - Già Eseguiti)
* **`process_metadata_heavy.py`**: Ha letto il file raw `meta_Clothing_Shoes_and_Jewelry.jsonl` (Gigante) e creato `metadata_cleaned_final.json` (100k prodotti con immagini).
* **`process_reviews_heavy.py`**: Ha letto il file raw `Clothing_Shoes_and_Jewelry.jsonl` (28GB) e creato `reviews_cleaned_final.json` (500k recensioni positive).
* **`build_search_index.py`**: Ha letto i metadati puliti e creato l'indice FAISS (`faiss_index_fashion`).
* **`train_recommender_final.py`**: Ha letto le recensioni pulite e creato il modello LightFM (`recommender_model.pkl`).

### 🔴 Artefatti Generati (NON TOCCARE)
* Cartella `faiss_index_fashion/`: Indice vettoriale dei prodotti.
* Cartella `faiss_router_index/`: Indice vettoriale per il few-shot learning del Router.
* File `recommender_model.pkl`: Modello LightFM binario.

## 4. Stato Funzionale degli Agenti

### A. Router Agent (✅ Funzionante)
* Analizza l'input utente.
* Usa FAISS per cercare esempi simili (Few-Shot) e decide a chi passare la palla (`agent_ricerca`, `agent_recommender`, `agent_default`).

### B. Search Agent (⚠️ Funzionante ma instabile)
* **Logica:**
    1.  Riceve query in Italiano.
    2.  Usa LLM per tradurre/espandere la query in Inglese (Keywords per dataset Amazon).
    3.  Interroga FAISS (`k=20`).
    4.  Usa LLM per filtrare i risultati e rispondere in Italiano.
* **Problema:** L'uso intensivo dell'LLM (3 chiamate per ciclo) causa errore `429 Resource Exhausted` con le API Google Gemini Free.

### C. Recommender Agent (✅ Funzionante)
* Usa `LightFM` per calcolare similarità Item-to-Item (vettori latenti).
* Restituisce ID prodotti reali (`ASIN`).
* Funziona perfettamente offline (non consuma API LLM per la selezione, solo per la presentazione).

## 5. Task List Immediata (Next Steps)

### 👉 PRIORITY 1: Migrazione a OpenAI (GPT-4o-mini)
L'attuale implementazione Google Gemini è instabile per una demo di tesi (troppi blocchi quota).
Bisogna passare a OpenAI.

**Istruzioni per l'Agente:**
1.  Verificare che `langchain-openai` sia installato.
2.  Modificare `main_thesis_bot.py`:
    * Sostituire `from langchain_google_genai import ChatGoogleGenerativeAI` con `from langchain_openai import ChatOpenAI`.
    * Aggiornare l'inizializzazione `llm` per usare `model="gpt-4o-mini"`.
3.  Testare la stabilità del bot con query consecutive.

### 👉 PRIORITY 2: Visual Recommender (Opzionale/Avanzato)
Se il tempo lo permette, integrare la ricerca visuale.
* Scaricare/Usare modello `Trendyol DinoV2` (o CLIP).
* Permettere all'utente di dire "Voglio qualcosa simile a questa immagine".

### 👉 PRIORITY 3: Valutazione
Implementare script per calcolare metriche di base (es. accuratezza del Router nel classificare intenti di test).

## 6. Note Importanti per lo Sviluppo
* **Gestione Errori:** Mantenere sempre i blocchi `try/except` nel `main_thesis_bot.py` per evitare crash durante la demo.
* **Dataset:** Non provare MAI a leggere i file `.jsonl` raw (28GB) durante l'esecuzione del bot. Usare solo i file `_cleaned_final.json` o gli indici FAISS/Pickle.
* **Lingua:** Il dataset è in Inglese, l'Utente è Italiano. Il layer di traduzione nel `nodo_ricerca` è fondamentale.

```