import pandas as pd

def prepare_features(df: pd.DataFrame) -> pd.DataFrame:
    """
    Menerima DataFrame dari query SQL dan memastikan fitur terstruktur dengan baik.
    """
    # Memastikan kolom numerik & boolean terformat dengan benar
    df['hari_num'] = pd.to_datetime(df['tanggal']).dt.dayofweek # 0=Senin, 6=Minggu
    df['bulan'] = df['bulan'].astype(int)
    df['tahun'] = df['tahun'].astype(int)
    
    # Cast boolean ke integer 0/1
    bool_cols = [
        'is_weekend', 'is_libur_nasional', 'is_ramadhan', 
        'is_idul_fitri', 'is_idul_adha', 'is_tahun_baru'
    ]
    for col in bool_cols:
        df[col] = df[col].astype(int)
        
    return df

# Daftar kolom yang dijadikan input variabel independen (X) oleh Machine Learning
FEATURE_COLUMNS = [
    'produk_id',
    'hari_num',
    'bulan',
    'tahun',
    'is_weekend',
    'is_libur_nasional',
    'is_ramadhan',
    'is_idul_fitri',
    'is_idul_adha',
    'is_tahun_baru'
]