geocrop-platform./apps/nextgen/.harness/changelogs/2026-07-04-phase1b-planning.md

3.0 KiB

HR/Finance Phase 1 Sprint 1b — Plan kickoff (B9-B11 + F1-F6)

Plan: .harness/plans/hr-finance-fiscalisation.md §3b Branch: feature/hr-finance-phase-1b (worktree .worktrees/hr-finance-phase-1b/) Owner: backend-expert (pre-step, B9-B11) → frontend-expert (F1-F6) → code-reviewer (gate).

What this commit does

Two planning artefacts — no code yet.

  1. Spec the Sprint 1b scope in hr-finance-fiscalisation.md §3b. Three backend touch-points (PUT /finance/expenses/:id/approve|reject, GET /finance/expenses/summary, verifier pin for ?status= filters) and four frontend pages (LeaveApproval, StaffDirectory, PayrollRuns, Payslips) plus two modifications (Expenses approval actions, HRManagement alert cleanup).
  2. Relocate three untracked stub trackers from the repo root into .harness/plans/stubs-sprint-1b/ as A.md, B.md, C.md. These are the spec the parallel Track A/B/C stub sweep will follow after Sprint 1b lands.

Files touched

File Change
.harness/plans/hr-finance-fiscalisation.md +74 (insert §3b between §3a and §6)
.harness/plans/stubs-sprint-1b/A.md renamed from STUBS_TRACK_A_IDENTITY_ACCESS.md
.harness/plans/stubs-sprint-1b/B.md renamed from STUBS_TRACK_B_FEES_AND_COPY.md
.harness/plans/stubs-sprint-1b/C.md renamed from STUBS_TRACK_C_MODULE_PLACEHOLDERS.md
.harness/changelogs/2026-07-04-phase1b-planning.md new (this file)

What lands next (commit-by-commit)

# Commit Owner Notes
1 feat(finance): B9 approve/reject state machine backend-expert PUT /api/finance/expenses/:id/approve|reject — records approved_by / approved_at, 409 on already-decided rows.
2 feat(finance): B10 /expenses/summary backend-expert Powers the approval queue tile on the Finance dashboard.
3 docs: B11 verifier pin for ?status= filters backend-expert One-line additions to the plan; no code unless a filter is missing.
4 feat(hr/finance): F1-F6 — LeaveApproval, StaffDirectory, PayrollRuns, Payslips, Expenses approve UI, HRManagement cleanup frontend-expert 4 new pages + 2 modifications. Routes + nav wiring + SCREENS.md update.
5 feat(routes): remove /finance/payroll/runs placeholder mapping frontend-expert App.tsx:330 routes to PayrollRuns, not HRManagement.
6 review code-reviewer Gate.

Acceptance (recap from §3b)

  • B9 happy path: approve status='pending' row → 200 with status='approved', approved_by/approved_at populated.
  • B9 sad path: approve already-approved row → 409.
  • All 4 new pages render with real data; no alert(, no window.prompt, no <Module Under Construction>.
  • /finance/payroll/runs no longer maps to HRManagement.
  • npm run build green.

Out of scope (parked)

  • approved → paid transition (Sprint 1c).
  • Accountant/Librarian/Nurse dashboards (§9 Phase 2+).
  • Test framework + CI (tester rein's first sprint).
  • Phase 0 nits (still parked on fix/stabilise-finance-nits).