cc0ba5347d
Wires the workflow event bus into the hot paths, AFTER each commit: - invoiceService.sendInvoice → invoice.sent (idempotent per invoice id, so overdue re-sends don't double-fire) - invoiceService.markPaid → invoice.paid, only on the transition into paid (transaction result captured so the emit runs post-commit, never rolling back a recorded payment) - quoteService.recordResponse / adminAcceptQuote / adminDeclineQuote → quote.accepted / quote.declined via a shared emitQuoteEvent helper that resolves the customer email for downstream send_email actions All emits are best-effort and fail closed when the workflows flag is off. Existing invoice/quote integration tests still green.