Skip to content

Fix/integridade do ciclo de manifestacao - #26

Merged
net0well merged 2 commits into
mainfrom
fix/integridade-do-ciclo-de-manifestacao
Jul 28, 2026
Merged

net0well merged 2 commits into
mainfrom
fix/integridade-do-ciclo-de-manifestacao

Conversation

@net0well

Copy link
Copy Markdown
Owner

No description provided.

net0well added 2 commits July 28, 2026 18:02
… Prettier

Revisão de integridade cruzando o código com README, RUNBOOK, CONTRIBUTING e RELEASE.

Manifestação durante bloqueio da SEFAZ

`Impedimento` conferia empresa inativa, ausência de certificado e certificado vencido,
mas não o bloqueio — `EstaBloqueada` existia em um único ponto do código, o handler de
sincronização. Com o CNPJ bloqueado por consumo indevido a sincronização parava e
esperava, enquanto o ciclo de manifestação seguia batendo na mesma empresa de meia em
meia hora. A cota é do CNPJ e a SEFAZ conta distribuição e eventos na mesma conta: o
ciclo renovava justamente o bloqueio que se estava esperando expirar.

Lote de eventos sem desfecho

Quando a SEFAZ processa a remessa mas não devolve retorno para nenhuma chave, elas
seguem pendentes — e a volta seguinte do laço buscava o mesmo lote e o reenviava, até o
teto. Remessas idênticas gastando cota sem mudar estado. Agora o laço encerra e sinaliza
que restam pendentes; quem retoma é o ciclo seguinte.

Promoção para XML completo encerra a pendência de ciência

A ciência serve para destravar o XML completo; com ele em mãos não sobra o que destravar.
Manter o documento pendente fazia o job reenviar o evento 210210 de notas já resolvidas.
Ciência registrada ou recusada preserva o próprio desfecho — são histórico. As consultas
de pendentes ganharam `!PossuiXml` como rede de segurança, e uma migração corrigiu as
linhas já gravadas: 86 dos 98 documentos em base estavam nesse estado.

Fim de linha do frontend

`prettier --check` falhava na máquina do desenvolvedor e passava no CI. `* text=auto` com
`core.autocrlf=true` grava CRLF no checkout Windows, o Prettier valida fim de linha e usa
LF, e o `.editorconfig` de `src/econtabil-web` — que é `root = true` — não declarava
`end_of_line`. Rodar `--write` resolvia até o próximo checkout desfazer. `*.ts`, `*.html`,
`*.scss` e `*.css` passam a `eol=lf` no `.gitattributes` e o `.editorconfig` do web
declara o mesmo LF. Esses tipos só existem em `src/econtabil-web`.

Relógio no alerta de certificados

`ObterVencendoEmAteAsync` calculava o limite com `DateTime.UtcNow` sob um comentário que
prometia controle do relógio nos testes — que ele não dava. Passa a receber `TimeProvider`,
e o teste adianta o relógio para exercitar a borda da janela de vencimento.

Documentação

- `CONTRIBUTING.md` afirmava que o CI roda o mesmo conjunto do PR, omitindo a conferência
  do Prettier — a que mais escapa, por rodar fora do `ng build`.
- `RELEASE.md` e `RUNBOOK.md` apontavam para specs que não são versionadas. A coluna passa
  a dizer o que cada pendência custa ao operador, sem depender de arquivo externo.
- `README.md` listava o teste contra a SEFAZ de produção como pendência principal; ele já
  foi feito. Fica registrada a pendência real, a manifestação, e a semântica do ponteiro
  de NSU pertencer ao CNPJ e não à aplicação.
- O formato de commit documentado carregava sufixo `(spec NNN)`, contra a própria regra de
  não referenciar documento externo.
- Registradas as duas lacunas de gestão de usuários: não há tela no frontend e não há
  troca da própria senha.
… Prettier

Revisão de integridade cruzando o código com README, RUNBOOK, CONTRIBUTING e RELEASE.

Manifestação durante bloqueio da SEFAZ

`Impedimento` conferia empresa inativa, ausência de certificado e certificado vencido,
mas não o bloqueio — `EstaBloqueada` existia em um único ponto do código, o handler de
sincronização. Com o CNPJ bloqueado por consumo indevido a sincronização parava e
esperava, enquanto o ciclo de manifestação seguia batendo na mesma empresa de meia em
meia hora. A cota é do CNPJ e a SEFAZ conta distribuição e eventos na mesma conta: o
ciclo renovava justamente o bloqueio que se estava esperando expirar.

Lote de eventos sem desfecho

Quando a SEFAZ processa a remessa mas não devolve retorno para nenhuma chave, elas
seguem pendentes — e a volta seguinte do laço buscava o mesmo lote e o reenviava, até o
teto. Remessas idênticas gastando cota sem mudar estado. Agora o laço encerra e sinaliza
que restam pendentes; quem retoma é o ciclo seguinte.

Promoção para XML completo encerra a pendência de ciência

A ciência serve para destravar o XML completo; com ele em mãos não sobra o que destravar.
Manter o documento pendente fazia o job reenviar o evento 210210 de notas já resolvidas.
Ciência registrada ou recusada preserva o próprio desfecho — são histórico. As consultas
de pendentes ganharam `!PossuiXml` como rede de segurança, e uma migração corrigiu as
linhas já gravadas: 86 dos 98 documentos em base estavam nesse estado.

Fim de linha do frontend

`prettier --check` falhava na máquina do desenvolvedor e passava no CI. `* text=auto` com
`core.autocrlf=true` grava CRLF no checkout Windows, o Prettier valida fim de linha e usa
LF, e o `.editorconfig` de `src/econtabil-web` — que é `root = true` — não declarava
`end_of_line`. Rodar `--write` resolvia até o próximo checkout desfazer. `*.ts`, `*.html`,
`*.scss` e `*.css` passam a `eol=lf` no `.gitattributes` e o `.editorconfig` do web
declara o mesmo LF. Esses tipos só existem em `src/econtabil-web`.

Relógio no alerta de certificados

`ObterVencendoEmAteAsync` calculava o limite com `DateTime.UtcNow` sob um comentário que
prometia controle do relógio nos testes — que ele não dava. Passa a receber `TimeProvider`,
e o teste adianta o relógio para exercitar a borda da janela de vencimento.

Documentação

- `CONTRIBUTING.md` afirmava que o CI roda o mesmo conjunto do PR, omitindo a conferência
  do Prettier — a que mais escapa, por rodar fora do `ng build`.
- `RELEASE.md` e `RUNBOOK.md` apontavam para specs que não são versionadas. A coluna passa
  a dizer o que cada pendência custa ao operador, sem depender de arquivo externo.
- `README.md` listava o teste contra a SEFAZ de produção como pendência principal; ele já
  foi feito. Fica registrada a pendência real, a manifestação, e a semântica do ponteiro
  de NSU pertencer ao CNPJ e não à aplicação.
- O formato de commit documentado carregava sufixo `(spec NNN)`, contra a própria regra de
  não referenciar documento externo.
- Registradas as duas lacunas de gestão de usuários: não há tela no frontend e não há
  troca da própria senha.
@net0well
net0well merged commit 4512741 into main Jul 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant