feat(service-invoices): raw + campos ISS + Borrower no DTO de NFS-e (+ release v1.1.0)#17
Merged
Merged
Conversation
… NFS-e O retrieve de NFS-e devolve 44 campos; o DTO manuscrito cobria 19 e o from_api descartava o resto (arvore de retencoes, provider, taxationType, location, approximateTax...). Mitigacao-ponte enquanto o upstream nao componentiza a resposta de sucesso (espelha a change homonima do client-php): - Nfe::ServiceInvoice ganha :raw (payload completo preservado em todas as leituras - list/retrieve/cancel/201-issued) e os campos tipados base_tax_amount/iss_rate/iss_tax_amount (RBS (Float | Integer), validado por sonda ao vivo: inteiros chegam como Integer, decimais como Float) - Novo Nfe::ServiceInvoiceBorrower tipado com ponte Hash (#[]/#dig delegam ao payload cru - borrower["name"] continua funcionando); federal_tax_number sempre String via Company.stringify (CNPJ alfanumerico IN RFB 2.229/2024; spec declara int64 - desvio pinado) - pdf/xml deprecados (@deprecated YARD): campos-fantasma, sempre nil no retrieve - use download_pdf/download_xml - Teste de alinhamento YAML<->DTO ancorado por PATH (colisao de operationId ServiceInvoices_idGet no spec) que tambem serve de gatilho de migracao: quando a resposta for componentizada ($ref), o teste falha ruidosamente - Spec nf-servico-v1.yaml atualizado (ErrorsResource em components.schemas, respostas de erro tipadas) + saida de rake generate commitada junto (namespace nf_servico_v1 so de erros); generate:check verde; openapi/README.md e docblock do DTO corrigidos - Docs do recurso, skill nfeio-ruby-sdk e CHANGELOG atualizados Sonda ao vivo (read-only): ISS Float/Integer confirmado, fantasmas nil, Borrower normalizado, 21 campos sem membro tipado acessiveis via raw.
…e-dto - invoice-resources: cenario do retrieve ganha a clausula do raw; requisito novo do shape do ServiceInvoice (raw + ISS tipados + Borrower com ponte Hash + fantasmas deprecados + teste de alinhamento por path) - openapi-pipeline: exemplo do cenario 'spec sem schemas' atualizado (nf-servico-v1.yaml agora gera namespace de erros; fica cpf-api.yaml)
Sync dry-run: 18 specs rastreados byte-identicos ao docs atual (fetch de hoje); swagger.json do docs e duplicata do consumer-invoice.json ja rastreado - nada novo a adotar.
create_and_wait/create_batch continuam inexistentes na 1.1.0 - o texto 'na v1.0' sugeria versao exata; v1.x descreve a serie e nao envelhece a cada release. Titulo da skill nfeio-ruby-sdk idem. Mantidos: '~> 1.0' (cobre 1.1) e mencoes historicas a release 1.0.0.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumo
O retrieve de NFS-e devolve 44 campos; o DTO manuscrito
Nfe::ServiceInvoicecobria 19 e ofrom_apidescartava os outros ~25 (árvore de retenções,provider,taxationType,location,approximateTax, ...). Mitigação-ponte enquanto o upstream (nfe/docs) não componentiza a resposta de sucesso — espelha a change homônima do client-php (expand-service-invoice-dto).Inclui a preparação do release v1.1.0 (bump + rotação do CHANGELOG, convenções do
scripts/release.sh): ao mergear, basta a tag anotadav1.1.0para o workflow publicar via OIDC. A versão empacota as duas changes (webhooks #16 + esta).Mudanças
:rawnoNfe::ServiceInvoice: payload completo preservado em todas as leituras (list/retrieve/cancel/201-issued —from_apié o único ponto de hidratação). Nenhum campo mais fica inacessível.base_tax_amount,iss_rate,iss_tax_amount— RBS(Float | Integer)validado por sonda ao vivo (inteiros chegam comoInteger, decimais comoFloat)Nfe::ServiceInvoiceBorrowertipado com ponte Hash (#[]/#digdelegam ao payload cru —borrower["name"]continua funcionando);federal_tax_numbersempreStringviaCompany.stringify(CNPJ alfanumérico IN RFB 2.229/2024; spec declara int64 — desvio pinado no teste)pdf/xmldeprecados (@deprecatedYARD): campos-fantasma, semprenilno retrieve — usedownload_pdf/download_xmloperationIdServiceInvoices_idGetno spec), que também é o gatilho de migração: quando a resposta virar$ref, o teste falha ruidosamentenf-servico-v1.yamlatualizado (ErrorsResourceemcomponents.schemas) + saída derake generatecommitada junto (namespacenf_servico_v1só de erros);openapi/README.mde docblock corrigidos; snapshot verificado contranfe/docsmain (18 specs byte-idênticos)nfeio-ruby-sdk, CHANGELOG; OpenSpec sincronizado e arquivadoSemVer
Minor (1.1.0) — tudo aditivo.
borrowermantém leituras Hash pela ponte;pdf/xmldeprecados (não removidos); membros novos anexados ao fim (:rawpor último).Testes
rakecompleto (Docker ruby34): 688 examples, 0 failures · RuboCop limpo · Steep limpo ·rbs validateok ·generate:checkem syncapi.nfe.io: serialização do ISS confirmada, fantasmasnil, Borrower normalizado (fioInteger→String), 21 campos sem membro tipado acessíveis viaraw