ADR-057 — Soft delete and concurrency

Architecture decision record — status: Accepted.

Source: docs/adr/ADR-057-soft-delete-concurrency.md

ADR-057: Soft delete and concurrency

Estado

Accepted — 2026-08-23

Decisión

Soft delete (deletedAt) en Customer, Invoice, Contact, Sequence, Template, User (desactivar). AuditLog y Message: no delete (ADR-034).

Listados default: deletedAt IS NULL. Unique de invoiceNumber / slug ignoran soft-deleted o usan unique parcial.

Concurrency: updatedAt + If-Unmodified-Since o version integer en Invoice y Promise al PATCH. Conflicto → 409 CONFLICT.

No hard delete en producción salvo job de retención (ADR-034) o request legal documentado.