207 lines
6.6 KiB
Markdown
207 lines
6.6 KiB
Markdown
# Dead Code Removal - Salesforce Account Service
|
|
|
|
## Summary
|
|
|
|
Removed unused methods from `SalesforceAccountService` after auditing actual usage across the codebase. The service was incorrectly documented and contained methods that were never called.
|
|
|
|
---
|
|
|
|
## ❌ Dead Code Removed (Never Called)
|
|
|
|
### 1. `updateWhAccount()`
|
|
```typescript
|
|
async updateWhAccount(accountId: string, whAccountValue: string): Promise<void>
|
|
```
|
|
- **Lines Removed**: 26 lines
|
|
- **Supposed Use**: Update WH_Account__c field
|
|
- **Reality**: Never called anywhere in the codebase
|
|
- **Why It Existed**: Probably planned but never implemented in workflows
|
|
|
|
### 2. `upsert()`
|
|
```typescript
|
|
async upsert(accountData: AccountData): Promise<UpsertResult>
|
|
```
|
|
- **Lines Removed**: 30 lines
|
|
- **Supposed Use**: Create or update Salesforce accounts
|
|
- **Reality**: Never called (comment in salesforce.service.ts claimed it was used in signup, but that was false)
|
|
- **Why It Existed**: Speculative CRUD operation that was never needed
|
|
- **Business Context**: We don't create/upsert Salesforce accounts - they already exist and we only query them
|
|
|
|
### 3. `getById()`
|
|
```typescript
|
|
async getById(accountId: string): Promise<SalesforceAccountRecord | null>
|
|
```
|
|
- **Lines Removed**: 18 lines
|
|
- **Supposed Use**: Get account by ID
|
|
- **Reality**: Never called (wrapped by `getAccount()` in salesforce.service.ts which was also never called)
|
|
- **Why It Existed**: Generic CRUD operation
|
|
|
|
### 4. `update()`
|
|
```typescript
|
|
async update(accountId: string, updates: Partial<SalesforceAccountRecord>): Promise<void>
|
|
```
|
|
- **Lines Removed**: 13 lines
|
|
- **Supposed Use**: Generic update operation
|
|
- **Reality**: Never called
|
|
- **Why It Existed**: Generic CRUD operation
|
|
|
|
### 5. `validateId()` Private Helper
|
|
```typescript
|
|
private validateId(id: string): string
|
|
```
|
|
- **Lines Removed**: 7 lines
|
|
- **Why Removed**: Duplicate of `salesforceIdSchema.parse()` - we already validate IDs using Zod schemas
|
|
- **Pattern**: This was manual validation that we just cleaned up in the validation refactor!
|
|
|
|
---
|
|
|
|
## ✅ Methods Kept (Actually Used)
|
|
|
|
### 1. `findByCustomerNumber()`
|
|
**Used in**:
|
|
- `signup-workflow.service.ts` - Line 424
|
|
- `whmcs-link-workflow.service.ts` - Line 122
|
|
|
|
**Purpose**: Find Salesforce account by customer number (SF_Account_No__c field) during signup/linking
|
|
|
|
### 2. `getAccountDetails()`
|
|
**Used in**:
|
|
- `signup-workflow.service.ts` - Line 84
|
|
|
|
**Purpose**: Check if WH_Account__c field is populated (indicates already linked to WHMCS)
|
|
|
|
---
|
|
|
|
## 📊 Impact
|
|
|
|
### Code Reduction
|
|
| File | Before | After | Lines Removed |
|
|
|------|---------|--------|---------------|
|
|
| `salesforce-account.service.ts` | 176 lines | 88 lines | **88 lines (50%)** |
|
|
| `salesforce.service.ts` | 151 lines | 134 lines | **17 lines** |
|
|
| **Total** | | | **105 lines** |
|
|
|
|
### Methods Removed
|
|
- ❌ 3 unused public methods in `SalesforceAccountService`
|
|
- ❌ 1 unused generic method
|
|
- ❌ 1 duplicate validation helper
|
|
- ❌ 3 wrapper methods in `SalesforceService`
|
|
|
|
### Interfaces Removed
|
|
- ❌ `AccountData` interface (only used by dead `upsert()` method)
|
|
- ❌ `UpsertResult` interface (only used by dead `upsert()` method)
|
|
|
|
---
|
|
|
|
## 🎯 What Actually Happens with Salesforce Accounts
|
|
|
|
### Reality Check
|
|
**We don't create or modify Salesforce accounts in the customer portal!**
|
|
|
|
### Actual Operations:
|
|
1. **Query by Customer Number** - Find existing SF account
|
|
2. **Check Account Details** - Read WH_Account__c to see if already linked
|
|
3. **Check Internet Eligibility** - Done in `internet-catalog.service.ts`, queries `Internet_Eligibility__c` field
|
|
|
|
### What We Don't Do:
|
|
- ❌ Create Salesforce accounts (they exist in SF already)
|
|
- ❌ Update Salesforce account fields (read-only from portal perspective)
|
|
- ❌ Upsert accounts (no create/update operations)
|
|
- ❌ Generic CRUD operations on accounts
|
|
|
|
---
|
|
|
|
## 🔍 How Was This Missed?
|
|
|
|
### Documentation Was Wrong
|
|
File: `salesforce.service.ts` (Lines 17-21)
|
|
```typescript
|
|
/**
|
|
* Used Methods:
|
|
* - findAccountByCustomerNumber() - auth service (WHMCS linking) ✅ TRUE
|
|
* - upsertAccount() - auth service (signup) ❌ FALSE - never called!
|
|
* - getAccount() - users service (profile enhancement) ❌ FALSE - never called!
|
|
*/
|
|
```
|
|
|
|
### Validation Was Added to Dead Code
|
|
We just spent effort validating methods that were never called:
|
|
- Added `salesforceIdSchema` validation to `updateWhAccount()` ❌
|
|
- Added `requiredStringSchema` validation to `upsert()` ❌
|
|
- Added validation to `getById()` ❌
|
|
|
|
**Lesson**: Should audit usage BEFORE adding validation/improvements!
|
|
|
|
---
|
|
|
|
## ✅ Fixed Files
|
|
|
|
### 1. `apps/bff/src/integrations/salesforce/services/salesforce-account.service.ts`
|
|
- Removed 3 dead public methods
|
|
- Removed 2 unused private helpers
|
|
- Removed duplicate validation logic
|
|
- Added clear documentation about what's actually used
|
|
- **88 lines removed**
|
|
|
|
### 2. `apps/bff/src/integrations/salesforce/salesforce.service.ts`
|
|
- Removed 3 wrapper methods for dead code
|
|
- Updated documentation to reflect reality
|
|
- Removed unused type imports (`AccountData`, `UpsertResult`, `SalesforceAccountRecord`)
|
|
- **17 lines removed**
|
|
|
|
---
|
|
|
|
## 🚀 Benefits
|
|
|
|
### 1. **Clearer Intent**
|
|
- Service now only contains what's actually needed
|
|
- No confusion about which methods are used
|
|
- Documentation matches reality
|
|
|
|
### 2. **Less Maintenance**
|
|
- 105 fewer lines to maintain
|
|
- No dead validation logic
|
|
- Simpler service surface
|
|
|
|
### 3. **Better Security**
|
|
- Removed write operations that were never supposed to be used
|
|
- Clear read-only access pattern to Salesforce accounts
|
|
- Less attack surface
|
|
|
|
### 4. **Accurate Documentation**
|
|
- Comments now accurately describe what the service does
|
|
- Mentions Internet Eligibility checking happens elsewhere
|
|
- No misleading "used in X" comments
|
|
|
|
---
|
|
|
|
## 📝 Notes
|
|
|
|
### Internet Eligibility
|
|
The user mentioned checking "dwelling type or Internet Eligibility" - this happens in:
|
|
- **File**: `apps/bff/src/modules/catalog/services/internet-catalog.service.ts`
|
|
- **Field**: `Internet_Eligibility__c`
|
|
- **Purpose**: Filter available Internet plans based on user's location/eligibility
|
|
|
|
### WH_Account__c Field
|
|
This field links Salesforce accounts to WHMCS:
|
|
- Set in WHMCS or Salesforce (not in portal)
|
|
- Portal only reads it to check if account is already linked
|
|
- Used during signup to prevent duplicate links
|
|
|
|
---
|
|
|
|
## ✨ Conclusion
|
|
|
|
**We had 3 unused methods (60% of the service) with validation logic that was never executed!**
|
|
|
|
The cleanup:
|
|
- ✅ Removed 105 lines of dead code
|
|
- ✅ Fixed misleading documentation
|
|
- ✅ Clarified actual business logic
|
|
- ✅ Removed unnecessary write operations
|
|
- ✅ Simplified service to read-only operations
|
|
|
|
**The service now accurately reflects what the customer portal actually does with Salesforce accounts: read-only queries.**
|
|
|