Phase 14 complete (2 plans):
- 14-01: CRUD szablonów, Quill.js editor, system zmiennych {{grupa.pole}}, podgląd, toggle
- 14-02: Select "Załącznik nr 1" z mapą ATTACHMENT_TYPES, kolumna w liście, migracja attachment_1
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
113 lines
4.0 KiB
Markdown
113 lines
4.0 KiB
Markdown
---
|
|
phase: 14-email-templates
|
|
plan: 02
|
|
subsystem: database, ui
|
|
tags: [email, templates, attachments, receipt]
|
|
|
|
requires:
|
|
- phase: 14-email-templates/14-01
|
|
provides: CRUD szablonów e-mail, Quill.js editor, system zmiennych
|
|
provides:
|
|
- Konfiguracja załącznika na poziomie szablonu (attachment_1)
|
|
- Mapa typów załączników ATTACHMENT_TYPES w kontrolerze
|
|
affects: [15-email-sending]
|
|
|
|
tech-stack:
|
|
added: []
|
|
patterns: [ATTACHMENT_TYPES const map for extensible attachment options]
|
|
|
|
key-files:
|
|
created:
|
|
- database/migrations/20260316_000001_add_attachment1_to_email_templates.sql
|
|
modified:
|
|
- src/Modules/Settings/EmailTemplateController.php
|
|
- src/Modules/Settings/EmailTemplateRepository.php
|
|
- resources/views/settings/email-templates.php
|
|
- DOCS/DB_SCHEMA.md
|
|
|
|
key-decisions:
|
|
- "ATTACHMENT_TYPES jako stała mapa w kontrolerze — rozszerzalność bez zmian DB/widoku"
|
|
- "attachment_1 VARCHAR(50) zamiast ENUM — elastyczność dodawania nowych typów"
|
|
|
|
patterns-established:
|
|
- "Centralna mapa typów załączników: dodanie nowego typu = 1 linia w ATTACHMENT_TYPES"
|
|
|
|
duration: ~15min
|
|
started: 2026-03-16
|
|
completed: 2026-03-16
|
|
---
|
|
|
|
# Phase 14 Plan 02: Załączniki w szablonach e-mail — Summary
|
|
|
|
**Select "Załącznik nr 1" w szablonach e-mail z opcją "Paragon", rozszerzalną mapą typów ATTACHMENT_TYPES, kolumną w liście i pełnym CRUD.**
|
|
|
|
## Performance
|
|
|
|
| Metric | Value |
|
|
|--------|-------|
|
|
| Duration | ~15min |
|
|
| Started | 2026-03-16 |
|
|
| Completed | 2026-03-16 |
|
|
| Tasks | 3 completed (2 auto + 1 checkpoint) |
|
|
| Files modified | 5 |
|
|
|
|
## Acceptance Criteria Results
|
|
|
|
| Criterion | Status | Notes |
|
|
|-----------|--------|-------|
|
|
| AC-1: Kolumna attachment_1 w DB | Pass | VARCHAR(50) DEFAULT NULL, zweryfikowane DESCRIBE |
|
|
| AC-2: Zapis i odczyt przez formularz | Pass | receipt zapisywane/odczytywane poprawnie |
|
|
| AC-3: Opcja "brak" czyści attachment_1 | Pass | Pusta wartość → NULL w DB |
|
|
| AC-4: Kolumna "Załącznik" w liście | Pass | "Paragon" / "—" wyświetlane poprawnie |
|
|
|
|
## Accomplishments
|
|
|
|
- Kolumna `attachment_1` w `email_templates` z migracją na serwerze
|
|
- Centralna mapa `ATTACHMENT_TYPES` w kontrolerze — dodanie nowego typu załącznika = 1 linia PHP
|
|
- Select w formularzu generowany dynamicznie z mapy (nie hardkodowany)
|
|
- Kolumna "Zalacznik" w liście szablonów z rozwiązywaniem label z mapy
|
|
- Walidacja po stronie serwera: tylko klucze z ATTACHMENT_TYPES akceptowane
|
|
|
|
## Files Created/Modified
|
|
|
|
| File | Change | Purpose |
|
|
|------|--------|---------|
|
|
| `database/migrations/20260316_000001_add_attachment1_to_email_templates.sql` | Created | Migracja: kolumna attachment_1 |
|
|
| `src/Modules/Settings/EmailTemplateController.php` | Modified | ATTACHMENT_TYPES const, walidacja, przekazanie do widoku |
|
|
| `src/Modules/Settings/EmailTemplateRepository.php` | Modified | attachment_1 w SELECT, INSERT, UPDATE |
|
|
| `resources/views/settings/email-templates.php` | Modified | Select w formularzu + kolumna w tabeli |
|
|
| `DOCS/DB_SCHEMA.md` | Modified | Opis kolumny attachment_1 |
|
|
|
|
## Decisions Made
|
|
|
|
| Decision | Rationale | Impact |
|
|
|----------|-----------|--------|
|
|
| ATTACHMENT_TYPES jako stała mapa | User request: w przyszłości inne typy niż paragon | Dodanie nowego typu = 1 linia w tablicy PHP |
|
|
| VARCHAR(50) zamiast ENUM | Nowe typy bez ALTER TABLE | Elastyczność kosztem minimalnej walidacji (robiona w PHP) |
|
|
| Walidacja przez array_key_exists | Tylko znane typy akceptowane | Bezpieczeństwo: nieznane wartości → NULL |
|
|
|
|
## Deviations from Plan
|
|
|
|
None — plan executed exactly as written.
|
|
|
|
## Issues Encountered
|
|
|
|
None.
|
|
|
|
## Next Phase Readiness
|
|
|
|
**Ready:**
|
|
- Faza 15 może odczytać `attachment_1` z szablonu (`listActive()` zawiera pole)
|
|
- Jeśli `attachment_1 === 'receipt'` → dołączyć PDF paragonu (dompdf już dostępny z fazy 11)
|
|
- Mapa ATTACHMENT_TYPES może być referencją dla logiki generowania załączników
|
|
|
|
**Concerns:**
|
|
- Brak — prosta konfiguracja, logika generowania w fazie 15
|
|
|
|
**Blockers:**
|
|
- None
|
|
|
|
---
|
|
*Phase: 14-email-templates, Plan: 02*
|
|
*Completed: 2026-03-16*
|