Stack Academy — Документація

NestJS-сервіс внутрішньої школи. Курси → модулі → уроки → відповіді. Менторинг (mentor ↔ trainee). Привʼязаний до юзерів стеку, не до Family.

API

Ролі в academy

Конкретна StackRole не визначає доступ напряму — все залежить від призначення на курсі. Зводиться до 3 типів доступу:

  • Directordirector (завжди повний доступ)
  • Mentors: hr, topManager, client_manager, supervisor
  • Trainees: client_manager, supervisor, operator
  • recruiter — НЕ має доступу academy; має тільки trainee/getTraineeProgress (прогрес кандидата у курсах) — тригерить з картки кандидата у stack-client

client_manager і supervisor можуть бути Mentor або Trainee, але тільки щось одне в одному курсі; client_manager — навіть на тому ж курсі одночасно.

Карта модулів

flowchart TB
    h_e["[Сутності]"]:::header
    h_s["[Сервіси]"]:::header
    h_y["[System]"]:::header

    course["Course"]
    module["Module"]
    lesson["Lesson"]
    answer["Answer"]

    cs["CourseService"]
    ms["ModuleService"]
    ls["LessonService"]
    ansvc["AnswerService"]
    mts["MentorService"]
    ts["TraineeService"]

    rmq["RMQService"]
    file["FileService"]

    h_e ~~~ course
    h_s ~~~ cs
    h_y ~~~ rmq

    course ~~~ module ~~~ lesson ~~~ answer
    cs ~~~ ms ~~~ ls ~~~ ansvc ~~~ mts ~~~ ts
    rmq ~~~ file

    classDef header fill:transparent,stroke:transparent,stroke-width:8px,font-weight:bold
    classDef ent fill:#f3e5f5,stroke:#7b1fa2
    classDef svc fill:#e8f5e9,stroke:#388e3c
    classDef sys fill:#eceff1,stroke:#546e7a

    class course,module,lesson,answer ent
    class cs,ms,ls,ansvc,mts,ts svc
    class rmq,file sys

    click cs "/services/academy/services/CourseService"
    click ms "/services/academy/services/ModuleService"
    click ls "/services/academy/services/LessonService"
    click ansvc "/services/academy/services/AnswerService"
    click mts "/services/academy/services/MentorService"
    click ts "/services/academy/services/TraineeService"
    click course "/services/academy/entities/Course"
    click module "/services/academy/entities/Module"
    click lesson "/services/academy/entities/Lesson"
    click answer "/services/academy/entities/Answer"
    click rmq "/services/academy/system/RMQService"
    click file "/services/academy/system/FileService"

Категорії

Сервіси

  • course-service — курси (CRUD, addTrainee, перетягнути модулі, mentor/trainee content)
  • module-service — модулі (CRUD, перестановка уроків)
  • lesson-service — уроки (CRUD, copy, переміщення між модулями, статуси Trainee)
  • answer-service — здача тестів і перевірка
  • mentor-service — резолв імен через RMQ + edit-access
  • trainee-service — список Trainee + прогрес для звітів

Сутності

  • course — курс (mentors, trainees, modulePositions)
  • module — модуль (lessonPositions, isHidden)
  • lesson — урок (поліморфний content: media/image/text/test)
  • answer — здача (один на (lessonId, traineeId))

Системні

  • rmq-service — RabbitMQ канали
  • file-service — проксі на stack для аватарів
  • auth — Auth + Roles (#fix: 3 нюанси для виправлення)

3 items under this folder.