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_curvespode ter tamanho variável sem problema.- Para obter apenas base, basta chamar
configs_resolvecomconfig_type.
Erros comuns¶
400: payload incompleto404: ids inexistentes500: erro interno
IDs que o frontend deve guardar¶
config_pattern_id(padrão escolhido)user_config_id(config do usuário)project_iduser_id