Skip to main content

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.