answer

Answer

src/modules/answer/schemas/answer.schemas.ts · колекція academy_answers

Відповіді уроку Trainee. Один документ на пару (lessonId, traineeId).

Поля

  • courseId, moduleId, lessonId, traineeId — координати
  • dateCreated, dateCheckednumber | null. dateChecked = null поки не перевірено Mentor.
  • results: AnswerItem[]{id, answer?, answers?}. id — ID питання в уроці. answer — текстова відповідь, answers — масив індексів обраних варіантів (radio/checkbox).

Стани

dateCheckedresultsЩо означає
nullнепорожнійНа модерації (Mentor має перевірити)
numberбудь-якийПеревірено / автоматично завершено

TraineeLessonStatus (для UI Trainee): In progress, Finished, On moderation.

Нюанси

  • Унікальність: одна пара (lessonId, traineeId) → один Answer. setAnswers падає з помилкою якщо вже існує.
  • Авто-Finished для не-тестів: якщо в setAnswers results без 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.