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:
Claude Dev
2026-02-10 06:30:57 -05:00
parent bf4f5f97c0
commit 45d25d61ba
101 changed files with 13225 additions and 1888 deletions

View File

@@ -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