<?php

declare(strict_types=1);

final class ReminderFatigueScore
{
    public function calculate(array $row): array
    {
        $reminders = (int)($row['reminder_count'] ?? 0);
        $successful = (int)($row['successful_reminders'] ?? 0);
        $ignored = (int)($row['ignored_reminders'] ?? 0);
        $completion = (int)($row['completion_probability'] ?? 50);


        $score = 0;
        $reasons = [];


        /*
         * تعداد Reminder
         */
        if ($reminders >= 3) {

            $score -= 15;
            $reasons[] = "many_reminders";

        }

        if ($reminders >= 5) {

            $score -= 30;
            $reasons[] = "high_reminder_count";

        }



        /*
         * Reminder های نادیده گرفته شده
         */
        if ($ignored > 0) {

            $score -= min(
                30,
                $ignored * 5
            );

            $reasons[] = "ignored_reminders";

        }



        /*
         * کاربر واکنش داده
         */
        if ($successful > 0) {

            $score += min(
                20,
                $successful * 5
            );

            $reasons[] = "successful_response";

        }



        /*
         * احتمال تکمیل بالا
         */
        if ($completion >= 80) {

            $score += 15;
            $reasons[] = "high_completion_probability";

        }


        return [
            'name' => 'fatigue',

            'score' => max(
                -100,
                min(20, $score)
            ),

            // اولین دلیل برای سازگاری فعلی
            'reason' => $reasons[0] ?? null,

            // اطلاعات کامل برای Debug
            'reasons' => $reasons,
        ];
    }
}