update
This commit is contained in:
60
README.md
60
README.md
@@ -7,26 +7,46 @@ Toda compra é relacionada a empresa responsável, que é definida como o `tenan
|
||||
O gestor responsável pela ação também é relacionado à compra, com base no email presente na compra.
|
||||
|
||||
```json
|
||||
{"id": "10", "sk": "0", "metadata__tenant_id": "100", "metadata__related_ids": ["100", "123"]}
|
||||
{"id": "10", "sk": "metadata#tenant", "tenant_id": "ORG#100"}
|
||||
{"id": "10", "sk": "related_ids#org", "org_id": "100"}
|
||||
{"id": "10", "sk": "related_ids#user", "user_id": "123"}
|
||||
{"id": "10", "sk": "slots", "status": "PENDING", "kind": "BATCH"}
|
||||
{"id": "10", "sk": "slots#11", "status": "SUCCESS"}
|
||||
{"id": "10", "sk": "slots#12", "status": "ROLLBACK"}
|
||||
{"id": "10", "sk": "0", "user": {"id": "123", "name": "Sérgio"}, "tenant": "100"}
|
||||
{"id": "10", "sk": "linked_entities#org", "org_id": "111"}
|
||||
{"id": "10", "sk": "linked_entities#user", "user_id": "123"}
|
||||
{"id": "10", "sk": "slots", "status": "PENDING", "mode": "BATCH"}
|
||||
{"id": "10", "sk": "slots#enrollment#11", "status": "SUCCESS"}
|
||||
{"id": "10", "sk": "slots#enrollment#12", "status": "ROLLBACK"}
|
||||
```
|
||||
|
||||
Quando o responsável é uma pessoa física (CPF).
|
||||
|
||||
```json
|
||||
{"id": "20", "sk": "0", "user": {"id": "123", "name": "Sérgio"}, "tenant": "self"}
|
||||
{"id": "20", "sk": "slots", "status": "PENDING", "mode": "STANDALONE"}
|
||||
{"id": "20", "sk": "slots#enrollment#1123", "status": "SUCCESS"}
|
||||
```
|
||||
|
||||
# Usuários
|
||||
|
||||
# Matrículas
|
||||
|
||||
```json
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "0", "course": {"id": "10", "name": "pytest", "access_period": 360}, "tenant": "100"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "tenant", "org_id": "100", "name": "EDUSEG"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "author", "user_id": "202", "name": "Tiago Maciel"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "metadata#cert", "exp_interval": 365}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "started", "started_at": "2025-04-06T11:07:32.762178-03:00"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "completed", "completed_at": "2025-04-06T11:07:32.762178-03:00"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "failed", "failed_at": "2025-04-06T11:07:32.762178-03:00"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "canceled", "canceled_at": "2025-04-06T11:07:32.762178-03:00"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "archived", "archived_at": "2025-04-06T11:07:32.762178-03:00"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "expired", "expired": "2025-04-06T11:07:32.762178-03:00"}
|
||||
```
|
||||
|
||||
### Emails/eventos agendados
|
||||
|
||||
Quando uma matrícula é criada, também é agendados emails/eventos.
|
||||
|
||||
- `reminder_no_access_3_days` se o usuário não acessar o curso 3 dias após a criação.
|
||||
- `no_activity_7_days` 7 dias após a última atividade do usuário no curso.
|
||||
- `access_period_reminder_30_days` 30 dias antes do perído de acesso ao curso finalizar.
|
||||
- `access_period_reminder_30_days` 30 dias antes do perído de acesso ao curso terminar.
|
||||
- `cert_expiration_reminder_30_days` se houver certificado, avisa 30 dias antes do certificado expirar.
|
||||
- `course_archived` após o certificado expirar, a matrícula será marcada como **arquivada (ARCHIVED)**.
|
||||
- `course_expired` se não houver certificado e o período de acesso for atingido, a matrícula será marcada com **expirada (EXPIRED)**.
|
||||
@@ -36,15 +56,37 @@ Quando uma matrícula é criada, também é agendados emails/eventos.
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "schedules#course_expired", "name": "Sérgio R Siqueira", "email": "osergiosiqueira@gmail.com", "ttl": 1874507093}
|
||||
```
|
||||
|
||||
Quando o status da matrícula for alterado para `COMPLETED`, os eventos `course_expired` e `access_period_reminder_30_days` serão removidos a adicionado o evento `course_archived`.
|
||||
|
||||
```json
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "schedules#reminder_no_access_3_days", "name": "Sérgio R Siqueira", "email": "osergiosiqueira@gmail.com", "ttl": 1874507093}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "schedules#course_expired", "name": "Sérgio R Siqueira", "email": "osergiosiqueira@gmail.com", "ttl": 1874507093}
|
||||
```
|
||||
|
||||
### Proteção contra duplicação
|
||||
|
||||
A proteção contra duplicação é um mecanismo que impede que o gestor matricule o mesmo colaborador no curso por engano.
|
||||
|
||||
O gestor pode definir o número de dias para que a proteção seja removida automaticamente antes do fim do acesso ao curso.
|
||||
|
||||
Se um certificado for emitido para a matrícula, o período de proteção será recalculado conforme a validade do certificado.
|
||||
|
||||
```json
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "metadata#deduplication_window", "offset_days": 90}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "lock", "hash": "1e67e29464877783e49e07fb7d9dd372", "ttl": 1767625113}
|
||||
{"id": "lock", "sk": "1e67e29464877783e49e07fb7d9dd372", "ttl": 1767625113}
|
||||
```
|
||||
|
||||
### Política de cancelamento
|
||||
|
||||
Apenas matrículas com `metadata#cancel_policy` podem ser canceladas.
|
||||
|
||||
Se houver `metadata#parent_slot`,
|
||||
|
||||
```json
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "0"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "metadata#cancel_policy"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "cancel_policy"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "metadata#parent_slot", "slot": {"id": "slots#123", "sk": "1221#f7120daf-96d2-4639-b8f4-d736fd99e4ee"}}
|
||||
```
|
||||
|
||||
# Cursos
|
||||
|
||||
Reference in New Issue
Block a user