Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Sistema de Revisão e Estudo com Flashcards + Gamificação

Este repositório define um **sistema simples e extensível** para revisão de conteúdos usando flashcards, com regras de gamificação e estruturas prontas para adicionar novos cards rapidamente.

## Estrutura

```
.
├── README.md
├── docs/
│ └── sistema.md
├── cards/
│ ├── schema.json
│ ├── README.md
│ └── lia.jsonl
├── config/
│ └── gamificacao.json
└── progress/
└── progresso.template.json
```

## Como adicionar novos cards

1. Abra `cards/lia.jsonl` (ou crie um novo arquivo `cards/<tema>.jsonl`).
2. Adicione **um JSON por linha** seguindo o `cards/schema.json`.
3. Mantenha os IDs únicos (ex.: `LIA-ART3-001`, `LIA-ART4-002`).

Exemplo de card (igual ao exemplo fornecido):

```json
{
"id": "LIA-ART3-001",
"tema": "Lei de Improbidade Administrativa",
"artigo": "Art. 3º",
"tipo": "caso_pratico",
"pergunta": "Um particular induz dolosamente um servidor a praticar ato de improbidade. Ele pode responder pela Lei 8.429/92?",
"resposta_correta": "Sim, se tiver induzido ou concorrido dolosamente para a prática do ato.",
"explicacao": "O art. 3º estende a aplicação da lei a terceiros que, mesmo não sendo agentes públicos, induzam ou concorram dolosamente para o ilícito.",
"nivel": "dificil",
"tags": ["terceiro", "sujeito_ativo", "concurso_de_pessoas"]
}
```

## Como funciona a gamificação

As regras detalhadas estão em `docs/sistema.md` e o arquivo `config/gamificacao.json` permite ajustar pontos, níveis e recompensas sem alterar os cards.

## Próximos passos (opcionais)

- Criar scripts para importar/exportar os cards.
- Conectar com apps de estudo (ex.: Anki) ou interfaces web.

18 changes: 18 additions & 0 deletions cards/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Cards

## Formato

- Arquivos em **JSONL** (um JSON por linha).
- Cada linha representa um único card conforme `schema.json`.

## Exemplo (1 linha = 1 card)

```json
{"id":"LIA-ART3-001","tema":"Lei de Improbidade Administrativa","artigo":"Art. 3º","tipo":"caso_pratico","pergunta":"Um particular induz dolosamente um servidor a praticar ato de improbidade. Ele pode responder pela Lei 8.429/92?","resposta_correta":"Sim, se tiver induzido ou concorrido dolosamente para a prática do ato.","explicacao":"O art. 3º estende a aplicação da lei a terceiros que, mesmo não sendo agentes públicos, induzam ou concorram dolosamente para o ilícito.","nivel":"dificil","tags":["terceiro","sujeito_ativo","concurso_de_pessoas"]}
```

## Sugestão de convenção de IDs

- `<SIGLA-TEMA>-<ARTIGO>-<NUMERO>`
- Ex.: `LIA-ART3-001`

1 change: 1 addition & 0 deletions cards/lia.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"id":"LIA-ART3-001","tema":"Lei de Improbidade Administrativa","artigo":"Art. 3º","tipo":"caso_pratico","pergunta":"Um particular induz dolosamente um servidor a praticar ato de improbidade. Ele pode responder pela Lei 8.429/92?","resposta_correta":"Sim, se tiver induzido ou concorrido dolosamente para a prática do ato.","explicacao":"O art. 3º estende a aplicação da lei a terceiros que, mesmo não sendo agentes públicos, induzam ou concorram dolosamente para o ilícito.","nivel":"dificil","tags":["terceiro","sujeito_ativo","concurso_de_pessoas"]}
56 changes: 56 additions & 0 deletions cards/schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Flashcard",
"type": "object",
"required": [
"id",
"tema",
"tipo",
"pergunta",
"resposta_correta",
"explicacao",
"nivel",
"tags"
],
"properties": {
"id": {
"type": "string",
"description": "Identificador único do card (ex.: LIA-ART3-001)"
},
"tema": {
"type": "string",
"description": "Tema principal"
},
"artigo": {
"type": ["string", "null"],
"description": "Referência legal, se aplicável"
},
"tipo": {
"type": "string",
"enum": ["conceitual", "caso_pratico", "verdadeiro_falso", "multipla_escolha", "resumo"],
"description": "Tipo de card"
},
"pergunta": {
"type": "string",
"description": "Enunciado da pergunta"
},
"resposta_correta": {
"type": "string",
"description": "Resposta correta e objetiva"
},
"explicacao": {
"type": "string",
"description": "Justificativa/resumo"
},
"nivel": {
"type": "string",
"enum": ["facil", "medio", "dificil"],
"description": "Nível de dificuldade"
},
"tags": {
"type": "array",
"items": {"type": "string"},
"description": "Palavras-chave para filtragem"
}
}
}
35 changes: 35 additions & 0 deletions config/gamificacao.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"pontos": {
"acerto": 10,
"erro": 2,
"revisao_extra": 5
},
"streak_bonus": {
"3_dias": 15,
"7_dias": 40,
"14_dias": 100
},
"niveis": [
{"nivel": 1, "min_pontos": 0, "nome": "Iniciante"},
{"nivel": 2, "min_pontos": 200, "nome": "Constante"},
{"nivel": 3, "min_pontos": 500, "nome": "Estrategista"},
{"nivel": 4, "min_pontos": 1000, "nome": "Mestre"}
],
"badges": [
{
"id": "tema-10",
"descricao": "Revisou 10 cards do mesmo tema",
"criterio": "contagem_tema>=10"
},
{
"id": "semana-perfeita",
"descricao": "7 dias seguidos estudando",
"criterio": "streak>=7"
},
{
"id": "50-cards",
"descricao": "Respondeu 50 cards no total",
"criterio": "total_cards>=50"
}
]
}
65 changes: 65 additions & 0 deletions docs/sistema.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Sistema de Revisão e Estudo com Flashcards + Gamificação

## 1) Objetivo

Organizar o conteúdo em **flashcards estruturados** e aplicar regras simples de gamificação para incentivar consistência, revisão e progressão no estudo.

## 2) Modelo de Card

Todos os cards seguem o schema `cards/schema.json`. Campos principais:

- `id`: identificador único.
- `tema`: assunto central.
- `artigo`: referência legal (quando aplicável).
- `tipo`: ex.: `conceitual`, `caso_pratico`, `verdadeiro_falso`.
- `pergunta`: enunciado.
- `resposta_correta`: resposta objetiva.
- `explicacao`: justificativa/resumo.
- `nivel`: `facil`, `medio`, `dificil`.
- `tags`: palavras-chave para filtros.

## 3) Formato de armazenamento

- **JSONL**: cada linha é um card completo em JSON.
- Você pode ter vários arquivos em `cards/` (ex.: `lia.jsonl`, `constitucional.jsonl`).

## 4) Revisão (cadência sugerida)

Sugestão de intervalos por nível:

- **Fácil**: revisar em 5, 10, 20 dias.
- **Médio**: revisar em 3, 7, 14 dias.
- **Difícil**: revisar em 1, 3, 7 dias.

> Você pode ajustar esta regra de acordo com o seu ritmo.

## 5) Gamificação

As regras estão em `config/gamificacao.json`. Sugestão:

- **Pontos por acerto**: 10
- **Pontos por erro**: 2 (por tentativa)
- **Bônus por sequência (streak)**:
- 3 dias: +15
- 7 dias: +40
- 14 dias: +100
- **Níveis**: definidos por faixas de pontos.
- **Badges**: metas por tema, quantidade de cards e consistência.

## 6) Como acompanhar progresso

Use o template `progress/progresso.template.json` para registrar:

- Pontuação total.
- Nível atual.
- Streak de dias.
- Histórico de revisões.
- Estatísticas por tema.

## 7) Exemplo de fluxo diário

1. Selecione 15–30 cards por tema.
2. Responda e registre acertos/erros.
3. Atualize pontuação e streak.
4. Reforce os cards errados no final do dia.

17 changes: 17 additions & 0 deletions progress/progresso.template.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"usuario": "seu_nome",
"pontos_totais": 0,
"nivel_atual": 1,
"streak_dias": 0,
"ultima_data_estudo": null,
"estatisticas_por_tema": {},
"historico_revisoes": [
{
"data": "2024-01-01",
"tema": "Lei de Improbidade Administrativa",
"acertos": 0,
"erros": 0,
"pontos_ganhos": 0
}
]
}