Fluxo de configurações (Resumo)¶
Ordem de resolução¶
- Base:
configs/{config_type}/base_v0_1/base - Padrão:
configs/{config_type}/overrides/{pattern_id} - Usuário:
users/{uid}/configs/{user_config_id} - Projeto:
users/{uid}/projects/{pid}/params/*
Regras de merge¶
- Mapas: merge profundo
- Arrays: substituição total (use
_patchpara alterar índices específicos)
Conversão de moeda¶
- Aplicar taxa apenas no CAPEX final
- Chaves aceitas:
currency_rate,exchange_rate,fx_rate,rate - Patch
_patchemUnit Costjá deve estar na moeda final (não aplicar taxa novamente)
Endpoints¶
configs_resolve: retorna configuração completaconfigs_override: grava apenas diff
Observações¶
list_curvespode variar de tamanho- Frontend não deve aplicar taxa nem fazer merge local
Unit Cost With BDIé derivado deUnit Cost+BDI(não salvar)- Campos de hierarquia (
Code Length,Code Level,Code No Points,Code Up,Level) são gerados apenas quandoCAPEX_HIERARCHYestiver eminclude_fields - Para uso do CAPEX no frontend, envie
include_fieldscomCAPEX_HIERARCHY(ouCAPEX_ROWSpara formato rows)
CAPEX.Variables (base x i18n)¶
- Base (
/configs/railway/v0_1/base.CAPEX.Variables): cada opção contém somente{ "2": valor }. - i18n (
/configs/i18n/railway/{lang}.base.CAPEX.Variables): cada opção contém somente{ "0": texto, "1": unidade }. - O backend mescla i18n sobre o base mantendo o índice 2 do base.
Consultar apenas patterns (duas opções)¶
1) Firestore REST (field mask)
- PT-BR: GET https://firestore.googleapis.com/v1/projects/wwcalc-d2140/databases/(default)/documents/configs/i18n/railway/pt-br?mask.fieldPaths=patterns
- EN: GET https://firestore.googleapis.com/v1/projects/wwcalc-d2140/databases/(default)/documents/configs/i18n/railway/en?mask.fieldPaths=patterns
2) SDK do Firestore
const ref = doc(db, 'configs/i18n/railway/pt-br');
const snap = await getDoc(ref, { fieldMask: ['patterns'] });