Assist_Design/docs/_archive/planning/PUBLIC-CATALOG-TASKS.md
barsa 4573b94484 Enhance WHMCS Integration and Add Internet Cancellation Features
- Introduced WhmcsAccountDiscoveryService to streamline client account discovery processes.
- Expanded WhmcsCacheService to include caching for subscription invoices and client email mappings, improving data retrieval efficiency.
- Updated WhmcsClientService to utilize caching for client ID lookups by email, enhancing performance.
- Implemented new internet cancellation features in SubscriptionsController, allowing users to preview and submit cancellation requests for internet services.
- Added validation schemas for internet cancellation requests, ensuring data integrity and user guidance during the cancellation process.
- Refactored various components and services to integrate new cancellation functionalities, improving user experience and operational flow.
2025-12-23 15:19:20 +09:00

26 KiB

Public Catalog & Unified Checkout - Task Checklist

Related: See PUBLIC-CATALOG-UNIFIED-CHECKOUT.md for full design document.

Implementation Notes (Current Codebase)

  • Public catalog routes are implemented under /shop (directory: apps/portal/src/app/(public)/(catalog)/shop).
  • Unified checkout is implemented under /order (directory: apps/portal/src/app/(public)/order).

Quick Reference

  • Total Effort: ~7 weeks
  • Priority: P0 (Critical), P1 (Important), P2 (Nice to have)
  • Status Legend: Todo, 🟡 In Progress, Done, Blocked
  • Branch: Homepage

Current Progress

✅ Phase 0 (SF Permissions) → Phase 1 → Phase 2 → Phase 3 → Phase 4 → Phase 5 → Launch
                                 ↑
                           START HERE

Critical Path

Phase 4 (Salesforce Account Creation) remains the most complex phase, but SF permissions are now verified


Phase 0: Preparation (4 days)

# Task Priority Effort Status Notes
0.1 Create feature branch feature/homepage P0 1h Done - on Homepage branch
0.2 Document current catalog user flow P0 2h Screenshots + notes
0.3 Document current checkout user flow P0 2h Screenshots + notes
0.4 Set up feature flags infrastructure P0 4h Use env vars initially
0.5 Verify SF integration user permissions P0 3h Done - permissions verified
0.6 Add "Portal Checkout" to SF picklist P0 1h Done - picklist updated
0.7 Create test Salesforce sandbox accounts P0 2h For testing order flow
0.8 Create test WHMCS accounts P0 2h For payment testing
0.9 Document rollback/cleanup procedures P0 2h For orphaned records

Salesforce Permissions - VERIFIED

The following permissions have been confirmed:

Object Permission Status
Account CREATE Verified
Account UPDATE Verified
Contact CREATE Verified
SF_Account_No__c READ/WRITE Verified
WH_Account__c READ/WRITE Verified
Portal_Status__c WRITE Verified
Portal_Registration_Source__c WRITE Verified (picklist updated)

Phase 1: Public Catalog (5 days)

1.1 Frontend - Routes & Layout

# Task Priority Effort Status Notes
1.1.1 Create CatalogLayout component P0 4h Hybrid header (public + auth)
1.1.2 Create CatalogHeader component P0 2h Logo, nav, sign-in button
1.1.3 Create (public)/catalog/layout.tsx P0 1h Use CatalogLayout
1.1.4 Create (public)/catalog/page.tsx P0 2h Copy from authenticated
1.1.5 Create (public)/catalog/internet/page.tsx P0 2h Copy from authenticated
1.1.6 Create (public)/catalog/internet/configure/page.tsx P0 2h Copy from authenticated
1.1.7 Create (public)/catalog/sim/page.tsx P0 2h Copy from authenticated
1.1.8 Create (public)/catalog/sim/configure/page.tsx P0 2h Copy from authenticated
1.1.9 Create (public)/catalog/vpn/page.tsx P0 1h Copy from authenticated
1.1.10 Update internal links in catalog components P0 2h Ensure relative paths work

1.2 Backend - Public API

# Task Priority Effort Status Notes
1.2.1 Add @Public() to CatalogController P0 0.5h catalog.controller.ts
1.2.2 Update catalog services to handle null userId P0 1h Defensive coding
1.2.3 Add rate limiting to public catalog endpoints P0 1h Prevent abuse
1.2.4 Test catalog API without auth token P0 1h Manual + automated

1.3 Integration

# Task Priority Effort Status Notes
1.3.1 Update catalogService to work without auth P0 1h Frontend service
1.3.2 Test full catalog flow without login P0 2h All product types
1.3.3 Add "Proceed to Checkout" CTA P0 2h Redirects to /checkout

Phase 2: Checkout Store (3 days)

# Task Priority Effort Status Notes
2.1 Define CartItem TypeScript interface P0 1h In domain package
2.2 Define GuestInfo TypeScript interface P0 1h In domain package
2.3 Create checkout.store.ts with Zustand P0 2h With persist middleware
2.4 Implement cart item serialization P0 2h Handle complex objects
2.5 Implement cart validation utilities P0 2h Zod schemas
2.6 Create useCartRecovery hook P1 2h Detect stale carts
2.7 Write unit tests for checkout store P0 4h Full coverage
2.8 Test localStorage persistence P0 1h Refresh, close browser

Phase 3: Unified Checkout UI (8 days)

3.1 Checkout Shell

# Task Priority Effort Status Notes
3.1.1 Create (public)/checkout/page.tsx P0 1h Shell page
3.1.2 Create CheckoutLayout component P0 2h Minimal header
3.1.3 Create CheckoutProgress component P0 2h Step indicator
3.1.4 Create CheckoutWizard component P0 3h Step management
3.1.5 Create OrderSummaryCard component P0 2h Sidebar summary
3.1.6 Create EmptyCartRedirect component P0 1h Handle no cart

3.2 Account Step

# Task Priority Effort Status Notes
3.2.1 Create AccountStep component P0 3h Parent component
3.2.2 Create GuestInfoForm component P0 3h New customer form
3.2.3 Create SignInForm embedded variant P0 2h Reuse existing
3.2.4 Implement mode switching (new/signin) P0 1h Toggle between forms
3.2.5 Add form validation P0 2h Zod + useZodForm

3.3 Address Step

# Task Priority Effort Status Notes
3.3.1 Create AddressStep component P0 2h Wrapper
3.3.2 Integrate existing AddressForm P0 2h Reuse component
3.3.3 Add postal code auto-fill (JP) P1 3h External API
3.3.4 Add address validation P0 2h Required fields

3.4 Payment Step

# Task Priority Effort Status Notes
3.4.1 Create PaymentStep component P0 3h Main component
3.4.2 Implement WHMCS SSO link opening P0 2h New tab
3.4.3 Create usePaymentPolling hook P0 2h Poll for method
3.4.4 Add focus listener for return detection P0 1h Window focus
3.4.5 Create PaymentMethodDisplay component P0 1h Show added card
3.4.6 Add loading/waiting states P0 1h UX polish

3.5 Review Step

# Task Priority Effort Status Notes
3.5.1 Create ReviewStep component P0 3h Summary view
3.5.2 Create OrderItemsReview component P0 2h Cart items
3.5.3 Create AddressReview component P0 1h Show address
3.5.4 Create PaymentReview component P0 1h Show payment
3.5.5 Add terms acceptance checkbox P0 0.5h Required
3.5.6 Create submit order handler P0 2h API call
3.5.7 Add loading state during submission P0 1h UX

3.6 Confirmation

# Task Priority Effort Status Notes
3.6.1 Create (public)/checkout/complete/page.tsx P0 2h Success page
3.6.2 Create OrderConfirmation component P0 2h Order details
3.6.3 Add "Go to Dashboard" CTA P0 0.5h Navigation
3.6.4 Clear checkout store on completion P0 0.5h Cleanup

Phase 4: Backend - Checkout Registration (7 days)

CRITICAL: Salesforce Account creation is SYNCHRONOUS and REQUIRED. Every new customer MUST have a Salesforce Account for business tracking.

4.1 Domain Schema Changes

# Task Priority Effort Status Notes
4.1.1 Make sfNumber optional in signup schema P0 1h packages/domain/auth
4.1.2 Create checkoutRegisterSchema P0 1h New schema
4.1.3 Create checkoutSubmitSchema P0 1h Order from cart
4.1.4 Create CreateSalesforceAccountRequest type P0 0.5h SF Account payload
4.1.5 Create CreateSalesforceContactRequest type P0 0.5h SF Contact payload
4.1.6 Update type exports P0 0.5h Index files
4.1.7 Build domain package P0 0.5h Verify compilation

4.2 Salesforce Account Service Updates

# Task Priority Effort Status Notes
4.2.1 Add createAccount() method P0 3h Creates SF Account
4.2.2 Add createContact() method P0 2h Creates SF Contact
4.2.3 Add generateAccountNumber() method P0 2h Auto-gen PNNNNNNN
4.2.4 Add findByEmail() method P0 1h Check for duplicates
4.2.5 Test SF Account creation in sandbox P0 2h Verify permissions
4.2.6 Test SF Contact creation in sandbox P0 1h Verify link to Account
4.2.7 Verify WH_Account__c update works P0 1h Link SF → WHMCS

4.3 Checkout Service

# Task Priority Effort Status Notes
4.3.1 Create CheckoutService class P0 1h Business logic
4.3.2 Implement registerForCheckout() - Step 1 P0 1h Create SF Account
4.3.3 Implement registerForCheckout() - Step 2 P0 1h Create SF Contact
4.3.4 Implement registerForCheckout() - Step 3 P0 1h Create WHMCS Client
4.3.5 Implement registerForCheckout() - Step 4 P0 0.5h Link SF to WHMCS
4.3.6 Implement registerForCheckout() - Step 5 P0 1h Create Portal User
4.3.7 Implement registerForCheckout() - Step 6 P0 0.5h Create ID Mapping
4.3.8 Implement registerForCheckout() - Step 7 P0 0.5h Generate tokens
4.3.9 Implement rollbackRegistration() method P0 2h Compensating txns
4.3.10 Implement getPaymentStatus() method P0 1h Check WHMCS
4.3.11 Add comprehensive logging P0 1h Debug each step

4.4 Checkout Controller

# Task Priority Effort Status Notes
4.4.1 Create CheckoutController class P0 1h New controller
4.4.2 Add POST /checkout/register endpoint P0 1h Public
4.4.3 Add GET /checkout/payment-status endpoint P0 0.5h Authenticated
4.4.4 Add POST /checkout/submit endpoint P0 0.5h Authenticated
4.4.5 Add rate limiting (5/min) P0 0.5h Prevent abuse
4.4.6 Create CheckoutModule P0 0.5h Nest module
4.4.7 Register in AppModule P0 0.5h Wire up

4.5 Testing

# Task Priority Effort Status Notes
4.5.1 Unit test: SF Account creation P0 1h Mock SF API
4.5.2 Unit test: SF Contact creation P0 1h Mock SF API
4.5.3 Unit test: Account number generation P0 1h Sequence logic
4.5.4 Unit test: Full registration flow P0 2h Happy path
4.5.5 Unit test: Rollback scenarios P0 2h Failure at each step
4.5.6 Integration test: SF sandbox P0 2h Real SF calls
4.5.7 Integration test: Full flow P0 2h SF + WHMCS + Portal

Phase 5: Integration Testing (5 days)

# Task Priority Effort Status Notes
5.1 Wire up checkout UI to register endpoint P0 2h API integration
5.2 Implement auto-login after registration P0 2h Token handling
5.3 Wire up order submission P0 2h API integration
5.4 E2E test: New customer full flow P0 4h Playwright
5.5 E2E test: Existing customer flow P0 2h Sign-in path
5.6 E2E test: Cart recovery P1 2h Abandon + resume
5.7 E2E test: Error scenarios P0 3h Network, validation
5.8 Performance test checkout P1 2h Load testing
5.9 Security review P0 4h Auth, CSRF, etc.
5.10 Fix bugs from testing P0 8h Buffer time

Phase 6: Public Support (3 days)

# Task Priority Effort Status Notes
6.1 Create (public)/support/page.tsx P1 2h FAQ landing
6.2 Create PublicSupportView component P1 3h Content
6.3 Create (public)/support/contact/page.tsx P1 1h Form page
6.4 Create PublicContactForm component P1 3h Form UI
6.5 Create publicContactSchema P1 0.5h Validation
6.6 Add POST /support/contact endpoint P1 2h Public API
6.7 Implement Salesforce Lead creation P1 3h Integration
6.8 Add rate limiting to contact endpoint P1 0.5h Prevent spam
6.9 Test public contact flow P1 1h Full flow

Phase 7: Polish & Launch (4 days)

7.1 Error Handling

# Task Priority Effort Status Notes
7.1.1 Review all error messages P0 2h User-friendly
7.1.2 Add error boundaries P0 1h React boundaries
7.1.3 Add retry mechanisms P1 2h Network errors
7.1.4 Add fallback UI states P0 2h Graceful degradation

7.2 UX Polish

# Task Priority Effort Status Notes
7.2.1 Add loading skeletons P0 2h All async states
7.2.2 Add transition animations P2 2h Step transitions
7.2.3 Mobile responsive testing P0 2h All breakpoints
7.2.4 Accessibility audit P1 2h Screen reader, keyboard

7.3 Analytics & Monitoring

# Task Priority Effort Status Notes
7.3.1 Add funnel tracking events P1 2h Google Analytics
7.3.2 Add error tracking P1 1h Sentry or similar
7.3.3 Create conversion dashboard P1 2h Metrics

7.4 Documentation

# Task Priority Effort Status Notes
7.4.1 Update STRUCTURE.md P1 1h New routes
7.4.2 Update catalog-and-checkout.md P1 2h New flow
7.4.3 Create feature announcement P1 1h For users

7.5 Launch Prep

# Task Priority Effort Status Notes
7.5.1 Configure feature flags for prod P0 1h Gradual rollout
7.5.2 Update production env vars P0 0.5h If needed
7.5.3 Create rollback procedure P0 1h Document steps
7.5.4 Prepare monitoring alerts P0 1h Error rate, etc.
7.5.5 Schedule launch window P0 0.5h With team

Definition of Done

Each task is considered Done when:

  • Code is written and follows project conventions
  • Unit tests pass (if applicable)
  • Code is reviewed and approved
  • Feature works in staging environment
  • No TypeScript errors
  • No ESLint warnings
  • Responsive design verified (if UI)

Dependencies Graph

Phase 0 ✅ (SF Permissions verified, branch created)
    │
    ↓
Phase 1 ──→ Phase 2 ──→ Phase 3
                            │
                            ↓
                        Phase 4 (SF Account Creation)
                            │
                            ↓
                        Phase 5 (Integration Testing)
                            │
                            ├──────────┬──────────┐
                            ↓          │          ↓
                        Phase 6        │      Phase 7
                            │          │          │
                            └──────────┴──────────┘
                                       ↓
                                   LAUNCH

Phase Dependencies Detail

Phase Depends On Blocks
Phase 0 - All phases
Phase 1 Phase 0 Phase 3 (checkout needs catalog)
Phase 2 Phase 0 Phase 3 (checkout needs cart)
Phase 3 Phase 1, 2 Phase 5
Phase 4 Phase 0 (SF perms) Phase 5
Phase 5 Phase 3, 4 Phase 7
Phase 6 Phase 0 Launch
Phase 7 Phase 5 Launch

Risk Register

Risk Likelihood Impact Mitigation Status
SF Account creation fails Medium Critical Retry logic, clear errors, monitoring Open
SF permission issues Medium Critical Verify in Phase 0 Mitigated
Partial registration (orphaned records) Medium High Rollback logic, cleanup procedures Open
SF API rate limits Low High Monitor usage, batch if needed Open
WHMCS SSO reliability Medium High Add retry logic, clear error messages Open
Performance regression Low Medium Load test before launch Open
Security vulnerability Low Critical Security review, pen test Open
Duplicate SF Accounts created Low Medium Check by email before creating Open
User confusion with new flow Medium Low Clear UX, help text Open

Salesforce-Specific Risks

Risk Mitigation Status
Integration user lacks CREATE on Account Test in Phase 0 Verified
Required fields missing in SF org Document all fields, validate payload Open
Customer number collision Use SF auto-number or query for max Open
SF sandbox differs from production Test in production-like sandbox Open
SF API timeout during registration Add timeout handling, retry logic Open

Contacts

Role Name Responsibility
Tech Lead TBD Architecture decisions
Frontend Dev TBD UI implementation
Backend Dev TBD API implementation
QA TBD Testing
Product TBD Requirements, acceptance

Changelog

Date Change Author
2024-12-17 Initial task list created -