update
This commit is contained in:
93
README.md
93
README.md
@@ -2,73 +2,79 @@
|
||||
|
||||
### Relacionamentos
|
||||
|
||||
Toda compra é relacionada a empresa responsável, que é definida como o `tenant` da mesma. Essa relação é estabelecida com base no CNPJ presente na compra.
|
||||
Toda compra é relacionada a empresa responsável, que é definida como o `org_id` da mesma. Essa relação é estabelecida com base no CNPJ presente na compra.
|
||||
|
||||
O gestor responsável pela ação também é relacionado à compra, com base no email presente na compra.
|
||||
|
||||
```json
|
||||
{"id": "101", "sk": "0", "name": "EDUSEG", "cnpj": "15608435000190", "tenant": "100"}
|
||||
{"id": "101", "sk": "author", "name": "Sérgio", "email": "sergio@somosbeta.com.br", "user_id": "123"}
|
||||
{"id": "101", "sk": "slots", "status": "PENDING", "mode": "BATCH"}
|
||||
{"id": "101", "sk": "slots#enrollment#9omWNKymwU5U4aeun6mWzZ", "status": "SUCCESS"}
|
||||
{"id": "101", "sk": "slots#enrollment#12", "status": "ROLLBACK"}
|
||||
{"id": "101", "sk": "0", "name": "EDUSEG", "cnpj": "15608435000190", "org_id": "100"}
|
||||
{"id": "101", "sk": "AUTHOR", "name": "Sérgio", "email": "sergio@somosbeta.com.br", "user_id": "123"}
|
||||
{"id": "101", "sk": "SLOT", "status": "PENDING", "mode": "BATCH"}
|
||||
{"id": "101", "sk": "SLOT#ENROLLMENT#9omWNKymwU5U4aeun6mWzZ", "status": "SUCCESS"}
|
||||
{"id": "101", "sk": "SLOT#ENROLLMENT#12", "status": "ROLLBACK"}
|
||||
```
|
||||
|
||||
Quando o responsável é uma pessoa física (CPF).
|
||||
|
||||
```json
|
||||
{"id": "20", "sk": "0", "name": "Sérgio", "email": "sergio@somosbeta.com.br", "cpf": "07879819908", "tenant": "123"}
|
||||
{"id": "20", "sk": "slots", "status": "PENDING", "mode": "STANDALONE"}
|
||||
{"id": "20", "sk": "slots#enrollment#1123", "status": "SUCCESS"}
|
||||
{"id": "20", "sk": "0", "name": "Sérgio", "email": "sergio@somosbeta.com.br", "cpf": "07879819908", "org_id": "123"}
|
||||
{"id": "20", "sk": "SLOT", "status": "PENDING", "mode": "STANDALONE"}
|
||||
{"id": "20", "sk": "SLOT#ENROLLMENT#1123", "status": "SUCCESS"}
|
||||
```
|
||||
|
||||
# Usuários
|
||||
|
||||
```json
|
||||
{"id": "89ada056-141c-4c8a-b442-86ab799f0bb7", "sk": "0", "name": "Sérgio R Siqueira", "cpf": "07879819908", "email": "sergio@somosbeta.com.br", "email_verified": true, "emails": ["osergiosiqueira@gmail.com"]}
|
||||
{"id": "89ada056-141c-4c8a-b442-86ab799f0bb7", "sk": "EMAIL#sergio@somosbeta.com.br", "email_verified": true, "email_primary": true, "mx_record_exists": true}
|
||||
{"id": "89ada056-141c-4c8a-b442-86ab799f0bb7", "sk": "EMAIL#osergiosiqueira@gmail.com", "email_verified": false, "email_primary": false, "mx_record_exists": true}
|
||||
```
|
||||
|
||||
# Matrículas
|
||||
|
||||
```json
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "0", "course": {"id": "10", "name": "pytest"}, "tenant": "100"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "metadata#course", "access_period": 360, "cert": {"exp_interval": 365}}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "tenant", "org_id": "100", "name": "EDUSEG"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "author", "user_id": "202", "name": "Tiago Maciel"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "konviva", "user_id": 122, "class_id": 123, "enrollment_id": 1239}
|
||||
{"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_at": "2025-04-06T11:07:32.762178-03:00"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "linked_entities#order", "order_id": "101"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "0", "course": {"id": "10", "name": "pytest"}, "org_id": "100"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "METADATA#COURSE", "access_period": 360, "cert": {"exp_interval": 365}}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "TENANT", "org_id": "100", "name": "EDUSEG"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "AUTHOR", "user_id": "202", "name": "Tiago Maciel"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "KONVIVA", "user_id": 122, "class_id": 123, "enrollment_id": 1239}
|
||||
{"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_at": "2025-04-06T11:07:32.762178-03:00"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "LINKED_ENTITIES#ORDER", "order_id": "101"}
|
||||
```
|
||||
|
||||
### Vagas
|
||||
### Vagas disponíveis
|
||||
|
||||
```json
|
||||
{"id": "slots#org#100", "sk": "order#101#enrollment#faa8a547-bb9b-4103-bd8c-8fbe96b4056f", "course": {"name": "pytest"}}
|
||||
{"id": "slots#org#100", "sk": "order#101#enrollment#afffbdde-fe58-4df7-b4d5-7553a571d32a", "course": {"name": "pytest"}}
|
||||
{"id": "SLOT#ORG#100", "sk": "ORDER#101#ENROLLMENT#faa8a547-bb9b-4103-bd8c-8fbe96b4056f", "course": {"name": "pytest"}}
|
||||
{"id": "SLOT#ORG#100", "sk": "ORDER#101#ENROLLMENT#afffbdde-fe58-4df7-b4d5-7553a571d32a", "course": {"name": "pytest"}}
|
||||
```
|
||||
|
||||
### 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 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)**.
|
||||
- `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 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)**.
|
||||
|
||||
```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}
|
||||
{"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}
|
||||
```
|
||||
|
||||
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`.
|
||||
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}
|
||||
{"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
|
||||
@@ -80,9 +86,9 @@ O gestor pode definir quantos dias antes do fim do acesso ao curso a proteção
|
||||
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}
|
||||
{"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
|
||||
@@ -93,8 +99,15 @@ Se houver `metadata#parent_slot`, deve ser devolvido.
|
||||
|
||||
```json
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "0"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "cancel_policy"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "metadata#parent_slot", "slot": {"id": "slots#org#123", "sk": "order#1221#enrollment#9omWNKymwU5U4aeun6mWzZ"}}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "CANCEL_POLICY"}
|
||||
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "METADATA#PARENT_SLOT", "slot": {"id": "SLOT#ORG#123", "sk": "ORDER#1221#ENROLLMENT#9omWNKymwU5U4aeun6mWzZ"}}
|
||||
```
|
||||
|
||||
# Cursos
|
||||
|
||||
### Valores contratados
|
||||
|
||||
```json
|
||||
{"id": "CUSTOM_PRICING#ORG#96e523b9-a404-4860-a737-edf412c3da52", "sk": "COURSE#439e9a43-ab92-469a-a849-b6e824370f80", "unit_price": 149, "created_at": "2025-04-06T11:07:32.762178-03:00"}
|
||||
{"id": "CUSTOM_PRICING#ORG#96e523b9-a404-4860-a737-edf412c3da52", "sk": "COURSE#f10c3283-7722-41c6-ba5d-222f9f4f48af", "unit_price": 149, "created_at": "2025-04-06T11:07:32.762178-03:00"}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user