"""
Единый реестр признаков для ML-моделей.

Цель: ликвидировать 5+ копий get_directional_feature_cols, разбросанных по проекту.
Использовать как единственный источник истины для списка колонок.
"""

from features.technical import FEATURE_COLS, INTERACTION_COLS, TEMPORAL_COLS
from features.directional import DIRECTIONAL_COLS, SHORT_SPECIFIC_COLS
from features.context import CONTEXT_COLS
from features.mtf_context import MTF_CONTEXT_COLS


def get_directional_cols(multi: bool = False) -> list[str]:
    """
    Возвращает полный список признаков, используемых в моделях.

    Порядок: directional → short_specific → technical → context → interactions → temporal → mtf.
    Дубликаты удаляются с сохранением порядка (dict.fromkeys).

    Args:
        multi: Если True — добавляются префиксные копии DIRECTIONAL_COLS + FEATURE_COLS для D1/W1.

    Returns:
        Список имён колонок (без дубликатов).
    """
    cols = list(dict.fromkeys(
        DIRECTIONAL_COLS + SHORT_SPECIFIC_COLS + FEATURE_COLS + CONTEXT_COLS
        + INTERACTION_COLS + TEMPORAL_COLS + MTF_CONTEXT_COLS
    ))
    if multi:
        multi_cols = list(dict.fromkeys(DIRECTIONAL_COLS + FEATURE_COLS))
        cols += [f'{tf}_{col}' for tf in ['D1', 'W1'] for col in multi_cols]
    return list(dict.fromkeys(cols))
