Answer
src/modules/answer/schemas/answer.schemas.ts · колекція academy_answers
Відповіді уроку Trainee. Один документ на пару (lessonId, traineeId).
Поля
- courseId, moduleId, lessonId, traineeId — координати
- dateCreated, dateChecked —
number | null.dateChecked = nullпоки не перевірено Mentor. - results:
AnswerItem[]—{id, answer?, answers?}.id— ID питання в уроці.answer— текстова відповідь,answers— масив індексів обраних варіантів (radio/checkbox).
Стани
dateChecked | results | Що означає |
|---|---|---|
null | непорожній | На модерації (Mentor має перевірити) |
number | будь-який | Перевірено / автоматично завершено |
TraineeLessonStatus (для UI Trainee): In progress, Finished, On moderation.
Нюанси
- Унікальність: одна пара
(lessonId, traineeId)→ один Answer.setAnswersпадає з помилкою якщо вже існує. - Авто-Finished для не-тестів: якщо в
setAnswersresultsбезanswer/answers(порожні AnswerItem-и для media/text/image-уроків) →dateChecked = Date.now()одразу + переоцінкаcurrentLesson. Інакше — на модерації. checkAnswers(isCorrectly:true)→ ставитьdateChecked = Date.now()(Finished).checkAnswers(isCorrectly:false)→ видаляє Answer цілком. Trainee має перездати урок (це не зберігання помилкової спроби, а скидання).changeStatus(Finished)Trainee (trainee-service) — для всіх ще-не-пройденихisHidden:falseуроків створюються пусті Answer-и зdateChecked = Date.now()(заглушки для коректної історії).- Чистка: Answer-и видаляються при видаленні lesson / module / course.