← Voltar a studyAI — Documentação do Projeto

🗺️ Roadmap

studyAI — Documentação do Projeto

Apresentação

Roadmap — studyAI

Plano de desenvolvimento em sprints. Priorização, timeline, checklists e critérios de conclusão.


Índice

  1. Visão e objetivos
  2. Timeline
  3. Sprints
  4. Matriz de prioridades
  5. Dependências entre sprints
  6. Critérios de MVP
  7. Checklist final
  8. Pós-MVP e futuro

Visão e objetivos

ObjetivoDescrição
MVPUser regista, cria projeto, faz upload, pede material, estuda, pratica, avalia. Tudo grounded nos seus docs.
LearningSpaced repetition (SM-2), material adaptativo, memória de conversa.
ProduçãoRate limit, cost control, deploy, observabilidade.

Duração total estimada: 12–14 semanas (6–7 sprints de 2 semanas).


Timeline

A carregar diagrama…
SprintFocoDuraçãoEntregável principal
1Fundação2 semAuth, DB, Docker, dashboard
2Core2 semProjetos, upload, ingestão, RAG simples
3LangGraph (1)2 semRouter, Planner, Writer, generate
4LangGraph (2)2 semChat, QA, Evaluator, perguntas
5Learning2 semSM-2, user_profile, memory
6Produção2 semRate limit, deploy, observabilidade

Sprints

Sprint 1 — Fundação

Objetivo: Estrutura a correr localmente. User consegue registar e ver dashboard.

ÁreaEntregas
Estruturaapi/ (FastAPI), web/ (Next.js), docker-compose.yml (Postgres, Redis, MinIO)
DBAlembic, migrations 001–006 (users, projects, files, documents, chunks, jobs, etc.)
AuthPOST /auth/register, login, refresh, GET /auth/me. JWT + refresh tokens.
FrontendLayout, login, registo, dashboard, API client com interceptors, guard de rotas

Checklist:

  • Criar api/ (FastAPI), web/ (Next.js)
  • docker-compose.yml: Postgres (pgvector), Redis, MinIO
  • .env.example com variáveis necessárias
  • Alembic configurado
  • Migration 001: users, refresh_tokens
  • Migration 002: projects, files, documents, questions
  • Migration 003: user_progress (campos Learning Loop: Fase 3)
  • Migration 004: chunks (pgvector)
  • Migration 005: user_profile, conversation_memory, chat_sessions, chat_messages, message_citations
  • Migration 006: jobs, document_versions, response_feedback, rag_evaluations
  • POST /auth/register, /auth/login, /auth/refresh, GET /auth/me
  • Middleware: extrair user do JWT, proteger rotas
  • Layout, routing, páginas login/registo/dashboard
  • API client com interceptors para token, guard de rotas

Checkpoint:

  • User regista, faz login, vê dashboard
  • Docker Compose sobe todos os serviços
  • Schema completo no Postgres

Docs: TECH_DECISIONS, API_SPEC, DATA_MODEL


Sprint 2 — Core

Objetivo: Projetos, upload, ingestão, RAG funcional. User carrega PDF e obtém resposta baseada no conteúdo.

ÁreaEntregas
ProjetosCRUD API + UI. Validação project.user_id == current_user.id
UploadPOST /projects/:id/files (multipart), MinIO, DB (status=pending)
IngestãoJob: parse (pdfplumber/pypdf) → chunk → embed → pgvector. Retry com backoff.
RAGPipeline híbrido: dense + BM25 → RRF → cross-encoder rerank (ver RAG_DESIGN)
QueryPOST /projects/:id/query (sem agentes): query → chunks → LLM → resposta
IndexPOST /projects/:id/index, botão "Reindexar" na UI

Checklist:

  • CRUD projetos (API), UI: listar, criar, editar, apagar
  • Verificação: project.user_id == current_user.id
  • POST /projects/:id/files (multipart), guardar em MinIO, DB (status=pending)
  • UI: drag & drop, listagem, delete
  • Job (Celery ou BackgroundTasks): parse PDF/TXT/MD (pdfplumber, pypdf fallback)
  • Chunking (por header/parágrafo), embed (text-embedding-3-small)
  • content_tsv (tsvector) para BM25 / full-text
  • Guardar chunks em pgvector, atualizar file (status=processed)
  • Retry: backoff 1min, 5min, 15min, max 5
  • Serviço RAG: hybrid (dense top-100 + BM25 top-100) → RRF → cross-encoder rerank → top-k
  • POST /projects/:id/query (sem agentes): query → chunks → LLM → resposta
  • POST /projects/:id/index, botão "Reindexar" na UI

Checkpoint:

  • User cria projeto, faz upload de PDF, vê status processed
  • Query devolve resposta fundamentada nos chunks
  • Reindexar funciona

Docs: RAG_DESIGN, JOBS_ASYNC, PDF_INGESTION


Sprint 3 — LangGraph (1)

Objetivo: Router, Content Planner, Content Writer. Geração de material sobre tópico.

ÁreaEntregas
RouterHybrid (rules + LLM), confidence, fallback < 0.7 → qa
Content PlannerRAG retrieval → sections, confidence, missing_topics
Content WriterModos strict/hybrid, loop por secção, progress
Statestate.py com GenerateContentState (TypedDict)
JobsTabela jobs, status, progress, message
APIPOST /projects/:id/generate, GET /jobs/:id
UIBotão "Gerar material", progress bar

Checklist:

  • Router: rules (keywords → intent), LLM classifier, confidence, fallback < 0.7 → qa
  • Content Planner: RAG retrieval, output sections/confidence/missing_topics
  • Content Writer: modos strict/hybrid, loop por secção
  • Streaming progress: "A escrever secção 2...", jobs status/progress/message
  • state.py com GenerateContentState, ChatState (TypedDict)
  • POST /projects/:id/generate, GET /jobs/:id
  • UI: botão "Gerar material", progress bar

Checkpoint:

  • "Quero estudar X" → documento gerado (secção a secção)
  • Progress visível durante geração
  • Documento guardado em DB e re-indexado

Docs: AGENTS, STATE_SCHEMA


Sprint 4 — LangGraph (2)

Objetivo: Chat, RAG QA, Question Generator, Evaluator. MVP completo.

ÁreaEntregas
RAG QA AgentRetrieval + LLM, resposta + citações, streaming
Question GeneratorDocumento → perguntas (difficulty por user_level)
Question EvaluatorHybrid (0.3 rule + 0.7 LLM), score, feedback
ChatPOST /projects/:id/chat, streaming
EvaluatePOST /projects/:id/evaluate
Persistênciachat_sessions, chat_messages, message_citations
UIChat, perguntas com submit, feedback

Checklist:

  • Question Generator: documento + user_profile.level → questions (difficulty)
  • RAG QA Agent: retrieval + LLM, resposta + citações, streaming
  • Question Evaluator: rule-based + LLM (0.3 rule + 0.7 llm), atualizar user_progress
  • POST /projects/:id/chat, POST /projects/:id/evaluate
  • chat_sessions, chat_messages, message_citations
  • POST /chat com session_id → persistir, GET /projects/:id/chat/sessions
  • UI: chat, perguntas com submit, feedback

Checkpoint:

  • Chat responde com base no material, citações
  • "Gerar material" → documento + perguntas
  • Submeter resposta → score + feedback
  • POST /documents apenas para criação manual

Docs: AGENTS, FLOWS, CITATIONS_UX


Sprint 5 — Learning (pós-MVP)

Objetivo: Learning Loop, user_profile, memória de conversa.

ÁreaEntregas
user_profileTabela, weak_topics, recent_errors, level
SM-2ease_factor, interval_days, next_review_at
what_to_reviewIntent: perguntas com next_review_at <= now
Loop adaptativoScore < 60 → material simplificado; score >= 90 → perguntas hard
conversation_memorySummary, embedding, retrieval no RAG QA
document_versionsHistórico ao editar (opcional)

Checklist:

  • user_profile: tabela, weak_topics, recent_errors, level, UI settings
  • SM-2: ease_factor, interval_days, next_review_at após evaluate
  • Intent what_to_review: perguntas com next_review_at <= now
  • Loop adaptativo: score < 60 → material simplificado; score >= 90 → perguntas hard
  • conversation_memory: summary, embedding, LLM resume a cada 5–10 msgs
  • RAG QA carrega memory como contexto
  • document_versions ao editar (opcional)

Checkpoint:

  • "O que devo rever?" devolve perguntas agendadas
  • Material adaptado a weak_topics
  • Memória permite continuidade no chat

Docs: LEARNING_LOOP, USER_INTELLIGENCE


Sprint 6 — Produção

Objetivo: Rate limit, cost control, deploy, observabilidade.

ÁreaEntregas
Rate limitingRedis sliding window, limites por endpoint, 429
Cost controlCache embeddings, cache respostas, model selection
RAG evaluationAmostragem, rag_evaluations, groundedness
Multi-tenantproject_id obrigatório, ownership, testes isolamento
ObservabilidadeLangSmith, health checks, logs estruturados
DeployDockerfile, CI, staging/produção

Checklist:

  • Rate limiting: Redis sliding window, limites por endpoint, 429 + Retry-After
  • Cache embeddings (Redis), cache respostas, model selection por tarefa
  • RAG evaluation: amostragem 10–20%, rag_evaluations, LangSmith evals
  • project_id obrigatório em pesquisas vetoriais, validação ownership
  • Testes de isolamento (user A não vê dados de user B)
  • LangSmith: LANGCHAIN_TRACING_V2, LANGCHAIN_API_KEY
  • Health checks: /health, /health/db, /health/redis
  • Logs estruturados (request_id, user_id)
  • Dockerfile API, Web; docker-compose produção; CI test/build

Checkpoint:

  • Rate limit ativo
  • LangSmith com traces
  • Deploy em staging/produção

Docs: SECURITY, COST_CONTROL, DEPLOYMENT


Matriz de prioridades

ItemPrioridadeSprintBloqueia
Auth, DB, DockerP01Tudo
Projetos CRUDP02Upload, RAG
Upload + IngestãoP02RAG, Generate
RAG simplesP02Chat, Generate
RouterP03Planner, Writer
Content Planner + WriterP03Generate
Question GeneratorP04Perguntas
RAG QA AgentP04Chat
Question EvaluatorP04Avaliação
Chat persistidoP14Histórico
Learning LoopP15
user_profileP15Adaptação
Rate limitingP06Produção
DeployP06
RAG evaluationP16Qualidade

P0: Essencial para MVP/produção. P1: Importante, pode ser faseado.


Dependências entre sprints

A carregar diagrama…
  • Sprint 1 não depende de nada.
  • Sprint 2 depende de auth e DB.
  • Sprint 3 depende de RAG e projetos.
  • Sprint 4 depende de Planner/Writer e jobs.
  • Sprint 5 pode começar em paralelo com 6 após Sprint 4.
  • Sprint 6 pode começar após 4 (MVP) ou após 5 (com Learning).

Critérios de MVP

MVP = fim do Sprint 4. Para considerar MVP concluído:

CritérioVerificação
AuthRegisto, login, refresh funcionam
ProjetosCRUD, ownership validado
UploadPDF → processed, chunks indexados
Generate"Quero estudar X" → documento + perguntas
ChatPergunta → resposta com citações
EvaluateResposta submetida → score + feedback
ProgressBarra de progresso durante geração
TestesUnit (auth, chunking), integration (API), E2E smoke

Ver TESTING.md para critérios de qualidade.


Checklist final

Documentação

  • Todos os docs em docs/ atualizados
  • README com link para ROADMAP

Funcionalidades

  • Auth completo
  • CRUD projetos, files, documents (POST /documents = manual only)
  • Geração via POST /generate (assíncrono)
  • Upload + ingestão com retry (ver JOBS_ASYNC)
  • RAG com chunking semântico
  • Router (hybrid), Content Planner, Writer (strict/hybrid), Question Generator
  • RAG QA Agent, Question Evaluator (hybrid)
  • State schema (STATE_SCHEMA) para LangGraph
  • Chat persistido (chat_sessions, chat_messages)
  • Learning Loop (SM-2), user profile, conversation memory
  • Jobs com progress, GET /jobs/:id
  • Rate limiting, cost control
  • Multi-tenant: project_id em retrieval, ownership validation

Qualidade

  • Testes conforme TESTING.md
  • Unit: auth, chunking, router rules, evaluator rules
  • Integration: API, RAG, multi-tenant
  • E2E smoke: upload → index → chat → generate → evaluate
  • Golden tests para Router
  • RAG eval set, retrieval_recall > 0.7

Pós-MVP e futuro

FaseItensQuando
LearningSM-2, user_profile, memorySprint 5
ProduçãoRate limit, deploy, observabilidadeSprint 6
FuturoHybrid search (BM25), reranking
FuturoMulti-modal (imagens, áudio)
FuturoKnowledge graph
FuturoOAuth (Google, GitHub)

Zona de prática

Sem perguntas. Clica em Editar para adicionar.