Skip to content

Fluxo de configurações (Resumo)

Ordem de resolução

  1. Base: configs/{config_type}/base_v0_1/base
  2. Padrão: configs/{config_type}/overrides/{pattern_id}
  3. Usuário: users/{uid}/configs/{user_config_id}
  4. Projeto: users/{uid}/projects/{pid}/params/*

Regras de merge

  • Mapas: merge profundo
  • Arrays: substituição total (use _patch para alterar índices específicos)

Conversão de moeda

  • Aplicar taxa apenas no CAPEX final
  • Chaves aceitas: currency_rate, exchange_rate, fx_rate, rate
  • Patch _patch em Unit Cost já deve estar na moeda final (não aplicar taxa novamente)

Endpoints

  • configs_resolve: retorna configuração completa
  • configs_override: grava apenas diff

Observações

  • list_curves pode variar de tamanho
  • Frontend não deve aplicar taxa nem fazer merge local
  • Unit Cost With BDI é derivado de Unit Cost + BDI (não salvar)
  • Campos de hierarquia (Code Length, Code Level, Code No Points, Code Up, Level) são gerados apenas quando CAPEX_HIERARCHY estiver em include_fields
  • Para uso do CAPEX no frontend, envie include_fields com CAPEX_HIERARCHY (ou CAPEX_ROWS para 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'] });