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
DefaultHabitpelo Django Admin - Cada
DefaultHabittem 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.