Бюджет: 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. Без доступа к коду и базе точную оценку давать не буду, но по описанию это скорее небольшая архитектурная доработка, а не задача на пару часов.--