Skip to content

Instantly share code, notes, and snippets.

@ambrosiora
Created December 1, 2025 22:35
Show Gist options
  • Select an option

  • Save ambrosiora/45090ec6a51d52c91215645804776fea to your computer and use it in GitHub Desktop.

Select an option

Save ambrosiora/45090ec6a51d52c91215645804776fea to your computer and use it in GitHub Desktop.
markmap creators
---
markmap:
colorFreezeLevel: 2
---
# EadStock Creators (Business Rules)
## Core Structure (Cursos)
- **Conceito Principal**
- Projetos = Cursos Completos
- Publicação no LXP (`aluno.eadstock.com.br`)
- **Ciclo de Vida**
- Criação -> Desenvolvimento -> Publicação -> Manutenção
- **Estrutura Base**
- Metadados (Nome, Cliente, Curso)
- Trilha de Aprendizagem
- Conteúdos (UAs, Quizzes)
- Questões Vinculadas (Cópias)
- **Dados (`projetos`)**
- PK: `id` (UUID)
- Convenção: `snake_case`
## Trilha de Aprendizagem
- **Conceito**
- Espinha dorsal do curso
- Sequência pedagógica exata
- **Editor de Trilha**
- Timeline visual
- Drag & drop (Reordenação)
- **Itens (`trilha_items`)**
- Tipos: UA, Quiz, Game
- Estrutura: `projeto_id`, `tipo`, `referencia_id`, `ordem`
- **Regras**
- Exibição estrita pela `ordem` no LXP
- Questões órfãs não aparecem na trilha
- Remoção da trilha != Remoção do projeto
## Unidades de Aprendizagem (UAs)
- **Conceito**
- Átomo de conteúdo (Zettelkasten)
- Bloco autocontido (Rich Text + Mídia)
- **Características**
- Autonomia (pode existir sem projeto)
- Metadados Próprios vs Herdados
- **Herança de Metadados**
- Regra de **Snapshot** (Cópia na criação)
- Ex: Cliente/Curso são copiados, não referenciados dinamicamente
- **Questões Inline**
- Inseridas no meio do texto (após parágrafo)
- Fluxo Shorthand: Criar/Importar direto no editor
- **Relacionamento**
- Via tabela `relacionamentos` (`pertence_a_projeto`)
## Engine de Questões
- **Conceito Chave**
- Separação Física: `questoes_biblioteca` (Global) vs `questoes_projeto` (Local/Cópia)
- Versionamento estilo Git
- **1. Questões Globais (Biblioteca)**
- Tabela: `questoes_biblioteca`
- ID Origem: `NULL`
- Função: Matriz/Template reutilizável
- Imutabilidade: Alterada apenas para correções sistêmicas
- **2. Questões de Projeto (Cópias)**
- Tabela: `questoes_projeto`
- ID Origem: Aponta para `questoes_biblioteca`
- FK: `projeto_id` (Pertence a um único projeto)
- Edição: Livre (segura), afeta apenas o projeto atual
- Criação:
- Cópia de Global
- Nova Questão (cria Global transparente + Cópia)
- **3. Versionamento**
- Tabela: `questao_versoes`
- Escopo: Histórico de TODAS as edições (Global e Projeto)
- Funcionalidades:
- Visualizar histórico
- Diff visual
- Restore (Undo)
- **4. Sistema de Merge (Push)**
- **Gatilho:** Edição na Questão Global
- **Ação:** Notifica projetos com cópias filhas
- **Opções de Resolução:**
- **A) Salvar só na Origem:** Isolamento total (não afeta filhas)
- **B) Merge Inteligente:**
- Mostra Diff granular
- Permite aceitar correções (ex: typo) e manter customizações (ex: valores locais)
- **C) Override Total:**
- Perigo! Sobrescreve filha com dados da mãe
- Perde customizações locais
- **5. Escalar (Promover)**
- **Fluxo:** Filha melhorada -> Nova Global
- Passos:
1. Clonagem Inversa (Filha vira nova Global)
2. Corte de Vínculo Antigo
3. Novo Vínculo com a nova Global
- **Impacto:** Irmãs (outros projetos) não são afetadas
## Sistema de Quizzes
- **Conceito**
- Quiz é um **Wrapper** (Agrupador)
- Não contém o texto da questão, apenas referências
- **Estrutura (`quiz` + `quiz_questoes`)**
- Quiz local (`projeto_id`)
- Itens (`questao_id` -> aponta para `questoes_projeto`)
- **Criação no Projeto**
- **Opção A:** Usar questões existentes do projeto
- **Opção B:** Importar do Global (Cria cópia + Vincula)
- **Opção C:** Criar Nova (Cria Global + Cópia + Vincula)
- **Templates (`quiz_biblioteca`)**
- Catálogo de quizzes pré-definidos
- **Fluxo de Importação:**
1. Bulk Import de todas as questões (cria cópias)
2. Cria cópia do Quiz wrapper
3. Vincula tudo
- **Regra de Ouro:** **Independência Total**
- O Quiz importado perde vínculo com o Template
- Alterar template não muda quiz do projeto
- Alterar quiz do projeto não muda template
## Sistemas Transversais & UX
- **1. Categorias & Labels**
- Par Chave/Valor (`disciplina:matematica`)
- Regras:
- Autocomplete obrigatório (evita sujeira)
- Incentivo ao reuso
- Busca: Principal motor de query do sistema
- **2. Relacionamentos (Grafo)**
- Tabela Unificada: `relacionamentos`
- Zettelkasten: Permite conexões não hierárquicas
- Tipos: `pertence_a_projeto`, `referencia`, `derivado_de`
- **3. Remoção de Questões**
- **Regra:** Soft Desvinculação (Remove do projeto, não delete físico)
- **Verificação:** Onde é usada? (UA, Quiz)
- **Ação:** All-or-Nothing (Remove de todos os lugares do projeto simultaneamente)
- **UX:** Preview obrigatório antes de confirmar
- **4. Banco de Questões Visual**
- Não é tabela física, é uma View
- `SELECT * FROM questoes_projeto`
- Inclui: Em UAs + Em Quizzes + Órfãs
- **5. Shortcuts de UX**
- **Questão Inline:** Cria Global -> Cria Cópia -> Vincula -> Insere na UA
- **Importar Global:** Cria Cópia -> Vincula
- **Objetivo:** Eliminar fricção de múltiplos passos
- **6. Estrutura de Dados**
- `projetos` (Cursos)
- `trilha_items` (Sequência)
- `unidades_aprendizagem` (Conteúdo)
- `questoes_biblioteca` (Globais)
- `questoes_projeto` (Locais)
- `quiz` (Wrapper Local)
- `quiz_biblioteca` (Template Global)
- `relacionamentos` (Grafo)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment