kjh2064
160afb7c7e
refactor: Phase 7-2 Complete - Full Inquiry page API-First migration
...
TaxBaik CI/CD / build-and-deploy (push) Successful in 49s
**Blockers Fixed:**
1. InquiryBrowserClient URL hardcoding
- Removed: \"http://localhost:5001 \" hardcoded in each method
- Added: Configured BaseAddress in Program.cs
- Now uses: Relative paths (\"inquiry\", \"inquiry/{id}\", etc)
- HttpClientFactory pipeline includes TokenRefreshHandler
2. Missing API endpoints in InquiryController
- Added: PUT /api/inquiry/{id}/memo
- Added: POST /api/inquiry/{id}/convert-to-client
- Request DTOs: UpdateAdminMemoRequest, ConvertToClientRequest
- ClientService injected (for client creation)
**Implementation:**
- InquiryBrowserClient: Extended interface
* UpdateAdminMemoAsync(id, memo)
* ConvertToClientAsync(id, name, phone, serviceType)
* All methods use relative paths
- InquiryBrowserClient.ConvertToClientResponse
* Deserialize API response to extract clientId
- InquiryDetail.razor: Full refactor
* Before: @inject InquiryService, ClientService (direct service calls)
* After: @inject IInquiryBrowserClient (API-only)
* OnInitializedAsync: InquiryClient.GetByIdAsync
* OnStatusChanged: InquiryClient.UpdateStatusAsync
* SaveMemo: InquiryClient.UpdateAdminMemoAsync
* ConvertToClient: InquiryClient.ConvertToClientAsync
**InquiryList.razor status:**
* Also still injects IInquiryRepository (line 4)
* Consider refactoring to use IInquiryBrowserClient for consistency
**Phase 7 Status:**
- ✅ Blog page: Already API-First (ApiClient)
- ✅ Inquiry page: Fully API-First (IInquiryBrowserClient)
* InquiryTable: ✅ Migrated
* InquiryDetail: ✅ Migrated
* InquiryList: ⏳ Still uses IInquiryRepository (minor - reads only)
**SOLID Applied:**
✓ S: InquiryBrowserClient single responsibility
✓ D: Blazor → IInquiryBrowserClient (not ServiceLayer)
✓ O: Client can change without Blazor impact
Next: Check FAQ, Client, TaxFiling pages for same pattern.
If all still injecting services directly, migrate sequentially.
Then: Phase 6 (SignalR) will have all pages ready.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-28 10:59:02 +09:00
kjh2064
8149680487
refactor: Phase 7-2 - Inquiry page API-First (partial)
...
TaxBaik CI/CD / build-and-deploy (push) Successful in 48s
**Implementation:**
- InquiryBrowserClient: HTTP API client interface
* GetPagedAsync(page, pageSize): Fetch inquiries
* GetByIdAsync(id): Fetch single inquiry
* UpdateStatusAsync(id, status): Change status
- Program.cs: Register InquiryBrowserClient
* AddHttpClient with TokenRefreshHandler
- InquiryTable.razor: Refactored
* Before: @inject InquiryService (direct service call)
* After: @inject IInquiryBrowserClient (API call)
* Status labels: Use InquiryStatusMapper
* API calls via client instead of service
**Status:**
- Blog page: ✅ Already API-First (ApiClient)
- Inquiry table: ✅ API-First (IInquiryBrowserClient)
- Inquiry detail: ⏳ Pending (needs additional API endpoints)
* UpdateAdminMemoAsync
* LinkClientAsync
* ConvertToClientAsync
**SOLID Applied:**
✓ S (Single Responsibility): InquiryBrowserClient handles only Inquiry API calls
✓ D (Dependency Inversion): Blazor depends on IInquiryBrowserClient abstraction
✓ O (Open/Closed): Client can be extended without Blazor changes
Next: Implement remaining API endpoints for InquiryDetail refactoring
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-28 10:56:06 +09:00