OR-145: Corrige gaps de máscaras DARF e banco#35
Conversation
…ão do mfe-bill - Corrige padrão DARF de '99.999.999-9' para '99 9 99 999999-99' (formato original dos MFEs) - Adiciona maskBankBranch() para máscara de agência (padrão 9999, Itaú 99999-9) - Adiciona maskBankAccount() para máscara de conta por código de compensação - Alinha fallback noop do maskHintBankAccount com padrão original (999999999999-9) - Exporta novas funções via index.ts Relates to Pagnet/mfe-core#336 Co-authored-by: FabioRolin <fabio.oliveira@useblu.com.br> Co-Authored-By: fabio.oliveira@useblu.com.br <fabio.oliveira@useblu.com.br>
Original prompt from fabio.oliveira@useblu.com.br
|
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
…nk_account
- Adiciona 'bank_branch' e 'bank_account' ao tipo MaskType
- maskValue('1234', 'bank_branch') → '1234' (padrão noop)
- maskValue('1234567890123', 'bank_account') → '123456789012-3' (padrão noop)
- maskComplete suporta validação de completude para os novos tipos
- Testes para maskValue e maskComplete cobrindo DARF, bank_branch e bank_account
Co-authored-by: FabioRolin <fabio.oliveira@useblu.com.br>
Co-Authored-By: fabio.oliveira@useblu.com.br <fabio.oliveira@useblu.com.br>
Co-authored-by: FabioRolin <fabio.oliveira@useblu.com.br> Co-Authored-By: fabio.oliveira@useblu.com.br <fabio.oliveira@useblu.com.br>
- Adiciona 'phone_idd' ao MaskType com padrão '+99 (99) 99999-9999' (mfe-pix)
- Estende maskValue com options.compensationCode para resolver máscaras bancárias
dinâmicas por banco (ex: maskValue('123456', 'bank_branch', { compensationCode: '341' }))
- Estende maskComplete com compensationCode para validação de completude
- Exporta MaskValueOptions interface para consumo externo
- 143 testes passando (15 novos: phone_idd, bank dinâmico com compensationCode)
Co-authored-by: FabioRolin <fabio.oliveira@useblu.com.br>
Co-Authored-By: fabio.oliveira@useblu.com.br <fabio.oliveira@useblu.com.br>
Status de Testes
|
Breaking Changes
|
Guia de Migração nos MFEs (Fase 2)# mfe-bill (DARFFormik.js)
- mask="darf.referenceNumber"
+ mask="darf"
- mask="bank.noop.branch"
+ mask="bank_branch"
# mfe-pix (CreateContactDrawer)
- mask: 'phone_idd' (local masks.js)
+ mask: 'phone_idd' (core/blu-utils — mesma chave)
# mfe-payment-transfer (NewClientForm)
- mask={`bank.${values.bank.compensation_code}.branch`}
+ mask="bank_branch" + maskOptions={{ compensationCode: values.bank.compensation_code }}
- mask={`bank.${values.bank.compensation_code}.account`}
+ mask="bank_account" + maskOptions={{ compensationCode: values.bank.compensation_code }}Exemplos de uso da nova API: import { maskValue, maskComplete } from 'core/blu-utils';
// phone_idd
maskValue('5511999998888', 'phone_idd'); // '+55 (11) 99999-8888'
// bank dinâmico com compensationCode
maskValue('123456', 'bank_branch', { compensationCode: '341' }); // '12345-6' (Itaú)
maskValue('123456789', 'bank_account', { compensationCode: '1' }); // '12345678-9' (BB)
// maskComplete com compensationCode
maskComplete('123456', 'bank_branch', '341'); // true (Itaú: 5+1 dígitos) |
Revisão — ajustes sugeridosComplemento bem alinhado ao #33 e a cobertura de testes está sólida. Encontrei 1 bug real e algumas inconsistências de API/tipagem que vale endereçar antes do merge. 🔴 Bug — strip divergente entre
|
| Função | Forma |
|---|---|
maskValue(v, type, { compensationCode }) |
options |
maskBankBranch(v, compensationCode) |
posicional |
maskBankAccount(v, compensationCode) |
posicional |
maskComplete(v, type, compensationCode) |
posicional |
Não é bug, mas obriga o consumidor a lembrar qual estilo usar em cada função. Sugestão: padronizar via options em todas — extensão futura (ex.: novos modificadores por banco) fica mais fácil sem virar breaking change.
🟡 Mudança de DARF é potencialmente breaking
- DARF: '99.999.999-9',
+ DARF: '99 9 99 999999-99',O checkbox "Breaking change" está desmarcado, mas qualquer consumidor que já chamava maskValue(x, 'darf') passa a receber output diferente (tamanho e separadores).
Sugestão: se a varredura dos 33 MFEs confirmou que ninguém consumia o formato antigo, registrar isso na descrição. Caso contrário, marcar como breaking e mencionar no changelog/release notes.
🟢 Cosméticos / pontos menores
tests/masks/maskBankBranch.spec.ts: títulos "agência Banco do Brasil (001)" e "Santander (033)" mas os códigos passados são'1'e'33'. Alinhar para evitar confusão.DEFAULT_BANK_BRANCH_MASK = '9999'descarta DV de agência para todos os bancos exceto Itaú. Bradesco e BB têm DV de 1 dígito no padrão real — confirmar com produto se é intencional para esta fase ou se faltou mapear esses códigos.MaskValueOptions extends CurrencyMaskOptionsfaz com quemaskValue(x, 'cpf', { compensationCode: '341' })compile sem erro (campo silenciosamente ignorado em tipos não-bancários). Aceitável, mas um comentário no tipo ajudaria quem vai consumir.
👍 O que está bom
- Cobertura de testes ampla (branch + account + complete + value + hint).
DEFAULT_HINTemmaskHintBankAccountagora derivado deDEFAULT_BANK_ACCOUNT_MASK— eliminou divergência silenciosa que existia antes.- Exportar
MaskValueOptionspermite que consumidores tipem o options sem importar caminho interno. - Separação
DEFAULT_*_MASKvs. map por código deixa a intenção clara.
Prioridade sugerida: 1 (bug de strip) → 2 (tipagem Partial) → 4 (rotular breaking ou justificar) → 3 (uniformizar API) → 5 (cosméticos).
… padroniza API e tipagem - Fix: stripFor em maskValue e maskComplete agora considera compensationCode para bancos com DV alfanumérico (BB código 1), alinhando com maskBankAccount - Fix: BANK_ACCOUNT_MASKS alterado para Partial<Record> (reflete fallback real) - Refactor: extrai ALPHANUMERIC_BANK_CODES para masks.ts (fonte única) - Refactor: maskComplete aceita options object além de string posicional - Export: MaskCompleteOptions interface - Docs: JSDoc em MaskValueOptions sobre compensationCode - Tests: DV alfanumérico via maskValue e maskComplete, options object syntax - Cosmético: títulos de testes alinhados com códigos reais (001→1, 033→33) Co-authored-by: FabioRolin <fabio.oliveira@useblu.com.br> Co-Authored-By: fabio.oliveira@useblu.com.br <fabio.oliveira@useblu.com.br>
|
@danimuller20 Boa revisão! Todos os pontos foram endereçados no commit 🔴 Bug — strip divergente
|
Description
Corrige gaps de máscaras identificados na varredura de 33 MFEs, complementando o PR #33 (Fase 1 — centralização de máscaras).
Mudanças
'99.999.999-9'para'99 9 99 999999-99'(formato original dos MFEs)phone_idd: adiciona aoMaskTypecom padrão'+99 (99) 99999-9999'(usado pelo mfe-pix)bank_branch/bank_account: adicionados aoMaskTypepara uso direto viamaskValuecompensationCodedinâmico:maskValueaceitaoptions.compensationCodepara resolver máscaras bancárias por bancomaskValueemaskCompleteusamstripAlphanumericpara bancos com DV alfanumérico (BB código 1), alinhando commaskBankAccountmaskComplete: aceitaoptions?: string | MaskCompleteOptionspara consistência de API commaskValuemaskBankBranch/maskBankAccount: funções dedicadas para uso direto (API pública)maskHintBankAccount: alinhado fallback noop com padrão original (000000000000-0)BANK_ACCOUNT_MASKS: alterado paraPartial<Record>(reflete comportamento real de fallback)ALPHANUMERIC_BANK_CODES: extraído paramasks.tscomo fonte única de verdadeMaskValueOptions/MaskCompleteOptions: interfaces exportadas para tipagemLinks
Co-authored-by: FabioRolin fabio.oliveira@useblu.com.br
Type of change
Checklist
yarn test)yarn lint). Fix it withyarn lint:fixin case of failure.yarn lint:types).Link to Devin session: https://app.devin.ai/sessions/018e523413e74f6882e82c8b5c9bf92d
Requested by: @FabioRolin