Grill Decisions — US 198113 | Job users delete
Data: 2026-07-09
Sessão: grill-with-docs sobre context/us.md + AS IS em coezzion-service-jobs
D1 — Escopo da rotina
Pergunta: Qual rotina completar com soft-delete em Sellers + remoção de UserOrganization?
Opções: só jobs / jobs+admin Delete / todos caminhos admin
Decisão: Só jobs DeleteUserAsync (fluxo LogoutOldAppVersionUsers).
Motivo: a US descreve DateDeleted e Status em Users sem Sellers/UO — match exato do jobs. Admin Delete só seta DateDeleted; UpdateUser Inactive já propaga Sellers via Store.
Residual: gap admin fora desta US (follow-up se necessário).
D2 — Schema de Sellers
Pergunta: Em quais schemas aplicar UPDATE em Sellers?
Decisão: Schema do job argument (request.Schema, hoje "arezzo").
Assinatura: DeleteUserAsync(int userId, string schema).
Motivo: alinhado ao Hangfire/JobScheduler; simples; consistente com o restante dos jobs multi-tenant.
D3 — Tecnologia e atomicidade
Pergunta: Atomicidade das 3 escritas; Dapper vs EF.
Pesquisa: context/dapper-connection-research.md
Decisão: Dapper multi-statement SQL + BeginTransaction em Write/CoreDb. Sem EF.
Motivo: delete já é Dapper; Users + UserOrganization + Sellers no mesmo CoreDB; dual EF context piora atomicidade.
Detalhe: validar schema antes de interpolar; uma connection/tx por user (handler paralelo DOP=3).
D4 — Dados legados
Pergunta: Users já inativados com Sellers/UO órfãos?
Decisão: Não limpar legados nesta US — só inativações futuras.
Residual: documentar gap; card/script futuro se produto exigir.
D5 — Idempotência
Decisão: WHERE "DateDeleted" IS NULL em Users e Sellers; DELETE em UserOrganization naturalmente idempotente (0 rows ok).
D6 — User sem Seller
Decisão: 0 rows atualizados em Sellers = sucesso (ex.: perfis sem registro de vendedor).
D7 — Reativação
Decisão: Fora de escopo da US.
D8 — LogoutUserEvent / SQS
Decisão: Manter envio de LogoutUserEvent após delete bem-sucedido (comportamento atual do handler).
D9 — Testes
Decisão: Checklist manual / SQL em staging.
Motivo: solution coezzion-service-jobs não possui projeto de testes automatizados.
Checklist em plano.md § Verification.