Files
orderPRO/.paul/changelog/2026-04-25.md
Jacek Pyziak d8daf61de6 feat(107-automation-email-send-once): idempotent send-once per order for email automation
Phase 107 complete:
- New table automation_email_once_deliveries with UNIQUE KEY (rule_id, action_id, order_id)
- AutomationEmailOnceRepository: wasSent() / markSent() with ON DUPLICATE KEY guard
- AutomationService: send_once_per_order flag — mark only on successful send
- Checkbox "Wyslij tylko raz dla tego zamowienia" in rule form (edit + new action JS)
- 2 unit tests added; 3/3 passing (49 assertions)

Milestone v3.1 Operational Enhancements: COMPLETE (2/2 phases)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-27 21:19:29 +02:00

1.1 KiB

2026-04-25

Co zrobiono

  • [Phase 107, Plan 01] Dodano mechanizm idempotentnej jednorazowej wysyłki e-mail dla akcji automatyzacji
  • Utworzono tabelę automation_email_once_deliveries z UNIQUE KEY (rule_id, action_id, order_id) i FK CASCADE
  • Dodano AutomationEmailOnceRepository z metodami wasSent() / markSent()
  • Zintegrowano guard idempotencji w AutomationService::handleSendEmail() — mark tylko po sukcesie
  • Dodano checkbox "Wyślij tylko raz dla tego zamówienia" w formularzu reguły (edycja + nowa akcja JS)
  • Dodano 2 testy jednostkowe: scenariusz send-once i multi-send; testy przechodzą (3/3, 49 assertions)

Zmienione pliki

  • database/migrations/20260425_000102_create_automation_email_once_deliveries_table.sql
  • src/Modules/Automation/AutomationEmailOnceRepository.php
  • src/Modules/Automation/AutomationService.php
  • src/Modules/Automation/AutomationController.php
  • resources/views/automation/form.php
  • public/assets/js/modules/automation-form.js
  • src/Modules/Cron/CronHandlerFactory.php
  • tests/Unit/AutomationServiceTest.php