feat(mcp): payroll e2e parity: staged salary-run booking + absence deletion (#1075)
* feat(mcp): payroll e2e parity: staged salary-run booking + absence deletion Close the last MCP-surface gaps for running payroll end-to-end via the connector (the v1 REST API already had the full chain): - gnubok_book_salary_run: stages a high-risk book operation; on approval the executor walks review -> approved -> paid -> booked via the new lib/salary/book-run.ts (extracted from the dashboard book route, which now calls the same core) and posts the immutable salary vouchers. - gnubok_delete_absence: staged inverse of gnubok_register_absence, reusing deleteAbsenceRange with a dry-run day-count preview. - Wire the missing payroll operation types into the Granskning label map (register_absence, update_payslip_line, employee ops, vacation_year_close had translations but fell back to humanized snake_case). - Update stale 'booking happens in the web UI' prose in tool descriptions, the payroll-monthly skill, and the workflow hint; payload-size ceiling 56K -> 57K per the documented bump protocol. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(mcp): widen pending_operations op-type CHECK + roster typing for book_salary_run The op-type audit (pg-real) caught the exact bug class it exists for: book_salary_run and delete_absence were staged in code without the constraint-expansion migration, so every real staging INSERT would have failed with check_violation while dry_run previewed clean. Ships the documented widen (NOT VALID) + validate migration pair. Also fixes the strict-mode cast in book-run.ts that failed the production typecheck. Verified locally against supabase/postgres 15.8.1.060 with all migrations applied: op-type audit green, pg-real 692/693 (the one failure is the pre-existing TZ-sensitive get_unlinked_1930_lines assertion, green under TZ=UTC as in CI). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
378611a2dc
commit
30771b1619
@@ -2048,6 +2048,12 @@ export type PendingOperationType =
|
||||
| 'create_employee'
|
||||
| 'update_employee'
|
||||
| 'set_employee_opening_balances'
|
||||
// Payroll e2e parity with the v1 REST surface: book a calculated run
|
||||
// (walks review → approved → paid → booked; the staged approval is the
|
||||
// authorization act) and remove registered absence days. Employee
|
||||
// archiving needs no own op: update_employee with is_active=false.
|
||||
| 'book_salary_run'
|
||||
| 'delete_absence'
|
||||
// Semesterårsavslut: rolls vacation balances into the next year and may
|
||||
// post a 2920/2940 drift-adjustment verifikation (Phase 3).
|
||||
| 'vacation_year_close'
|
||||
|
||||
Reference in New Issue
Block a user