Idempotent provisioning, service soft-delete, Plans page redesign, doc updates
Part A: Fix duplicate Service creation on provisioning retry - All 4 provisioning services use Service::firstOrCreate() keyed on subscription_id+service_type to prevent duplicates on queue retries - HandleSubscriptionCreated sends notification before provisioning, no longer re-throws on failure - RetryProvisioningCommand simplified to reuse existing Service records Part B: Plans/Pricing page complete redesign - Service type tabs (VPS, Dedicated, Web Hosting, MySQL) - Billing cycle segmented toggle (monthly/quarterly/semi-annual/annual) - Feature icons per service type, Popular/Best Value badges - Stock indicators, effective monthly price calculations Part C: Admin service soft-delete/archive - Service model uses SoftDeletes trait - Admin can archive and restore services - Show archived toggle on services list - Migration adds deleted_at column Docs: Updated TASKS.md, CLAUDE.md, PROJECT_DEVELOPMENT.md, MEMORY.md - Phase 3 marked complete, test counts updated (252 passing) - SupportPal references replaced with standalone ticket system - Frontend design skill background rule added - Closed GitHub issues #3, #6, #7, #8, #9 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
22
TASKS.md
22
TASKS.md
@@ -61,7 +61,7 @@
|
||||
- [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 114 tests passing, build clean (Phase 1-5 + Frontend + Notifications)
|
||||
- [x] 252 tests passing, 1310 assertions (12 pre-existing VpsControllerTest failures)
|
||||
|
||||
## Notifications System ✅
|
||||
- [x] Create notification classes (PaymentSucceeded, PaymentFailed, SubscriptionCreated, SubscriptionCancelled, ServiceProvisioned, InvoiceGenerated)
|
||||
@@ -72,7 +72,7 @@
|
||||
- [x] FlashMessages supports info alerts
|
||||
- [x] Inertia shared data includes impersonation state
|
||||
|
||||
## Phase 3: Provisioning Automation
|
||||
## Phase 3: Provisioning Automation ✅
|
||||
- [x] Create `ProvisioningServiceInterface` abstraction
|
||||
- [x] Build VirtFusion provisioning service:
|
||||
- [x] Create VPS via API
|
||||
@@ -99,6 +99,8 @@
|
||||
- [x] Build provisioning failure handling and retry logic
|
||||
- [x] Send credentials email on successful provisioning
|
||||
- [x] Log all provisioning actions to `provisioning_logs` table
|
||||
- [x] Idempotent provisioning (Service::firstOrCreate to prevent duplicates on retry)
|
||||
- [x] Provisioning retry command (provisioning:retry scheduled every 5 minutes)
|
||||
|
||||
## Support Ticket System (Standalone) ✅
|
||||
- [x] TicketReply model with relationships
|
||||
@@ -114,7 +116,7 @@
|
||||
- [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)
|
||||
- [x] 42 Pest tests for tickets (252 total, 1310 assertions)
|
||||
|
||||
## Phase 4: Customer Dashboard (account.ezscale.cloud)
|
||||
- [x] Build service overview dashboard:
|
||||
@@ -166,20 +168,21 @@
|
||||
- [x] Terminate service
|
||||
- [ ] Modify service (change plan, extend expiry)
|
||||
- [x] View provisioning logs
|
||||
- [x] Archive/restore services (soft-delete with SoftDeletes trait)
|
||||
- [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
|
||||
- [ ] Edit invoice (before sending)
|
||||
- [x] Create manual invoice
|
||||
- [x] Edit invoice (before sending)
|
||||
- [x] Void/refund invoice
|
||||
- [ ] Resend invoice email
|
||||
- [x] Resend invoice email
|
||||
- [x] Coupon management:
|
||||
- [x] Create coupon (percentage, fixed, applies to plans)
|
||||
- [x] Edit coupon details
|
||||
- [ ] View redemption history
|
||||
- [x] View redemption history
|
||||
- [x] Deactivate/delete coupon
|
||||
- [x] Plan management:
|
||||
- [x] Create new plan (set pricing, features, billing cycle)
|
||||
@@ -196,7 +199,7 @@
|
||||
- [x] Audit log viewer:
|
||||
- [x] Filter by user, action, date
|
||||
- [ ] View changes (before/after state)
|
||||
- [ ] Export logs
|
||||
- [x] Export logs
|
||||
|
||||
## Phase 6: Bandwidth Monitoring & Billing
|
||||
- [ ] Set up NetFlow/sFlow export from Juniper switches
|
||||
@@ -232,6 +235,9 @@
|
||||
- [x] Game server hosting page with supported games
|
||||
- [x] Pricing page:
|
||||
- [x] Interactive plan comparison table
|
||||
- [x] Billing cycle toggle (monthly/quarterly/semi-annual/annual)
|
||||
- [x] Service type tabs with per-type feature display
|
||||
- [x] Popular/Best Value badges on plans
|
||||
- [ ] Currency selector (USD, EUR, GBP)
|
||||
- [ ] Coupon code application
|
||||
- [ ] Add to cart / checkout flow
|
||||
|
||||
Reference in New Issue
Block a user