Aller au contenu principal

Legacy /client Decommission Checklist

Goal

Retire the legacy token-based /client experience and /api/client-access/* endpoints.

Current implementation strategy is now a hard cut (no backward compatibility).

Current Status (2026-02-22)

  • Legacy /client routes have been removed from frontend/src/router.tsx.
  • Legacy frontend route/page tree has been removed (frontend/src/routes/client.routes.tsx, frontend/src/pages/client/**).
  • Legacy frontend client-access hooks/components used by /client have been removed.
  • Legacy backend public controller /api/client-access/* (backend/src/client-access/client-access.controller.ts) has been removed and is no longer exposed.
  • Modern authenticated client portal /portal/* is available and covers most document/session flows.
  • Proposal v2 public flow /proposal/:token is available for quote add-ons and acceptance.
  • CI guard now blocks new /client references outside allowlisted legacy files (.gitlab-ci.yml job guard:legacy-client-no-new-usage).

Scope Inventory (Legacy /client)

Frontend routes (frontend/src/routes/client.routes.tsx):

  • /client (dashboard/access landing)
  • /client/quotes, /client/quotes/:quoteId
  • /client/contracts, /client/contracts/:contractId
  • /client/invoices, /client/invoices/:invoiceId
  • /client/galleries
  • /client/profile
  • /client/sessions/:sessionId
  • /client/paypal/return/:clientToken
  • /client/paypal/cancel/:clientToken

Backend endpoints (legacy public token API):

  • /api/client-access/* in backend/src/client-access/client-access.controller.ts

Migration Strategy (hard cut)

Validate replacement paths:

  • Quotes/documents browsing -> /portal/documents and document detail routes
  • Sessions browsing -> /portal/sessions and session detail
  • Galleries -> /portal/galleries
  • Profile -> /portal/settings
  • Proposal/upsell quote selection -> /proposal/:token (Proposal v2)
  • Payments (PayPal return/cancel) -> confirm final portal/public replacement path before removal
  • Stop generating new legacy /client links where a replacement exists
  • Prefer:
    • /portal/* for authenticated client area
    • /proposal/:token for Proposal v2 quote add-on flows

Phase 3: Traffic Observation

  • Monitor remaining legacy /client and /api/client-access/* usage
  • Identify long-tail paths still hit in production (especially PayPal callbacks and contract signing flows)

Phase 4: Post-cut Cleanup (in progress)

Already removed:

  1. Legacy frontend route mount /client in frontend/src/router.tsx
  2. frontend/src/routes/client.routes.tsx
  3. frontend/src/pages/client/**
  4. frontend/src/components/layout/ClientLayout.tsx
  5. frontend/src/client/client-access/**
  6. frontend/src/components/client-access/**
  7. Legacy backend /api/client-access/* controller exposure

Exit Criteria (Full Removal)

  • No product feature depends on /client
  • No new links generated for /client
  • E2E coverage exists for replacement flows (/portal, /proposal)
  • Stakeholder sign-off (support/ops if external links may still circulate)

Notes

  • This checklist now documents a non-retrocompatible cut; external legacy links may fail.
  • Keep this checklist synchronized with docs/PROPOSAL_V2_UPSELLS_IMPLEMENTATION_PLAN.md and docs/ROADMAP.md.