timed revision
All checks were successful
Mindforge API Build and Deploy / Build Mindforge API Image (push) Successful in 3m58s
Mindforge API Build and Deploy / Deploy Mindforge API (internal) (push) Successful in 37s
Mindforge Web Build and Deploy (internal) / Build Mindforge Web Image (push) Successful in 5m19s
Mindforge Web Build and Deploy (internal) / Deploy Mindforge Web (internal) (push) Successful in 11s

This commit is contained in:
2026-06-01 19:08:48 -03:00
parent b80d28f671
commit f03bcc40e3
14 changed files with 1138 additions and 14 deletions

View File

@@ -337,7 +337,7 @@ Exemplos:
### Tabelas de Flashcard
- `flashcard_libraries`: `id`, `file_path` (unico), `file_name`, `subject`, `difficulty`, `card_count`, `created_at`, `updated_at`.
- `flashcards`: `id`, `library_id`, `front`, `back`, `position`, `created_at`.
- `flashcards`: `id`, `library_id`, `front`, `back`, `position`, `correct_count`, `incorrect_count`, `created_at`.
### API de Flashcards (v1)
- `POST /api/v1/flashcard/generate`
@@ -350,6 +350,9 @@ Exemplos:
- `POST /api/v1/flashcard/review-session`
Request: `{ libraryIds: number[] }`
Retorna os cards combinados para sessao de revisao (sem repeticao espaciada nesta fase).
- `POST /api/v1/flashcard/review-answer`
Request: `{ cardId: number, correct: boolean }`
Registra no banco o resultado da revisao (`Acertei`/`Errei`) por card.
### Frontend
- Modulo `Flashcards` atualizado para:
@@ -360,9 +363,48 @@ Exemplos:
- Novo modulo `Revisao Flashcards`:
- lista bibliotecas agrupadas por materia (`subject`);
- permite selecionar multiplas bibliotecas;
- inicia sessao estilo Anki simplificada (frente, revelar verso, anterior/proximo, progresso visual).
- embaralha aleatoriamente os cards ao iniciar a sessao de revisao;
- inicia sessao estilo Anki simplificada (frente, revelar verso, acertei/errei, anterior, progresso visual).
- ao gerar novamente uma biblioteca, os contadores `correct_count` e `incorrect_count` dos cards sao resetados para zero.
### Novas Configuracoes
- `ConnectionStrings:MindforgeDb` para conexao PostgreSQL.
- Fallback local/default:
`Host=localhost;Port=3307;Database=mindforge;Username=root;Password=root`.
---
## Atualizacao - Revisao Espacada RAG (2026-06-01)
### Mudancas de Arquitetura
- O dominio de flashcards agora guarda `last_reviewed_at` por card para permitir classificacao temporal.
- O status RAG e calculado em tempo de leitura (nao e persistido), para evitar status defasado.
- O agrupamento de dashboard usa `subject` + `subSubject`, onde `subSubject` vem dos segmentos do caminho apos a materia e antes do arquivo.
### Regras RAG por Card
- `Grey`: card nunca revisado (`last_reviewed_at` nulo).
- `Red`: revisado ha 40 dias ou mais **ou** desempenho `< 40%`.
- `Amber`: revisado ha 30 dias ou mais **ou** desempenho `<= 60%`.
- `Green`: revisado ha menos de 30 dias **e** desempenho `> 60%`.
- Desempenho: `correct_count / (correct_count + incorrect_count)`.
### Banco e Repositorio
- Tabela `flashcards` recebeu coluna `last_reviewed_at TIMESTAMPTZ NULL` (migracao idempotente no startup).
- `POST /api/v1/flashcard/review-answer` agora atualiza `correct_count`/`incorrect_count` e define `last_reviewed_at = NOW()`.
### API de Flashcards (v1)
- Novo endpoint `GET /api/v1/flashcard/rag-status`:
- Retorna dashboard de revisao espacada com grupos por materia/submateria.
- Inclui cards com `ragStatus`, `performanceRate`, `totalAnswers` e `lastReviewedAt`.
- Inclui sumarios por materia/submateria com percentuais:
- Verde = `green / (green + amber + red)`
- Atencao = `(amber + red) / (green + amber + red)`
- Cards cinza ficam fora do denominador.
### Frontend
- Novo modulo `Revisao Espacada` abaixo de `Revisao Flashcards` na sidebar.
- O painel mostra:
- status agregados por materia e submateria;
- filtros por status RAG (Vermelho, Amarelo, Verde, Cinza);
- total de cards selecionados para revisao.
- A sessao de revisao espacada reutiliza o fluxo de resposta (`Acertei`/`Errei`) e prioriza cards por status (Red, Amber, Green, Grey).