Assist_Design/docs/_archive/refactoring/REFACTORING_FINDINGS.md

126 lines
3.4 KiB
Markdown
Raw Normal View History

# Codebase Audit - Redundancies and Inconsistencies
## 🔍 Findings
### 1. **Duplicate Address Type Aliases** ⚠️
**Location:** `packages/domain/auth/contract.ts` and `packages/domain/customer/contract.ts`
Both files export `Address` as an alias for `CustomerAddress`:
```typescript
// customer/contract.ts
export type Address = CustomerAddress;
// auth/contract.ts
export type Address = CustomerAddress;
```
**Issue:** Redundant alias in auth domain
**Fix:** Remove from auth/contract.ts, import from customer domain
---
### 2. **Inconsistent Error Handling in UsersService** ⚠️
**Location:** `apps/bff/src/modules/users/users.service.ts`
**Issues:**
- Some methods throw generic `Error()` instead of NestJS exceptions
- Inconsistent error messages
- Some errors expose technical details
**Examples:**
```typescript
// ❌ Generic Error (lines 68, 84, 98, 119, 172, 194, 218, 469)
throw new Error("Failed to find user");
throw new Error("Failed to retrieve customer profile");
// ✅ Proper NestJS exception (lines 129, 133, 233, 248-256)
throw new NotFoundException("User not found");
throw new BadRequestException("Unable to update profile.");
```
**Fix:** Use NestJS exceptions consistently:
- `NotFoundException` for not found errors
- `BadRequestException` for validation/client errors
- Never throw generic `Error()` in services
---
### 3. **Unused/Redundant Imports in UsersService**
**Location:** `apps/bff/src/modules/users/users.service.ts`
```typescript
import { Activity } from "@customer-portal/domain/auth"; // Used
import type { CustomerAddress } from "@customer-portal/domain/customer"; // Not used (can use Address alias)
```
**Fix:** Use Address alias from domain for consistency
---
### 4. **Hardcoded Currency in Dashboard** ⚠️
**Location:** `apps/bff/src/modules/users/users.service.ts:460`
```typescript
currency: "JPY", // Hardcoded
```
**Issue:** Should come from user's WHMCS profile or config
**Fix:** Fetch from WHMCS client data
---
### 5. **TODO Comment Not Implemented**
**Location:** `apps/bff/src/modules/users/users.service.ts:459`
```typescript
openCases: 0, // TODO: Implement support cases when ready
```
**Fix:** Either implement or remove TODO if not planned
---
### 6. **SalesforceService Unused Health Check** ⚠️
**Location:** `apps/bff/src/modules/users/users.service.ts:136-163`
In the old `getProfile()` method:
```typescript
// Check Salesforce health flag (do not override fields)
if (mapping?.sfAccountId) {
try {
await this.salesforceService.getAccount(mapping.sfAccountId);
} catch (error) {
// Just logs error, doesn't use the data
}
}
```
**Issue:** Fetches Salesforce account but doesn't use it
**Fix:** Already fixed in new implementation - removed
---
## ✅ Previously Fixed Issues
1.**Removed Profile Fields from DB** - firstName, lastName, company, phone
2.**Unified Update Endpoint** - Single PATCH /me for profile + address
3.**Removed Deprecated Types** - UpdateProfileRequest, UpdateAddressRequest, UserProfile, User
4.**Cleaned Mapper Utilities** - Renamed to mapPrismaUserToAuthState
5.**Single Source of Truth** - WHMCS for all profile data
---
## 📋 Recommended Fixes
### Priority 1 (Critical)
1. Fix inconsistent error handling in UsersService
2. Remove duplicate Address alias from auth domain
### Priority 2 (Important)
3. Fix hardcoded currency
4. Clean up redundant imports
### Priority 3 (Nice to have)
5. Remove or implement TODO comments