mirror of https://github.com/interlegis/sapl.git
Browse Source
* Fix(Assinatura): falha em massa vira uma linha legivel e URL de outra instancia nao converte AB#1473 Duas lacunas que o acervo real de Franco expos em 22/08/2026, as duas sobre a materializacao falhar sem que ninguem consiga agir. 1. FALHA EM MASSA AGREGADA POR MOTIVO `2 gerados, 873 falhas` passava por linha de rotina, e as 873 eram todas o MESMO erro — 873 logger.error dispersos que ninguem le. O aviso anterior so disparava com ZERO gerados, entao duas materias PDF passando escondiam o lote inteiro de DOCX parado. Agora o motivo dominante sai numa linha com a contagem. Uma falha isolada continua sem gritar: materia podre avulsa e ruido esperado (§5.1). Junto vai a dica que evita consertar a variavel errada: `codigo -8` do OnlyOffice e erro de TOKEN, nao de URL. Eu mesmo li errado primeiro e mandei configurar SAPL_INTERNAL_URL. JWT desligado AQUI e exatamente o que produz -8 quando o SERVIDOR do OnlyOffice exige assinatura — provado com POST direto ao ConvertService, sem token, com URL publica respondendo 200: devolve -8. Se fosse download quebrado seria -4. A dica so aparece com ONLYOFFICE_JWT_ENABLED=False; com JWT ligado o -8 e outra coisa e a dica viraria pista falsa. 2. CONFERENCIA DA ORIGEM SERVIDA `SAPL_INTERNAL_URL` e configuracao de operador e nao ha de onde deduzi-la: nao ha contrib.sites, ALLOWED_HOSTS e ['*'] e no cron nao existe request. E, mais a fundo, so quem opera sabe qual URL o servidor do OnlyOffice alcanca. O risco nao e ela ser fixa — e ela apontar para OUTRA instancia em silencio: o hash_origem sai do arquivo local e o PDF-alvo do arquivo do outro SAPL. Como e esse hash que dispara a retificacao (§5.1), o alvo defasado nunca mais e regenerado e assina-se um PDF que nao corresponde ao texto da materia. Baixar a propria URL e comparar o sha256 fecha isso sem adivinhacao: seja qual for o valor configurado, so passa se servir ESTE documento. Rodado contra o ambiente local com SAPL_INTERNAL_URL apontando para demo.legisinc.com.br, pegou na hora — materias 1066 e 1072 sao documentos diferentes nas duas instancias. So o caminho DOCX confere; PDF copia bytes e nao toca o OnlyOffice. Testes: 70 passed em sapl/integracao_hub/tests/ (eram 64). * Fix(Assinatura): falha em massa diz o motivo, e a varredura nao apaga assinatura AB#1473 O #17 fez a materializacao recusar rodar sem base URL. Faltava o resto: com base URL configurada e o OnlyOffice recusando a conversao, as 861 falhas de Franco voltavam a ser 861 logger.error dispersos, e o aviso de lote so disparava quando NENHUM PDF-alvo era gerado — bastava um dos 21 PDF passar na mesma passada para o alerta sumir. Tres mudancas: 1. As falhas sao agrupadas por MOTIVO e o motivo dominante grita. `873 falhas` nao diz nada; `873 de 873 falhas pelo MESMO motivo: OnlyOffice codigo -8` diz que o ambiente esta parado. Nao depende mais de zero gerados. 2. O -8 ganha o diagnostico certo. A leitura natural (URL ruim) manda consertar a variavel errada: -8 e erro de TOKEN. Com `ONLYOFFICE_JWT_ENABLED=False` e o servidor do OnlyOffice exigindo JWT, e exatamente esse o codigo. Provado em 22/08/2026 com POST direto ao ConvertService.ashx: URL publica respondendo 200, sem token, devolve -8 (download quebrado seria -4). 3. `--somente-novos`: gera o alvo AUSENTE e nunca retifica. Zerar assinatura em retificacao (§5.1) foi decidido para o ato isolado de retificar um texto — quem retifica sabe o que esta desfazendo. Numa passada sobre o acervo inteiro ninguem pediu isso, e apagar assinatura e irreversivel. A decisao acontece ANTES da conversao: adiar depois seria pagar o OnlyOffice para jogar fora. Junto vai `_origem_servida_confere`: antes de gastar a conversao de um DOCX, baixa a propria URL entregue ao OnlyOffice e compara o sha256 com o texto lido. SAPL_INTERNAL_URL apontando para OUTRA instancia gera um PDF-alvo que nao corresponde ao texto da materia — e como e o `hash_origem` que dispara a retificacao, o alvo defasado nunca mais seria regenerado. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>pull/3858/head
committed by
GitHub
2 changed files with 140 additions and 7 deletions
Loading…
Reference in new issue