phase 7: income, payday. and budget handling routes simplified and compacted
This commit is contained in:
100
docs/api-phase6-move-log.md
Normal file
100
docs/api-phase6-move-log.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# API Phase 6 Move Log
|
||||
|
||||
Date: 2026-03-17
|
||||
Scope: Move `income`, `budget`, and `payday` endpoints out of `api/src/server.ts` into dedicated route modules.
|
||||
|
||||
## Route Registration Changes
|
||||
- Added income route import in [server.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/server.ts:21)
|
||||
- Added payday route import in [server.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/server.ts:22)
|
||||
- Added budget route import in [server.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/server.ts:23)
|
||||
- Registered income routes in [server.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/server.ts:946)
|
||||
- Registered payday routes in [server.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/server.ts:949)
|
||||
- Registered budget routes in [server.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/server.ts:953)
|
||||
- Removed inline route blocks from `server.ts` to avoid duplicate registration:
|
||||
- `POST /income`
|
||||
- `GET /income/history`
|
||||
- `POST /income/preview`
|
||||
- `GET /payday/status`
|
||||
- `POST /payday/dismiss`
|
||||
- `POST /budget/allocate`
|
||||
- `POST /budget/fund`
|
||||
- `POST /budget/reconcile`
|
||||
|
||||
## Endpoint Movements
|
||||
|
||||
1. `POST /income`
|
||||
- Original: `server.ts` line 1382
|
||||
- Moved to [income.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/income.ts:31)
|
||||
- References:
|
||||
- [useIncome.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/hooks/useIncome.ts:27)
|
||||
- [PaydayOverlay.tsx](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/components/PaydayOverlay.tsx:71)
|
||||
- [OnboardingPage.tsx](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/pages/OnboardingPage.tsx:479)
|
||||
- [income.test.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/tests/income.test.ts:19)
|
||||
- [income.integration.test.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/tests/income.integration.test.ts:59)
|
||||
|
||||
2. `GET /income/history`
|
||||
- Original: `server.ts` line 1421
|
||||
- Moved to [income.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/income.ts:78)
|
||||
- References:
|
||||
- [useIncomeHistory.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/hooks/useIncomeHistory.ts:15)
|
||||
|
||||
3. `POST /income/preview`
|
||||
- Original: `server.ts` line 1459
|
||||
- Moved to [income.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/income.ts:115)
|
||||
- References:
|
||||
- [useIncomePreview.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/hooks/useIncomePreview.ts:16)
|
||||
|
||||
4. `GET /payday/status`
|
||||
- Original: `server.ts` line 1483
|
||||
- Moved to [payday.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/payday.ts:29)
|
||||
- References:
|
||||
- [PaydayOverlay.tsx](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/components/PaydayOverlay.tsx:35)
|
||||
|
||||
5. `POST /payday/dismiss`
|
||||
- Original: `server.ts` line 1586
|
||||
- Moved to [payday.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/payday.ts:135)
|
||||
- References:
|
||||
- [PaydayOverlay.tsx](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/components/PaydayOverlay.tsx:54)
|
||||
|
||||
6. `POST /budget/allocate`
|
||||
- Original: `server.ts` line 1597
|
||||
- Moved to [budget.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/budget.ts:43)
|
||||
- References:
|
||||
- [budget.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/api/budget.ts:58)
|
||||
- [OnboardingPage.tsx](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/pages/OnboardingPage.tsx:8)
|
||||
|
||||
7. `POST /budget/fund`
|
||||
- Original: `server.ts` line 1624
|
||||
- Moved to [budget.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/budget.ts:69)
|
||||
- References:
|
||||
- [budget.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/api/budget.ts:65)
|
||||
- [OnboardingPage.tsx](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/pages/OnboardingPage.tsx:473)
|
||||
|
||||
8. `POST /budget/reconcile`
|
||||
- Original: `server.ts` line 1657
|
||||
- Moved to [budget.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/budget.ts:98)
|
||||
- References:
|
||||
- [budget.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/api/budget.ts:72)
|
||||
- [ReconcileSettings.tsx](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/pages/settings/ReconcileSettings.tsx:8)
|
||||
|
||||
## Helper Ownership in Phase 6
|
||||
- Shared helper injection from `server.ts`:
|
||||
- `mutationRateLimit`
|
||||
- `computeDepositShares`
|
||||
- `computeWithdrawShares`
|
||||
- `isProd` flag for environment-sensitive logging
|
||||
- Route-local schemas/helpers:
|
||||
- `income.ts`: `AllocationOverrideSchema`
|
||||
- `budget.ts`: `BudgetBody`, `ReconcileBody`
|
||||
- `payday.ts`: local debug logger and query schema
|
||||
|
||||
## Notes
|
||||
- Removed legacy unregistered `api/src/routes/income-preview.ts` to avoid duplicate endpoint logic drift.
|
||||
|
||||
## Verification
|
||||
1. Build
|
||||
- `cd api && npm run build` ✅
|
||||
|
||||
2. Focused tests
|
||||
- `cd api && npm run test -- tests/income.test.ts tests/income.integration.test.ts`
|
||||
- Result: blocked by local DB connectivity (`127.0.0.1:5432` unavailable), suites skipped/failed before endpoint assertions.
|
||||
Reference in New Issue
Block a user