Add standalone support ticket system with customer and admin interfaces

Replaces planned SupportPal integration with a built-in ticket system.
Customer side: create tickets, reply, close. Admin side: manage all
tickets with search/filters, staff replies, status updates. Includes
30 Pest tests (144 total, 775 assertions).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Claude Dev
2026-02-09 16:20:12 -05:00
parent 9603803928
commit 6f39c32270
23 changed files with 2343 additions and 76 deletions

View File

@@ -61,7 +61,16 @@
- [x] Create 9 marketing pages (Home, Products, VPS, Dedicated, Web, Game, Pricing, About, Contact)
- [x] Create navigation configs (account.ts, admin.ts, marketing.ts)
- [x] Set purple primary color (#7367F0) matching Vuexy demo
- [x] All 53 tests passing, build clean
- [x] All 114 tests passing, build clean (Phase 1-5 + Frontend + Notifications)
## Notifications System ✅
- [x] Create notification classes (PaymentSucceeded, PaymentFailed, SubscriptionCreated, SubscriptionCancelled, ServiceProvisioned, InvoiceGenerated)
- [x] Configure mail and database notification channels
- [x] Wire notifications to relevant events (PaymentSucceeded, PaymentFailed, SubscriptionCreated, SubscriptionCancelled, ServiceProvisioned, InvoiceGenerated)
- [x] Build NotificationBell component in Account and Admin layouts
- [x] Implement NotificationController (index, markAsRead, markAllAsRead)
- [x] FlashMessages supports info alerts
- [x] Inertia shared data includes impersonation state
## Phase 3: Provisioning Automation
- [x] Create `ProvisioningServiceInterface` abstraction
@@ -91,6 +100,22 @@
- [ ] Send credentials email on successful provisioning
- [x] Log all provisioning actions to `provisioning_logs` table
## Support Ticket System (Standalone) ✅
- [x] TicketReply model with relationships
- [x] Updated SupportTicket model with replies() relationship and department field
- [x] Migration: ticket_replies table + department column on support_tickets
- [x] Customer TicketController (index, create, store, show, reply, close)
- [x] Admin TicketController (index with filters, show, reply, updateStatus)
- [x] SupportTicketFactory with open/closed/urgent states
- [x] TicketReplyFactory with staffReply state
- [x] Customer Vue pages: Tickets/Index, Tickets/Create, Tickets/Show
- [x] Admin Vue pages: Admin/Tickets/Index, Admin/Tickets/Show
- [x] Ticket status/priority color resolvers
- [x] TypeScript interfaces for SupportTicket and TicketReply
- [x] Navigation items for both account and admin sidebars
- [x] Routes for both account and admin subdomains
- [x] 30 Pest tests (144 total, 775 assertions)
## Phase 4: Customer Dashboard (account.ezscale.cloud)
- [x] Build service overview dashboard:
- [x] Active services list with status indicators
@@ -109,7 +134,7 @@
- [ ] Payment history
- [ ] Manage payment methods (add/remove cards, set default)
- [ ] Upcoming renewals
- [ ] Plan upgrade/downgrade flow (self-service with proration)
- [x] Plan upgrade/downgrade flow (self-service with proration)
- [ ] Subscription cancellation flow (with optional survey)
- [x] Profile and account settings:
- [x] Contact information
@@ -136,7 +161,7 @@
- [x] Customer list (searchable, filterable)
- [x] Customer detail view (profile, services, billing history, notes)
- [ ] Edit customer information
- [ ] Impersonate customer (with audit logging)
- [x] Impersonate customer (with audit logging)
- [ ] Add admin notes to customer account
- [ ] View customer audit log
- [x] Service management:
@@ -146,10 +171,10 @@
- [x] Terminate service
- [ ] Modify service (change plan, extend expiry)
- [x] View provisioning logs
- [ ] Order management:
- [ ] Pending orders list
- [ ] Approve/reject orders (for semi-automated provisioning)
- [ ] View order details
- [x] Order management:
- [x] Pending orders list
- [x] Approve/reject orders (for semi-automated provisioning)
- [x] View order details
- [x] Invoice management:
- [x] All invoices list (filter by status, date, customer)
- [ ] Create manual invoice
@@ -241,7 +266,7 @@
- [ ] Coupon code application
- [ ] Add to cart / checkout flow
- [x] About page
- [x] Contact page
- [x] Contact page with form submission backend
- [ ] Blog/news section (optional, or use WordPress?)
- [ ] Knowledge base / FAQ:
- [ ] Getting started guides
@@ -253,6 +278,7 @@
- [x] Privacy Policy
- [x] Acceptable Use Policy
- [x] SLA (Service Level Agreement)
- [x] Footer links to legal pages
- [ ] Signup flow:
- [ ] Plan selection
- [ ] Account creation