Hábitos default

TLDR: Hábitos pré-configurados pelo admin, exibidos no onboarding para usuários sem hábitos; o app envia o período do dia escolhido e os IDs selecionados, e o backend cria os hábitos com os horários daquele período.

Visão geral

  • O admin cadastra DefaultHabit pelo Django Admin
  • Cada DefaultHabit tem três conjuntos de horários: hours_morning, hours_afternoon, hours_night
  • O app pergunta ao usuário qual o melhor período (manhã/tarde/noite) antes de exibir a lista
  • Ao selecionar hábitos e confirmar, o app envia o período escolhido + os IDs selecionados
  • O backend cria os hábitos com os horários do período escolhido e gera as execuções automaticamente

Fluxo

mermaid graph LR A["app pergunta<br/>o período"] --> B["GET /habits/defaults/"] B --> C["usuário seleciona<br/>hábitos"] C --> D["POST /habits/default/<br/>time_of_day + ids"] D --> E["backend cria Habit<br/>com hours do período"] E --> F["gera HabitExecution"] style A fill:#1f2937,color:#fff style F fill:#374151,color:#fff

Contratos

Método URL Descrição
GET /habits/defaults/ Lista DefaultHabit ativos, ordenados por order
POST /habits/default/ Cria hábitos do usuário a partir dos defaults selecionados

POST /habits/default/

json { "time_of_day": "morning", "default_habit_ids": [1, 3] }

Retorna a lista dos Habit criados para o usuário. time_of_day aceita morning, afternoon ou night; valor inválido retorna 400.

Configuração no Admin

O admin pode configurar por hábito default:

  • Horários (Manhã): horários atribuídos quando o usuário escolhe manhã
  • Horários (Tarde): horários atribuídos quando o usuário escolhe tarde
  • Horários (Noite): horários atribuídos quando o usuário escolhe noite

Um mesmo hábito pode ter múltiplos horários em qualquer período (ex.: “Beber água” com 5 horários distribuídos ao longo do dia).

Seed

Arquivo: apps/habits/fixtures/default_habits.json

5 hábitos pré-configurados: Beber água, Meditar, Estudar, Exercício físico, Dormir cedo. Rodar com make seed.

Referências