# Release — Sprint 17 **Data:** 2026-05-25 ## Versões | Projeto | Versão | VersionCode | |----------------|---------|-------------| | DoncMobile.App | 3.5.9 | 40 | | DoncMobile.API | 3.5.3 | — | | Admin | 3.3.4 | — | | Servico | 3.0.24 | — | | ApiV2 | 3.0.20 | — | | WebHubDonc | 2.4.8 | — | --- ## Release Notes ### DoncMobile.App — v3.5.9 - Corrigir envio de respostas de itens de execução (texto, sim/não, múltipla escolha) para o servidor - Sessão QR virtual gerada automaticamente para OS com produtos etiquetados - Suporte completo a CategoriaProdutoId nos produtos offline (sync API → App) - Scanner QR em tempo real com ZXing.Net.Maui (CameraBarcodeReaderView) - UX ExecucaoServico: progresso contextual no header por sessão/overview/global - UX ExecucaoServico: botão Voltar inteligente dentro de sessão - UX ExecucaoServico: header expandível removido; "Pular leitura" como botão visível ### DoncMobile.API — v3.5.3 - Sessão QR virtual: SessaoId nullable em SessaoValidacaoQr (sessaoId < 0 → NULL) - CategoriaProdutoId incluído na sincronização de produtos do pedido - Webhook MM Lojas (contrato 1074): retornar EstabelecimentoId e NomeEstabelecimento ### Admin — v3.3.4 - Botão Gerar QR Code com modal PNG/SVG na tela de cadastro de produto - Tela pedido/view: seção "Leitura de Etiquetas de Produtos" exibe validações QR incluindo SessaoId NULL - Melhorias na tela de login: mensagem de conta bloqueada, aviso de sessão expirada, "Manter Conectado" funcional - Autofill do browser corrigido no cadastro de administrador (autocomplete="new-password") ### Servico — v3.0.24 - SSW: status "Retirado" alterado para "Em Rota" na emissão do CT-e - SSW: mensagens formatadas em HTML com ocorrência, previsão e local destacados - SSW: DataCheckin e DataFimExecucao preenchidos corretamente nos eventos SSW - MMS (Sipolatti): integração completa — envio de pedidos e atualização de status via API Sensedia ### ApiV2 — v3.0.20 - Webhook: EstabelecimentoId e NomeEstabelecimento retornados para Cybelar (1073) e MM Lojas (1074) ### WebHubDonc — v2.4.8 - Sem alterações --- ## Guia de Testes — QA ### Ambientes | Projeto | Onde testar | |----------------|--------------------------------------| | Admin | admin.donc.com.br | | DoncMobile.API | apimobile.teste.donc.com.br | | DoncMobile.App | APK de teste (BaseUrl = teste) | | Servico | Worker em homolog | | ApiV2 | api.donc.com.br | --- ### DoncMobile.App - [ ] Criar OS com produto que tenha Etiqueta cadastrada → no app, sessão "Leitura de Etiquetas" aparece automaticamente no overview - [ ] Entrar na sessão → scanner abre imediatamente (câmera ao vivo, sem botão intermediário) - [ ] Escanear QR com código correto → confirmação em verde, avança para próximo produto - [ ] Escanear QR com código errado → registra divergência (Divergente = true), permite continuar - [ ] Pular leitura → botão com borda visível, funciona corretamente - [ ] Todos os produtos escaneados → sessão marcada como concluída no overview - [ ] Admin → pedido/view → seção "Leitura de Etiquetas de Produtos" exibe os registros - [ ] Executar item texto → valor chega ao servidor (verificar no banco) - [ ] Executar item sim/não → valor chega ao servidor - [ ] Executar item múltipla escolha → valor chega ao servidor - [ ] Header dentro de sessão mostra "Pergunta X de Y" (não posição global) - [ ] Header no SessaoOverview mostra "X de Y sessões" - [ ] Header fora de sessões mostra "X de Y" global - [ ] Botão Voltar no 1º item de uma sessão → vai ao SessaoOverview (não ao item anterior de outra sessão) - [ ] Botão Voltar no 2º item de uma sessão → vai ao 1º item da mesma sessão ### Admin - [ ] Cadastro de produto → campo Etiqueta → botão "Gerar QR Code" abre modal com QR preview - [ ] No modal: "Baixar PNG" gera arquivo PNG do QR Code - [ ] No modal: "Baixar SVG" gera arquivo SVG do QR Code - [ ] Pedido com leituras QR de sessão virtual → seção "Leitura de Etiquetas de Produtos" visível na tela do pedido - [ ] Login com conta bloqueada → mensagem específica de bloqueio (não "usuário ou senha inválido") - [ ] Logout / queda de sessão → redirecionamento para login com aviso "sessão expirada" - [ ] "Manter Conectado" marcado → usuário não é deslogado após fechar o browser - [ ] Editar administrador sem alterar senha → salvar sem erro ### Servico / SSW - [ ] Emissão de CT-e SSW → status do pedido muda para "Em Rota" (não "Retirado") - [ ] Mensagem SSW na tela do pedido exibe HTML formatado (ocorrência em negrito, previsão destacada) - [ ] DataCheckin preenchido após emissão CT-e - [ ] DataFimExecucao preenchido ao finalizar pedido SSW ### ApiV2 / Webhook - [ ] Webhook disparado para contrato 1074 (MM Lojas) → payload contém EstabelecimentoId e NomeEstabelecimento - [ ] Webhook disparado para contrato 1073 (Cybelar) → payload contém EstabelecimentoId e NomeEstabelecimento - [ ] Webhook para outros contratos → EstabelecimentoId e NomeEstabelecimento ausentes no JSON --- ## Observações de Deploy - **Migration obrigatória antes do deploy da DoncMobile.API:** Executar `migration-sessao-validacao-qr-nullable.sql` em Homolog e depois em Produção: ```sql ALTER TABLE SessaoValidacaoQr DROP CONSTRAINT FK_SessaoValidacaoQr_Sessoes; ALTER TABLE SessaoValidacaoQr ALTER COLUMN SessaoId INT NULL; ``` - **MMS (Sipolatti):** Integração implementada, aguarda credenciais da Tempo (implantação) para ativação em produção.