Бюджет: 27000 UAH Термін: 7 днів
Бюджет 3000 грн для такої доопрацювання я б не брав як робочий - ризик втратити прогрес користувачів дорожчий за саму задачу. Мінімально безпечний етап - 28000 грн і 7 робочих днів, після доступу до коду і бази зможу точніше підтвердити обсяг.
НАчинати потрібно не з кнопки Check, а з захисту даних - backup бази, staging-копія, перевірка поточної схеми прогресу, потім міграція і тести на старих уроках. В цілому нормальна логіка - зберегти результат кожного exercise, заблокувати повторне редагування, рахувати прогрес по питанням і дати користувачу продовжити урок пізніше з того ж місця.
> 1 - роблю staging і резервну копію бази
> 2 - додаю зберігання результату exercise - total_questions, correct_answers, answers, status, completed_at, attempts
> 3 - змінюю Check так, щоб після перевірки відповіді зберігалися і exercise блокувався
> 4 - прибираю залежність прогресу від фінальної кнопки уроку
> 5 - оновлюю розрахунок progress по completed_questions і accuracy під майбутній вивід
> 6 - перевіряю сумісність 32 уроків, 32 домашніх завдань і 8 тестів без видалення старої структури
Дивіться, тут нюанс - старий прогрес потрібно не перезаписувати всліпу, а акуратно співвіднести з новою моделлю. Інакше можна отримати красиву кнопку, яка зламає історію навчання, а це вже класика жанру - поспішиш, потім міграції збираєш пінцетом =/
Уточню 2 моменти
> на чому написаний проект - Laravel, WordPress, чистий PHP, Node.js чи інше
> чи є вже окрема таблиця для user answers чи відповіді лежать всередині загального поля уроку
Схожі за змістом приклади Ingello
> https://business.ingello.com/platforma - платформа з особистими кабінетами, ролями і стійкою логікою даних
> https://business.ingello.com/forma-crm - складна ЦРМ-логіка, облік станів і акуратна робота з даними
> https://business.ingello.com/fractal - автоматизація процесів і архітектура, де важливо не просто дописати кнопку, а не зламати систему
Головний профіль для біржі - https://systems-fl.ingello.com
ГОтовий виконати через акуратний тестовий етап - спочатку staging, потім перевірка сценаріїв, потім перенесення на production. Без доступу до коду і бази точну оцінку давати не буду, але за описом це скоріше невелике архітектурне доопрацювання, а не задача на пару годин.