101 lines
4.6 KiB
Markdown
101 lines
4.6 KiB
Markdown
# 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.
|