Stack Academy — Документація
NestJS-сервіс внутрішньої школи. Курси → модулі → уроки → відповіді. Менторинг (mentor ↔ trainee). Привʼязаний до юзерів стеку, не до Family.
API
- Live Swagger: api.besocial.tech/academy/api-docs
Ролі в academy
Конкретна StackRole не визначає доступ напряму — все залежить від призначення на курсі. Зводиться до 3 типів доступу:
- Director —
director(завжди повний доступ) - 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 нюанси для виправлення)