"""
priority_engine.py
Mengurutkan rekomendasi berdasarkan kombinasi impact vs effort,
sehingga pengguna tahu tindakan mana yang paling efektif dilakukan lebih dulu.
"""

IMPACT_SCORE = {"high": 3, "medium": 2, "low": 1}
EFFORT_SCORE = {"low": 3, "medium": 2, "high": 1}  # effort rendah = lebih mudah = skor lebih tinggi


def prioritize(recommendations: list[dict]) -> list[dict]:
    def priority_value(rec):
        impact = IMPACT_SCORE.get(rec["impact"], 1)
        effort = EFFORT_SCORE.get(rec["effort"], 1)
        # Quick wins (impact tinggi, effort rendah) naik ke atas
        return impact * 2 + effort

    ranked = sorted(recommendations, key=priority_value, reverse=True)
    for idx, rec in enumerate(ranked, start=1):
        rec["priority_rank"] = idx
        rec["quick_win"] = rec["impact"] == "high" and rec["effort"] == "low"
    return ranked
