from __future__ import annotations

from app.features.personalized_reco.rerank_freqcap.types import RerankConfig, Scene


_DEFAULTS: dict[Scene, RerankConfig] = {
    # Feed：MMR λ=0.7；冷却参数不强制使用
    "feed": RerankConfig(
        mmr_lambda=0.7,
        top_n_for_mmr=200,
        cooldown_sentence_days=0,
        cooldown_author_days=0,
        cooldown_template_days=0,
    ),
    # Push：工程默认（来自算法规则的建议参数）
    "push": RerankConfig(
        mmr_lambda=0.7,
        top_n_for_mmr=200,
        cooldown_sentence_days=14,
        cooldown_author_days=7,
        cooldown_template_days=7,
    ),
    # Widget：工程默认
    "widget": RerankConfig(
        mmr_lambda=0.7,
        top_n_for_mmr=200,
        cooldown_sentence_days=7,
        cooldown_author_days=7,
        cooldown_template_days=7,
    ),
}


def get_default_config(scene: Scene) -> RerankConfig:
    """
    获取指定场景的默认参数（返回副本，避免被意外修改）。
    """

    base = _DEFAULTS[scene]
    return RerankConfig.model_validate(base.model_dump())

