Skip to content

Frontend — Fluxo de Configurações (railway/roadway)

Este documento descreve como o frontend deve consumir os endpoints do config_service para obter configurações completas e salvar overrides.

Endpoints

  • Resolve (GET/POST): https://us-central1-wwcalc-d2140.cloudfunctions.net/configs_resolve
  • Override (POST): https://us-central1-wwcalc-d2140.cloudfunctions.net/configs_override

Etapa 1 — Mostrar padrões

Quando o usuário abre a tela de configurações: - Para mostrar o base:

{ "config_type": "railway" }
  • Para mostrar um padrão (ex.: 2):
{ "config_pattern_id": "2" }

Etapa 2 — Criar configuração do usuário

Fluxo: 1) Buscar o baseline via configs_resolve (com o padrão escolhido). 2) Usuário altera parâmetros + escolhe moeda/taxa. 3) Enviar para configs_override com target = user_config.

Exemplo:

{
  "target": "user_config",
  "user_id": "<USER_ID>",
  "user_config_id": "<NOVO_ID>",
  "config_pattern_id": "2",
  "payload": {
    "values_params": {
      "platform": { "platform_width": 7.5 }
    },
    "capex": {
      "CAPEX": { "Unit Cost With BDI": [1.0, 2.0, 3.0] },
      "currency_rate": 5.75
    }
  }
}

Etapa 3 — Abrir projeto

Quando o usuário escolhe um config dele e inicia um projeto:

{
  "user_id": "<USER_ID>",
  "project_id": "<PROJECT_ID>",
  "user_config_id": "<USER_CONFIG_ID>",
  "config_pattern_id": "2"
}

Esse retorno já vem com: - base + override do padrão - override do user_config - override do projeto (se houver) - taxa aplicada no CAPEX

Etapa 4 — Alterações dentro do projeto

Se o usuário alterar algo no projeto:

{
  "target": "project_params",
  "user_id": "<USER_ID>",
  "project_id": "<PROJECT_ID>",
  "user_config_id": "<USER_CONFIG_ID>",
  "config_pattern_id": "2",
  "payload": {
    "values_params": {
      "earthwork": { "max_cut": 30 }
    }
  }
}

Observações importantes

  • O frontend não deve fazer merge local nem aplicar taxa de câmbio. Isso é feito pelo backend.
  • Arrays são substituídos por completo. Não tente mesclar arrays localmente.
  • list_curves pode ter tamanho variável sem problema.
  • Para obter apenas base, basta chamar configs_resolve com config_type.

Erros comuns

  • 400: payload incompleto
  • 404: ids inexistentes
  • 500: erro interno

IDs que o frontend deve guardar

  • config_pattern_id (padrão escolhido)
  • user_config_id (config do usuário)
  • project_id
  • user_id