EduStream

Общая документация

Таблица миро: https://miro.com/app/board/uXjVGlSpLBw=/ 

Приоритеты: https://miro.com/app/board/uXjVHxemdSI=/ 

Модули

Модули

Пользователи

Модули

Тренинги

Функциональные требования: Модуль «Тренинги»

Версия: 1.1 Статус: Draft Аудитория: Команда разработки (backend, frontend, QA, PM) Референс: GetCourse (getcourse.ru)


1. Назначение документа

Документ описывает функциональные требования к модулю «Тренинги» — ядру обучающей платформы. Модуль отвечает за:

Документ не описывает технический стек, архитектуру и схему БД — только бизнес-логику и поведение системы.


2. Глоссарий

Термин Определение
Тренинг Корневой образовательный контейнер (курс). Содержит уроки и/или подтренинги.
Подтренинг Тренинг, вложенный в другой тренинг или подтренинг. Используется для разбиения курса на модули/темы. По функционалу идентичен тренингу.
Урок Атомарная единица обучения с контентом (текст, видео, задания и т.д.).
Ученик Пользователь, получивший доступ к тренингу и проходящий обучение.
Группа Сегмент пользователей, используемый для группового управления доступами.
Расписание Правила открытия уроков во времени (по датам или с задержками).
Стоп-урок Урок, блокирующий переход к следующим урокам до его выполнения.

3. Роли пользователей

На текущем этапе в модуле «Тренинги» определена одна роль:

Ученик — пользователь, имеющий доступ к тренингам согласно членству в группах. Может просматривать уроки (с учётом правил открытия) и отправлять ответы на задания.

Остальные роли (администратор, преподаватель и т.д.) будут определены отдельно в последующих версиях документа.


4. Иерархия контента

4.1. Модель

Поддерживается неограниченная вложенность подтренингов:

Тренинг
├── Урок 1
├── Урок 2
├── Подтренинг A
│   ├── Урок A.1
│   ├── Подтренинг A.1
│   │   ├── Урок A.1.1
│   │   └── Подтренинг A.1.1
│   │       └── Урок A.1.1.1
│   └── Урок A.2
├── Подтренинг B
│   ├── Урок B.1
│   └── Урок B.2
└── Урок 3

4.2. Правила

4.3. Терминология: тренинг vs подтренинг

С точки зрения модели данных и поведения системы «тренинг» и «подтренинг» — это одна и та же сущность. Разница только в положении в иерархии:

Один и тот же элемент может быть тренингом или подтренингом в зависимости от того, где он расположен. При переносе корневого тренинга внутрь другого тренинга он становится подтренингом, и наоборот.


5. Сущность «Тренинг / Подтренинг»

5.1. Основные атрибуты

5.2. Статусы

5.3. Действия над тренингом


6. Сущность «Урок»

6.1. Основные атрибуты

6.2. Типы уроков

Для MVP достаточно одного универсального типа урока с составным контентом (текст + медиа + файлы). В дальнейшем могут быть добавлены специализированные типы (вебинар, тест и т.д.), но это за рамками данного документа.

6.3. Задания в уроке

Урок может содержать задание, требующее ответа от ученика. В рамках MVP:

Логика работы с проверкой ответов будет определена в последующих версиях документа.

6.4. Статусы прохождения урока учеником

Для каждой пары «ученик ↔ урок» система хранит статус:


7. Доступы

7.1. Модель доступа: по группам

Доступ к тренингам и подтренингам выдаётся через механизм групп пользователей.

7.2. Управление членством в группе

Членство в группе может изменяться следующими способами:

7.3. Последствия изменения членства

7.4. Доступы к подтренингам

Подтренинг может иметь один из двух режимов доступа:

  1. Наследовать от родителя — подтренинг доступен всем, у кого есть доступ к родительскому тренингу/подтренингу. Это значение по умолчанию.
  2. Собственные группы — подтренинг доступен только пользователям из указанных групп (независимо от доступа к родителю).

Второй режим решает типовой кейс: на тренинг куплены два тарифа (обычный и премиум), премиум-тариф открывает дополнительный подтренинг с бонусами. Ученики обоих тарифов состоят в группе «Основная», но только премиум-ученики — в группе «Премиум», привязанной к бонусному подтренингу.

При наследовании доступа режим применяется транзитивно вниз по иерархии: если подтренинг A наследует доступ от родителя, а подтренинг A.1 (вложенный в A) — тоже наследует, то A.1 будет доступен всем, у кого есть доступ к корневому тренингу.

7.5. Видимость тренинга без доступа

Для тренингов, к которым у пользователя нет доступа, настраивается поведение отображения:

Настройка задаётся на уровне тренинга.


8. Управление прохождением уроков

Существует два независимых механизма ограничения доступа к урокам: расписание и стоп-уроки. Механизмы могут работать одновременно — в этом случае урок доступен ученику только при выполнении обоих условий.

8.1. Расписание: общие положения

Расписание определяет, когда урок становится доступным ученику с точки зрения времени. Расписание настраивается на уровне тренинга или подтренинга. Если контейнер содержит вложенные подтренинги, расписание для уроков внутри каждого подтренинга настраивается отдельно.

Система поддерживает два типа расписания:

  1. Общее — одинаковые даты открытия для всех учеников.
  2. Индивидуальное — даты рассчитываются для каждого ученика от момента получения доступа.

Тип расписания выбирается на уровне тренинга/подтренинга и распространяется на все его уроки.

8.2. Типы расписания

8.2.1. Общее расписание

Для каждого урока задаётся конкретная дата и время открытия (абсолютная метка времени). Все ученики получают доступ к уроку одновременно в указанный момент.

Кейс: живой поток курса, стартующий 1 сентября для всех участников.

8.2.2. Индивидуальное расписание

Для каждого урока задаётся задержка в днях (или часах) относительно точки отсчёта. Точкой отсчёта служит момент получения учеником доступа к тренингу.

Если ученик получил доступ 10 марта, то урок 3 откроется для него 15 марта.

Кейс: самостоятельное прохождение курса в индивидуальном темпе.

8.3. Стоп-уроки

Стоп-урок — это урок, блокирующий переход к последующим урокам до его выполнения.

8.3.1. Правила блокировки

Для стоп-урока задаётся критерий «выполнения»:

Пока критерий не выполнен, все уроки, расположенные после стоп-урока в порядке следования, недоступны ученику.

8.3.2. Область действия

8.4. Совместное действие расписания и стоп-уроков

Когда одновременно настроены и расписание, и стоп-уроки — урок доступен ученику только если выполнены оба условия:

Более строгое ограничение имеет приоритет. Например, если по расписанию урок должен открыться, но предыдущий стоп-урок не пройден — урок остаётся закрытым.

8.5. Видимость закрытых уроков

Для каждого урока настраивается поведение отображения, когда он ещё недоступен:

Настройка задаётся на уровне урока и работает одинаково для ограничений по расписанию и по стоп-урокам.


9. Пользовательские сценарии

9.1. Прохождение тренинга (ученик)

  1. Ученик видит тренинг в своём списке.
  2. Открывает первый доступный урок.
  3. Изучает контент, отправляет ответ на задание (если есть).
  4. Переходит к следующему уроку — либо сразу, либо после открытия по расписанию, либо после прохождения стоп-урока.

9.2. Выдача доступа

  1. Пользователь добавляется в группу (вручную, массово или программно).
  2. Пользователь немедленно получает доступ ко всем тренингам группы.

9.3. Отзыв доступа

  1. Пользователь удаляется из группы.
  2. Если пользователь не состоит в других группах с доступом к тренингу — доступ автоматически отзывается.
  3. Прогресс ученика сохраняется в системе.

10. Требования к логированию

Для аудита и отладки модуль должен логировать следующие события:

Детализация формата логов — за рамками данного документа.


11. Вне области этой документации

Следующие аспекты намеренно не включены в текущую версию:

Эти возможности могут быть добавлены в следующих итерациях.


12. Открытые вопросы

Вопросы, требующие обсуждения с продуктовой командой перед началом разработки:

  1. Какие именно форматы контента поддерживаются в уроке в MVP (только текст + видео? файлы? встраиваемые блоки?).
  2. Какие уведомления отправляются ученику при открытии урока по расписанию?
  3. Как ведёт себя система при смещении расписания в тренинге, где уже есть активные ученики?
  4. Нужна ли возможность ручной индивидуальной выдачи доступа к отдельному уроку (в обход групп)?
  5. Есть ли ограничение на максимальную глубину вложенности подтренингов (для защиты от UI/performance проблем)?
Модули

Доступы

Страница в разработке.

Модули

Коммуникация

Страница в разработке.

Модули

Платежи

Страница в разработке.

Модули

Автоматизации

Страница в разработке.

Модули

Аналитика

Страница в разработке.

Модули

Страницы

Страница в разработке.

GDPR (General Data Protection Regulation)

Bună ziua,

În urma analizei, revenim mai jos cu răspunsurile la întrebările formulate.

1. Școala este operator pentru datele elevilor, iar Edustream este persoană împuternicită, atât timp cât prelucrează aceste date în numele și conform instrucțiunilor școlii. A se vedea Toolkit – Ghid explicativ, p. 3.

Dacă Edustream folosește datele pentru îmbunătățirea propriului produs, situația depinde de forma datelor: dacă sunt anonimizate ireversibil, acestea nu mai sunt date cu caracter personal; dacă persoana poate fi reidentificată, Edustream trebuie să stabilească un temei juridic propriu pentru această utilizare. A se vedea Toolkit – Ghid explicativ, p. 3; Checklist-uri operaționale, p. 3.

Cererile elevilor privind accesul, rectificarea sau ștergerea datelor sunt gestionate, din punct de vedere juridic, de școală, iar Edustream îi asigură suportul tehnic necesar. Termenul general de răspuns este de o lună, cu posibilitatea prelungirii cu încă două luni. A se vedea Toolkit – Proceduri de conformare, pp. 3–4.

 

2. Pentru datele necesare utilizării platformei – cont, autentificare, acces la cursuri, progres, comenzi și comunicări de serviciu – temeiul este, în principal, executarea contractului. Pentru aceste prelucrări nu este necesar un consimțământ separat. A se vedea Toolkit – Proceduri de conformare, p. 2; Ghid explicativ, p. 5.

Pentru newslettere și alte comunicări de marketing, este necesar un consimțământ separat, clar și ușor de retras. Accesul la curs nu trebuie condiționat de acceptarea comunicărilor comerciale. A se vedea Toolkit – Ghid explicativ, p. 5.

În relația cu elevii, școala stabilește temeiul juridic și răspunde pentru validitatea consimțământului, iar Edustream asigură mecanismele tehnice necesare pentru exprimarea și retragerea acestuia.

 

3. Pentru utilizatorii din Republica Moldova, atunci când prelucrarea se bazează pe consimțământ, legea prevede că pentru copiii sub 14 ani este necesar acordul reprezentantului legal. A se vedea Toolkit – Proceduri de conformare, p. 2.

Această regulă trebuie privită împreună cu normele privind capacitatea minorilor: până la 14 ani, actele juridice sunt, ca regulă, încheiate în numele minorului de părinte sau reprezentantul legal, iar după împlinirea vârstei de 14 ani minorul le încheie, de regulă, cu încuviințarea acestuia. Prin urmare, Edustream ar trebui să poată identifica utilizatorii minori și, acolo unde este necesar, să înregistreze acordul reprezentantului legal.

Pentru utilizatorii din alte state, inclusiv România și alte state UE, pragul și cerințele aplicabile minorilor trebuie verificate potrivit legislației jurisdicției respective.

 

4. Nu există un termen unic de păstrare pentru toate datele. Perioada trebuie stabilită separat pentru fiecare categorie – de exemplu, date de profil, progres, corespondență sau plăți – în funcție de scopul pentru care sunt necesare și de momentul la care acesta încetează. A se vedea Toolkit – Regulamentul privind protecția datelor, p. 5.

Mecanismul Edustream prin care, la plecarea unei școli, cheia de criptare este eliminată, iar datele rămase în backup-uri nu mai pot fi citite, ștergerea sau distrugerea securizată a datelor. Acest mecanism ar trebui reflectat în politica de păstrare a datelor. Pentru datele care trebuie păstrate în baza unor obligații legale, inclusiv cele de natură fiscală sau contabilă, se vor aplica termenele prevăzute de legislația relevantă, chiar dacă scopul inițial al prelucrării a încetat. A se vedea Toolkit – Regulamentul privind protecția datelor, p. 5.

 

5. Mecanismul Edustream trebuie să permită ștergerea sau anonimizarea datelor nu doar în sistemul propriu, ci și la furnizorii cărora le-au fost transmise datele, atunci când aceștia trebuie informați despre ștergere sau restricționare. Păstrarea unei „amprente” în locul adresei de e-mail este posibilă dacă aceasta este ireversibilă și nu mai permite reidentificarea persoanei. Portabilitatea se aplică datelor furnizate de elev atunci când prelucrarea este automatizată și se bazează pe contract sau consimțământ; școala gestionează cererea, iar Edustream trebuie să poată furniza tehnic exportul datelor. A se vedea Toolkit – Proceduri de conformare, p. 3; Politica de securitate, secțiunea privind ștergerea și anonimizarea datelor.

 

6. Edustream trebuie să reglementeze contractual relația cu furnizorii care prelucrează date în numele său, inclusiv scopul și durata prelucrării, instrucțiunile, confidențialitatea, securitatea, asistența la cereri și ștergerea sau returnarea datelor. În cazul introducerii sau schimbării unui sub-procesator, școlile trebuie informate în condițiile agreate contractual. A se vedea Toolkit – Proceduri de conformare, p. 4.

Pentru transferurile către state din Spațiul Economic European (în continuare – SEE) nu sunt necesare autorizări speciale. Pentru furnizorii care pot prelucra date în afara SEE – inclusiv hostingul sau Cloudflare Stream, în funcție de locația efectivă a prelucrării – trebuie verificat dacă există o decizie privind nivelul adecvat de protecție sau, în lipsa acesteia, garanții corespunzătoare, cum sunt clauzele standard de protecție a datelor. A se vedea Toolkit – Regulamentul privind protecția datelor, p. 6. Procesatorii de plăți aleși și contractați direct de școli rămân în responsabilitatea acestora.

 

7. Întrucât Edustream nu colectează datele cardului, ci doar informații precum suma, data și statusul plății, volumul de date prelucrate este limitat la ceea ce este necesar pentru funcționarea serviciului, conform principiului minimizării datelor. A se vedea Toolkit – Checklist-uri operaționale, p. 3.

Datele de facturare și plată pot fi păstrate mai mult atunci când există obligații fiscale, contabile sau de arhivare. Termenele concrete nu sunt stabilite de legislația privind protecția datelor și trebuie determinate separat în funcție de legislația fiscală și contabilă aplicabilă. A se vedea Toolkit – Regulamentul privind protecția datelor, pp. 4–5.

 

8. Pentru activitatea Edustream în UE, obligația de a desemna un reprezentant în UE trebuie analizată potrivit GDPR. Dacă Edustream intră sub incidența GDPR pentru serviciile oferite sau monitorizarea persoanelor din UE, desemnarea reprezentantului este, în principiu, necesară, iar excepția pentru prelucrări ocazionale este puțin relevantă pentru o platformă cu activitate constantă. Desemnarea unui DPO trebuie evaluată în funcție de amploarea activității: dacă monitorizarea progresului și comportamentului elevilor este realizată periodic, sistematic și pe scară largă, obligația poate deveni aplicabilă. În schimb, pentru DPIA, recomandăm efectuarea acesteia, având în vedere monitorizarea comportamentului, utilizarea unor tehnologii automate și faptul că printre utilizatori se află minori. Legea indică expres aceste elemente drept factori relevanți pentru evaluarea unui risc ridicat. A se vedea Toolkit – Regulamentul DPIA, pp. 2–3.

Edustream trebuie, de asemenea, să țină evidența activităților de prelucrare, inclusiv separat pentru fiecare școală atunci când acționează ca persoană împuternicită. Excepția pentru companiile sub 250 de angajați nu este aplicabilă atunci când prelucrarea este regulată, cum este cazul platformei. A se vedea Toolkit – Proceduri de conformare, p. 4.

În cazul unui incident de securitate, Edustream notifică fără întârziere școala, iar aceasta, în calitate de operator, notifică autoritatea competentă, dacă este cazul, în termen de 72 de ore. Autoritatea relevantă va depinde de legislația aplicabilă și de operatorul afectat. A se vedea Toolkit – Proceduri de conformare, p. 4.

 

9. Pentru activitatea desfășurată în Republica Moldova se aplică Legea nr. 195/2024. Aceasta acoperă prelucrările realizate în contextul activității din Moldova și, în anumite situații, operatorii străini care vizează persoane aflate în Moldova. A se vedea Toolkit – Ghid explicativ, p. 4.

Pentru persoanele aflate în România sau în alte state UE, trebuie verificată aplicarea GDPR, inclusiv legislația locală ale statului respectiv. GDPR se aplică operatorilor și persoanelor împuternicite din afara UE atunci când prelucrarea este legată de oferirea de servicii persoanelor din UE sau de monitorizarea activității acestora.  Prin urmare, Edustream trebuie să poată adapta anumite cerințe în funcție de jurisdicție – în special cele privind minorii, autoritatea competentă și eventualele obligații specifice prevăzute de legislația locală.

Cu stimă,

 

Mihaela Darie | Associate

Gladei & Partners

office +373 60318000 | direct +373 69800478 | www.gladei.md