feat(121+122): smsplanet conversation, notifications, default footer
Phase 121 — SMSPLANET Conversation + Notifications:
- migration 20260512_000110 adds smsplanet conversation + notifications tables
- src/Modules/Sms (SmsConversationService, SmsMessageRepository, SmsplanetWebhookController)
- src/Modules/Notifications (Repository, Controller, ApiController)
- order SMS tab, notification center, sender mode, inbound webhook
- public notifications.js + layouts/app.php integration
Phase 122 — SMSPLANET Default SMS Footer:
- migration 20260512_000111 adds smsplanet_integration_settings.default_footer
- footer appended to test SMS and order SMS, validated against 918 char limit
- settings textarea + compact order SMS note when footer configured
Bundled (could not split per-phase without hunk staging):
- routes/web.php (also carries Phase 118 fakturownia redirects)
- DOCS/{ARCHITECTURE,DB_SCHEMA,TECH_CHANGELOG}.md (118 + 121 + 122 entries)
- .paul/codebase/{architecture,db_schema,tech_changelog}.md (118 + 121 + 122)
- .paul/STATE.md, ROADMAP.md, changelog/2026-05-12.md (UNIFY closure)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
---
|
||||
phase: 122-smsplanet-default-sms-footer
|
||||
plan: 01
|
||||
status: applied
|
||||
applied_at: 2026-05-12 21:25:00
|
||||
---
|
||||
|
||||
# APPLY Summary - Phase 122 Plan 01
|
||||
|
||||
## Tasks Completed
|
||||
|
||||
- Task 1: Persist SMSPLANET default footer - PASS
|
||||
- Task 2: Apply footer to every outbound SMSPLANET send - PASS
|
||||
- Task 3: Add footer UI and rebuild styles - PASS
|
||||
|
||||
## Implemented
|
||||
|
||||
- Added `database/migrations/20260512_000111_smsplanet_default_footer.sql` with idempotent `information_schema.COLUMNS` guard for `smsplanet_integration_settings.default_footer`.
|
||||
- Extended `SmsplanetIntegrationRepository` to expose, validate, normalize, persist, and return `default_footer`.
|
||||
- Extended SMSPLANET settings save/test flow so test SMS uses final body with footer and validates the final body against 918 characters.
|
||||
- Extended `SmsConversationService` so order SMS uses final body with footer, stores final body in `sms_messages.body`, and rejects over-limit final body before API call.
|
||||
- Added SMSPLANET settings textarea and compact order SMS note when a footer is configured.
|
||||
- Updated `DOCS/DB_SCHEMA.md`, `DOCS/ARCHITECTURE.md`, `DOCS/TECH_CHANGELOG.md`, and PAUL codebase docs.
|
||||
|
||||
## Verification
|
||||
|
||||
- `C:\xampp\php\php.exe -l src/Modules/Settings/SmsplanetIntegrationRepository.php` - PASS
|
||||
- `C:\xampp\php\php.exe -l src/Modules/Settings/SmsplanetIntegrationController.php` - PASS
|
||||
- `C:\xampp\php\php.exe -l src/Modules/Sms/SmsConversationService.php` - PASS
|
||||
- `C:\xampp\php\php.exe -l src/Modules/Orders/OrdersController.php` - PASS
|
||||
- `C:\xampp\php\php.exe -l resources/views/settings/smsplanet.php` - PASS
|
||||
- `C:\xampp\php\php.exe -l resources/views/orders/show.php` - PASS
|
||||
- `C:\xampp\php\php.exe -l resources/lang/pl.php` - PASS
|
||||
- `npm run build:css` - PASS
|
||||
- `C:\xampp\php\php.exe bin\migrate.php` with standard `DB_HOST=localhost` - FAIL, local MySQL refused connection.
|
||||
- Manual migration run with process-only `DB_HOST=DB_HOST_REMOTE` - PASS, `[ok] 20260512_000111_smsplanet_default_footer.sql`.
|
||||
- `information_schema.COLUMNS` check for `default_footer` - PASS (`TEXT`, nullable).
|
||||
- `sonar-scanner` - FAIL, CLI not available in PATH.
|
||||
|
||||
## Manual Gaps
|
||||
|
||||
- Real SMSPLANET test send with configured footer not executed in browser.
|
||||
- Order conversation SMS send with configured footer not executed in browser.
|
||||
- Empty-footer send path not manually exercised in browser.
|
||||
- Over-limit final body rejection reviewed in code but not manually triggered through UI.
|
||||
|
||||
## Deviations
|
||||
|
||||
- No functional deviation from plan.
|
||||
- SonarQube scan could not run because `sonar-scanner` is not installed or not in PATH.
|
||||
Reference in New Issue
Block a user