"""
test_DROP_A.py — Stress Test: rimozione della Marca A dal catalogo

Simula lo scenario in cui tutti i prodotti della Marca A vengono rimossi
dall'assortimento e analizza come cambiano le probabilità di scelta dei clienti.

Risultato atteso: i loyal_A perdono i loro prodotti preferiti e ci si aspetta che
ci siano redistribuzioni della prob verso no-buy o verso prodotti di altre marche.

Come funzionano i test_DROP_*.py:
  1. import_dataset()                   : carica il catalogo completo
  2. Crea un'istanza della sottoclasse di stress test con i parametri del filtro
  3. Chiama il metodo sim_*StressTest() : per le probabilità aggiorante
  4. plot_choice_probabilities()        : visualizza il confronto
  5. Salva CSV con prodotti rimasti, probabilità medie, probabilità per segmento

Output:
  - prodotti_noA.csv       : DataFrame prodotti dopo il drop
  - prob_prodotti_noA.csv  : vettore probabilità medie
  - prob_segmenti_noA.csv  : matrice probabilità per segmento
"""
import sys
import os
cartella_progetto = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
if cartella_progetto not in sys.path:
    sys.path.append(cartella_progetto)
from models import *
from plot_segment_test import *
from prepare_data import import_dataset

prodotti_tab=import_dataset() 

test_noA = MarcaDropStressTest(prodotti_tab, marca_drop=["A"])
res_noA = test_noA.sim_MarcaDropStressTest(MNLChoiceModel, LatentChoiceModel)

plot_choice_probabilities(res_noA,test_label= "Drop Marca A",segment_names= ["Loyal A","Loyal B","Loyal C","Loyal D", "Price", "Quality"])

# Esportazione caratteristiche prodotti rimasti
res_noA[0].to_csv(r'test_res\prodotti_noA.csv', index=False)
# Esportazione probabilità prodotti
res_noA[1].to_csv(r'test_res\prob_prodotti_noA.csv', header=False, index=False)
# Esportazione probabilità segmenti
res_noA[2].to_csv(r'test_res\prob_segmenti_noA.csv', header=False, index=False)


