Skip to content

Dev#285

Merged
SamuelFortes merged 86 commits into
masterfrom
dev
Jul 9, 2026
Merged

Dev#285
SamuelFortes merged 86 commits into
masterfrom
dev

Conversation

@SamuelFortes

Copy link
Copy Markdown
Collaborator

No description provided.

SamuelFortes and others added 30 commits June 26, 2026 10:03
…_estudo, materiais_estudo e tarefas_disciplina
Remove variável não utilizada, underscores duplicados desnecessários
e substitui withOpacity (deprecado) por withValues(alpha:).
O Flutter trata --fatal-infos como on por padrao, entao avisos de
estilo (ex: deprecated_member_use, unnecessary_underscores) quebravam
o CI da mesma forma que erros reais. Agora so erros e warnings
continuam bloqueando o pipeline.
Remove a variavel 'cores' nao utilizada em login_screen.dart, que
quebrava o flutter analyze com warning unused_local_variable. Tambem
adiciona --no-fatal-infos ao step de analyze no workflow, ja que essa
versao do Flutter trata issues de nivel info como fatais por padrao.
Alinha o pull_request/push do ci.yml ao mesmo padrao usado em
Samuel#234, para que todas as branches do repositorio rodem o
CI com a mesma configuracao.
Alinha o ci.yml ao mesmo padrao usado nas demais branches: nao
falhar o flutter analyze por issues de nivel info, e usar o mesmo
gatilho de pull_request/push em todo o repositorio.
Traz o pipeline de testes do Django e do Flutter, ja com
--no-fatal-infos no flutter analyze, para manter consistencia com
as demais branches do repositorio.
Traz o pipeline de testes do Django e do Flutter, ja com
--no-fatal-infos no flutter analyze, para manter consistencia com
as demais branches do repositorio.
Traz o pipeline de testes do Django e do Flutter, ja com
--no-fatal-infos no flutter analyze, para manter consistencia com
as demais branches do repositorio.
ci: adiciona workflow de CI/CD (testes backend e frontend)
ci: adiciona workflow de CI/CD (testes backend e frontend)
ci: adiciona workflow de CI/CD (testes backend e frontend)
viniciusbtech and others added 29 commits July 6, 2026 21:14
api_service.dart e auth_service.dart usavam _baseUrl hardcoded para
localhost:8000, o que quebraria em produção. Passam a usar kBaseUrl,
já parametrizável via --dart-define=FOCUS_API_BASE_URL.
- SECRET_KEY, DEBUG e ALLOWED_HOSTS passam a vir de env vars
- CORS restrito a FRONTEND_URL quando definida (mantem liberado em dev)
- Banco configurado via DATABASE_URL (dj-database-url), com fallback
  para o SQLite local
- WhiteNoise para servir estaticos do admin
- requirements.txt limpo (estava com o freeze de todo o ambiente local,
  incluindo pacotes nao usados pelo projeto) e com gunicorn,
  whitenoise, dj-database-url e psycopg2-binary adicionados
- build.sh com os passos de build usados no Render
- ci.yml passa a rodar tambem em push para dev, com um job novo que
  builda o Flutter Web e publica no GitHub Pages apos os testes
  passarem (branch dev apenas)
- render.yaml define o web service Django + Postgres gratuitos no
  Render, com auto-deploy nativo pela branch dev (sem precisar de
  deploy hook)
O nome "focus-api" ja estava em uso, o Render criou o servico como
focus-api-hqbc.onrender.com. Isso causava 400 Bad Request
(DisallowedHost) em todas as requisicoes.
fix(deploy): corrige ALLOWED_HOSTS para o host real do Render
O job backend-tests instalava so Django/DRF/cors-headers na mao, mas
settings.py agora depende de dj-database-url e whitenoise (usados em
producao). Isso quebrava o "python manage.py test" com
ModuleNotFoundError. Passa a instalar via requirements.txt para nao
duplicar a lista de dependencias.
fix(ci): instala backend/requirements.txt no job de testes
Nova app `insights` que calcula os insights de perfil de estudo a partir
dos dados ja coletados (SessaoEstudo, BlocoPomodoro, TarefaDisciplina,
EventoAcademico), antes 100% mock no frontend.

- services.py: InsightsService com 12 insights (melhor_horario,
  melhor_dia_semana, duracao_ideal, foco_sem_interrupcoes,
  vies_estimativa, tarefas_no_prazo, taxa_furo, sequencia_produtiva,
  cramming, ritmo_disciplina, progresso, equilibrio_metodo) + gate de N
  minimo e fallback amostra_insuficiente. Produtividade da sessao =
  media dos blocos pomodoro.
- statistics.py: Pearson/Spearman e regressao quadratica em Python puro
  (sem numpy/scipy, mantendo o requirements.txt enxuto). Sem ML/LLM.
- models.py: InsightFeedback + personalizacao deterministica (rebaixa/
  oculta insight marcado como nao util).
- endpoints: GET /api/insights/, GET /api/insights/evolucao/,
  POST /api/insights/{id}/feedback/.
- tests.py: 16 testes cobrindo cada insight, o gate de N, o feedback e
  os endpoints.
- README documenta o pendente: Fase 4 (origem/efeito_acao/jornada) e
  Fase 5 (sono/tela, fora de escopo).

Refs #267
fetchInsights/fetchDashboard/submitFeedback passam a consumir
GET /api/insights/, GET /api/insights/evolucao/ e
POST /api/insights/{id}/feedback/. Cliente http injetavel para preservar
o construtor const usado pela tela e pelos testes de widget.

fetchJourney retorna vazio ate a Fase 4 do backend (origem da
recomendacao). Teste do service atualizado com MockClient.

Refs #267
Vinicius#226
Implementação completa da funcionalidade do Blobo de notas. 
Front end Implementado.
Backend implmentado .
Testes TDD também feitos!!
doc:atualizando a documentação e release.refs#226
O SingleChildScrollView(reverse: true) combinado com .reversed.toList()
na Column invertia a ordem visual dos elementos. Removidos ambos para
manter a ordem natural (logo, titulo, campos, botao).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…or direito

Remove o botao "+" do cabecalho e usa um FloatingActionButton, padrao mais
intuitivo em telas de celular.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A action `dashboard` tinha prints de debug com emoji. No console cp1252 do
Windows, o print lancava UnicodeEncodeError e a requisicao retornava HTTP 500,
fazendo a aba Consistencia exibir "Nao foi possivel carregar". Prints removidos.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…onsiva

- Nova tela DisciplinasScreen: listar, criar, editar e excluir disciplinas
  (backend ja expunha CRUD via ModelViewSet). As disciplinas ficam disponiveis
  em todo o app (Pomodoro, Evento Academico, etc.) pois tudo le de
  /api/disciplinas/.
- DisciplinaService ganha atualizarDisciplina (PATCH) e excluirDisciplina (DELETE).
- CriarDisciplinaDialog passa a suportar criacao e edicao.
- Disciplinas ligada na navegacao (enum, IndexedStack, sidebar e bottom nav).
- Bottom nav reescrita como widget proprio: com 7 itens a NavigationBar do
  Material quebrava os rotulos no meio da palavra em telas estreitas (320-425px).
  Agora cada rotulo usa FittedBox e cabe sempre em uma linha. Rotulos do mobile
  encurtados (Tarefas, Materias, Ritmo).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Isola a feature de sessão de notas sobre a dev, sem arrastar o
trabalho de insights/consistência que havia sido mesclado na branch
original (vinicius#226-227) e ainda não está na dev.

Notas são persistidas reusando o endpoint /api/materiais-estudo/:
cada nota é um MaterialEstudo com prefixo [NOTA] no título e as seções
serializadas em JSON no campo descrição. O provider de materiais passa
a filtrar essas entradas para não exibi-las na tela de materiais.

Inclui model, provider, service, tela e testes automatizados, além do
wiring de navegação (AppPage.notas, sidebar, bottom nav e home).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(notas): sessão de notas de estudo (#226, #227)
Adiciona a secao 1.1.0 ao release.md (Insights, Pomodoro, Notas de
estudo, aba de Disciplinas, Biblioteca de materiais, consistencia com
dados reais e correcoes de login/consistencia no Windows) e sobe a
versao do app para 1.1.0+2.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
# Conflicts:
#	.github/workflows/ci.yml
@SamuelFortes
SamuelFortes merged commit acf1f9c into master Jul 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants