Temuulen Ankhbayar df017d520f fix: resolve SIM management modal, plan change, and voice feature issues
- Fix Tailwind v4 modal stacking bug by adding relative z-10 to modal
  content divs (CancellationFlow, ChangePlanModal, TopUpModal, SimActions)
- Add test mode for immediate plan changes (SIM_BILLING_TEST_MODE) instead
  of scheduling for 1st of next month
- Bypass rate limiter spacing/cancellation checks in test mode
- Hide voice feature toggles for data-only SIMs using hasVoice flag
- Guard BFF voice feature updates to reject early for data-only SIMs
- Fix Freebit retry logic to not retry business errors (e.g. resultCode 260)
- Add user-friendly error message for resultCode 260 (voice not active)
- Update plan change page text to reflect test mode behavior

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 14:53:07 +09:00
..
2025-08-22 17:02:49 +09:00

Portal Structure Overview

This app follows a feature-first architecture with a consolidated lib for shared utilities.

Structure:

src/
  app/           # Next.js App Router
  components/    # Design system (ui, layout, common)
  features/      # Feature modules (auth, billing, subscriptions, ...)
  lib/           # Core utils and services (api, query, env, utils, types)
  providers/     # App-wide providers (e.g., QueryProvider)
  styles/        # Global styles

Key changes:

  • Merged former core/ and shared/ into lib/.
  • Moved components/providers/query-provider.tsx to providers/query-provider.tsx.
  • Introduced path aliases: @/lib/*, @/providers/*.

Migration tips:

  • Prefer importing from @/lib/... going forward.
  • All @/shared/* or @/core/* imports have been removed; use @/lib/*.