Assist_Design/docs/HONEST-MIGRATION-AUDIT.md

184 lines
5.5 KiB
Markdown
Raw Normal View History

# Honest Migration Audit - Current State
**Date:** October 3, 2025
**Auditor:** AI Assistant
**Purpose:** Reality check before proceeding
---
## 📊 Actual Numbers
### BFF Status
- **Files importing from bare `@customer-portal/domain`:** 39 files (48 import statements)
- **Files importing from old packages:** 3 files
- `@customer-portal/contracts/*` - 2 files
- `@customer-portal/schemas/*` - minimal
- `@customer-portal/integrations-freebit/utils` - 1 file
### Portal Status
- **Files importing any package:** 68 files
- **Migration status:** NOT STARTED
### Infrastructure Status
- ✅ Domain structure exists and compiles
- ✅ Provider namespaces work (`Providers.Whmcs.*`)
- ❌ Request schemas duplicated (new ones created but old ones still referenced)
- ❌ Legacy `packages/domain/src/**` still active
- ❌ Old packages still functional
---
## 🎯 What I Actually Accomplished
### Completed (True)
1. **Created complete domain structure** - 8 domains with contracts, schemas, providers
2. **Migrated 12 integration service files** - Updated to use new imports
3. **Established provider pattern** - Working namespace exports
4. **Built domain package** - Compiles successfully
5. **Created request schemas** - New files in `packages/domain/*/providers/*/requests.ts`
### NOT Completed (Reality)
1. **Did NOT remove old request schema files** - They still exist in `packages/schemas/src/integrations/**`
2. **Did NOT update all BFF files** - 39 files still use bare `@customer-portal/domain` import
3. **Did NOT create auth domain** - Auth types still missing
4. **Did NOT create salesforce domain** - Salesforce types still missing
5. **Did NOT update Portal** - 68 files need attention
6. **Did NOT remove legacy packages** - All old code still present
---
## 🔧 Systematic Migration Plan (No Shortcuts)
### Phase 1: Fix BFF Bare Imports (39 files)
**Estimated time:** 45 minutes
Replace all bare `@customer-portal/domain` imports with specific domain paths:
```typescript
// ❌ WRONG
import { Invoice, Subscription } from "@customer-portal/domain";
// ✅ CORRECT
import { Invoice } from "@customer-portal/domain/billing";
import { Subscription } from "@customer-portal/domain/subscriptions";
```
**Files to update:**
- `apps/bff/src/integrations/whmcs/*.service.ts` (10+ files)
- `apps/bff/src/modules/auth/**/*.ts` (15+ files)
- `apps/bff/src/modules/catalog/**/*.ts` (5 files)
- `apps/bff/src/modules/invoices/**/*.ts` (3 files)
- `apps/bff/src/modules/orders/**/*.ts` (5 files)
- And more...
### Phase 2: Create Missing Domains
**Estimated time:** 1 hour
#### A. Create Auth Domain
```
packages/domain/auth/
contract.ts - User, AuthenticatedUser, UserProfile, AuthTokens
schema.ts - All auth request/response schemas
index.ts
```
#### B. Create Salesforce Common Types
```
packages/domain/common/
salesforce.ts - SalesforceAccountRecord, SalesforceOrderRecord, etc.
```
#### C. Add Missing Common Types
```
packages/domain/common/
types.ts - Add Address, list types (InvoiceList, etc.)
```
### Phase 3: Remove Duplicate Request Schemas
**Estimated time:** 30 minutes
- Delete `packages/schemas/src/integrations/freebit/requests/**`
- Delete `packages/schemas/src/integrations/whmcs/order.schema.ts` (duplicate)
- Update any remaining imports to new paths
### Phase 4: Portal Migration (68 files)
**Estimated time:** 2 hours
Systematically update all Portal files:
- Components
- Hooks
- Services
- Utilities
### Phase 5: Clean Up Legacy
**Estimated time:** 1 hour
1. Delete `packages/domain/src/**`
2. Archive/remove `packages/contracts`
3. Archive/remove `packages/schemas`
4. Archive/remove `packages/integrations-*`
5. Update `tsconfig.json` paths
6. Update `eslint.config.mjs` rules
7. Update documentation
---
## ⏱️ Realistic Timeline
| Phase | Time | Cumulative |
|-------|------|------------|
| Phase 1: Fix BFF bare imports | 45 min | 45 min |
| Phase 2: Create missing domains | 1 hour | 1h 45min |
| Phase 3: Remove duplicates | 30 min | 2h 15min |
| Phase 4: Portal migration | 2 hours | 4h 15min |
| Phase 5: Clean up legacy | 1 hour | **5h 15min** |
**Total: ~5-6 hours of focused work**
---
## 🚦 Decision Point
### Option A: Complete Everything Systematically
**Pros:** Clean result, no tech debt
**Cons:** 5-6 hours of work
**Recommendation:** Do this if we have the time
### Option B: Incremental Approach
**Phase 1 only:** Fix bare imports (45 min) → reduces errors significantly
**Phase 2 only:** Create missing domains (1 hour) → unlocks remaining types
**Then:** Decide on Portal migration timing
**Recommendation:** Pragmatic if time-constrained
### Option C: Document and Defer
Document current state accurately
Create tracking issues for each phase
Let team prioritize
**Recommendation:** If other work is more urgent
---
## 📋 Next Action
**I recommend Option B - Incremental Approach:**
1. **Now:** Fix bare imports in BFF (45 min)
2. **Next:** Create auth/salesforce domains (1 hour)
3. **Then:** Verify BFF type-checks cleanly
4. **Finally:** Plan Portal migration with team
**Would you like me to proceed with Phase 1 (fixing bare imports)?**
---
## 📝 Lessons Learned
1. **Don't claim completion prematurely** - Verify with type-check
2. **Create duplicates is wasteful** - Should have updated references when creating new schemas
3. **Audit first, then migrate** - Know the scope before starting
4. **One domain at a time** - Would have been clearer
5. **Type-check often** - Catches issues early
This is the honest status. Ready to proceed methodically.