Pular para conteúdo

MVP 1 - Metas - Tecnico

Backend

Rotas REST:

  • GET /goals
  • POST /goals
  • GET /goals/{goal_id}
  • PUT /goals/{goal_id}
  • DELETE /goals/{goal_id}
  • GET /goals/{goal_id}/plan
  • POST /goals/simulate

Arquivos-base:

  • /tmp/auraxis-platform-mvp1docs-p5AMyw/repos/auraxis-api/app/controllers/goal/routes.py
  • /tmp/auraxis-platform-mvp1docs-p5AMyw/repos/auraxis-api/app/controllers/goal/resources.py

Modelo

  • /tmp/auraxis-platform-mvp1docs-p5AMyw/repos/auraxis-api/app/models/goal.py
  • /tmp/auraxis-platform-mvp1docs-p5AMyw/repos/auraxis-api/app/schemas/goal_schema.py

Campos:

  • title
  • description
  • category
  • target_amount
  • current_amount
  • priority
  • target_date
  • status

Regra de planejamento

Application service:

  • /tmp/auraxis-platform-mvp1docs-p5AMyw/repos/auraxis-api/app/application/services/goal_application_service.py

Servico de planejamento:

  • /tmp/auraxis-platform-mvp1docs-p5AMyw/repos/auraxis-api/app/services/goal_planning_service.py

Logica relevante:

  • calcula valor restante
  • calcula capacidade com base em renda menos despesas
  • define aporte projetado
  • estima meses para atingir a meta
  • classifica saude da meta
  • gera recomendacoes

Saudes possiveis na pratica:

  • completed
  • on_track
  • off_track
  • at_risk

GraphQL

Metas tambem estao expostas em GraphQL:

  • /tmp/auraxis-platform-mvp1docs-p5AMyw/repos/auraxis-api/app/graphql/queries/goal.py
  • /tmp/auraxis-platform-mvp1docs-p5AMyw/repos/auraxis-api/app/graphql/mutations/goal.py

Frontends

No estado atual do codigo:

  • web nao tem pagina de metas
  • app nao tem tela de metas

Ou seja: metas ja sao um modulo de dominio e API, mas ainda nao uma experiencia completa de produto em todos os canais.

Contrato esperado entre canais

Para metas, o contrato entre web/app e API deve seguir estes principios:

  • API como fonte canonica de dados persistidos;
  • valores monetarios em BRL serializados como string decimal;
  • timestamps em UTC (ISO-8601);
  • resource_version em update/delete para controle otimista;
  • idempotency_key nas operacoes mutaveis;
  • leitura incremental com updated_since, limit, cursor e aplicacao de deleted_at_utc para exclusao logica.