Reguły automatyzacji oparte na zdarzeniach (receipt.created) z warunkami (integracja/kanał sprzedaży, AND logic) i akcjami (wyślij e-mail z 3 trybami odbiorcy: klient / firma / klient+firma). Trigger w ReceiptController po utworzeniu paragonu — błąd automatyzacji nie blokuje sukcesu paragonu. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
108 lines
3.3 KiB
Markdown
108 lines
3.3 KiB
Markdown
---
|
|
phase: 16-automated-tasks
|
|
plan: 02
|
|
subsystem: automation
|
|
tags: [automation, watcher, executor, trigger, email-sending]
|
|
|
|
requires:
|
|
- phase: 16-automated-tasks
|
|
provides: automation_rules/conditions/actions DB + AutomationRepository
|
|
provides:
|
|
- AutomationService (trigger + condition evaluation + action execution)
|
|
- ReceiptController trigger integration
|
|
- EmailSendingService recipient override support
|
|
affects: []
|
|
|
|
tech-stack:
|
|
added: []
|
|
patterns: [event-trigger-pattern, condition-evaluator, action-executor]
|
|
|
|
key-files:
|
|
created:
|
|
- src/Modules/Automation/AutomationService.php
|
|
modified:
|
|
- src/Modules/Accounting/ReceiptController.php
|
|
- src/Modules/Email/EmailSendingService.php
|
|
- routes/web.php
|
|
- DOCS/ARCHITECTURE.md
|
|
- DOCS/TECH_CHANGELOG.md
|
|
|
|
key-decisions:
|
|
- "Synchronous trigger (not queued) — simplicity over performance"
|
|
- "recipientEmailOverride as optional params — backward compatible"
|
|
- "try/catch around trigger — automation failure never blocks receipt"
|
|
|
|
patterns-established:
|
|
- "Event trigger pattern: Controller -> AutomationService::trigger(eventType, entityId)"
|
|
- "Condition evaluator: AND logic with type-specific evaluation methods"
|
|
|
|
duration: ~15min
|
|
completed: 2026-03-18
|
|
---
|
|
|
|
# Phase 16 Plan 02: Automation Watcher/Executor Summary
|
|
|
|
**AutomationService: trigger receipt.created -> ewaluacja warunkow (integration) -> wykonanie akcji (send_email z 3 trybami odbiorcy).**
|
|
|
|
## Performance
|
|
|
|
| Metric | Value |
|
|
|--------|-------|
|
|
| Duration | ~15min |
|
|
| Completed | 2026-03-18 |
|
|
| Tasks | 3 completed (2 auto + 1 checkpoint) |
|
|
| Files created | 1 |
|
|
| Files modified | 5 |
|
|
|
|
## Acceptance Criteria Results
|
|
|
|
| Criterion | Status | Notes |
|
|
|-----------|--------|-------|
|
|
| AC-1: Ewaluacja warunkow | Pass | AND logic, integration_id check |
|
|
| AC-2: Akcja send_email | Pass | EmailSendingService::send() z actorName |
|
|
| AC-3: Odbiorca respektuje config | Pass | client/company/client_and_company |
|
|
| AC-4: Trigger w ReceiptController | Pass | try/catch, nie blokuje paragonu |
|
|
| AC-5: Logowanie automatyzacji | Pass | activity_type automation_email_* |
|
|
|
|
## Accomplishments
|
|
|
|
- AutomationService z pelnym flow: trigger -> evaluate -> execute
|
|
- Bezpieczna integracja w ReceiptController (try/catch)
|
|
- EmailSendingService rozszerzony o recipient override (backward compatible)
|
|
- 3 tryby odbiorcy e-mail: client, company, client_and_company
|
|
|
|
## Files Created/Modified
|
|
|
|
| File | Change | Purpose |
|
|
|------|--------|---------|
|
|
| `src/Modules/Automation/AutomationService.php` | Created | Watcher/executor |
|
|
| `src/Modules/Accounting/ReceiptController.php` | Modified | Trigger po zapisie paragonu |
|
|
| `src/Modules/Email/EmailSendingService.php` | Modified | recipientEmailOverride params |
|
|
| `routes/web.php` | Modified | DI wiring AutomationService |
|
|
| `DOCS/ARCHITECTURE.md` | Modified | Opis AutomationService + flow |
|
|
| `DOCS/TECH_CHANGELOG.md` | Modified | Wpis Phase 16 Plan 02 |
|
|
|
|
## Deviations from Plan
|
|
|
|
None — plan executed exactly as written.
|
|
|
|
## Issues Encountered
|
|
|
|
None.
|
|
|
|
## Next Phase Readiness
|
|
|
|
**Ready:**
|
|
- Phase 16 complete — pelny modul automatyzacji (CRUD + watcher/executor)
|
|
- Rozszerzalny: nowe typy zdarzen/warunkow/akcji = dodanie do whitelists + evaluator/handler
|
|
|
|
**Concerns:**
|
|
- Brak
|
|
|
|
**Blockers:**
|
|
- None
|
|
|
|
---
|
|
*Phase: 16-automated-tasks, Plan: 02*
|
|
*Completed: 2026-03-18*
|