Skip to content

AI Leave triage tools (ai 1.16.0) — Production Readiness Audit

FieldValue
Date2026-09-16
StatusGo for production — Backend + Docs; no SPA/Mobile code
ScopeAsk EloSync Leave tools: get_leave_request, get_pending_leave_requests, confirmed writes approve_leave_request / reject_leave_request; catalog ai 1.15.0 → 1.16.0
CompanionAI deployment · AI Credit Note triage · AI Quotation triage · AI tools · Tenant AI API · User guide · Leave Management · CHANGELOG

Executive summary

Additive AI tools depth on the existing AIGateway + AIToolRegistry + PendingAiActionService path. Reads: fetch one leave request or list pending. Writes: two low-risk tools that propose pending actions; mutations run only after POST /ai/actions/{id}/confirm. Approve/reject call LeaveRequestService::approve / reject (same as HTTP). Auth mirrors the controller via LeaveAiSupport + LeaveRequestPolicy (non-admins cannot self-approve). Reject requires review_notes; approve optionally takes review_notes / deduct_salary with the same override-notes rule as ReviewLeaveRequestRequest. No assign or timeline-note tools. No new Spatie permissions, no Leave catalog bump, no Frontend/Mobile changes.

Go / No-Go: Go. Cutover: migrate-only catalog bump to 1.16.0 (after 1.15.0 Credit Note triage), entitle ai + leave-management (+ employees), staging smoke propose→confirm.

GateResult
Platform freeze (no parallel AI stack)Pass
UUID leave lookup; soft-deleted excludedPass
Pending list uses status=pending via LeaveRequestService::paginatePass
Approve/reject propose/confirm: leave-management.approve + policyPass
Self-approve blocked for non-adminPass
Reject requires review notes; deduct override requires notesPass
Propose does not mutatePass
Catalog migrate-only ai 1.16.0 + CatalogSeeder syncPass
Docs (tools, API, user tip, Leave cross-links, ops, roadmap, changelog, upgrade, VitePress)Pass
Pest write confirmation + registryPass
Playwright AI e2eN/A — no SPA surface change

Locked-decision matrix

DecisionBackendFrontendMobileDocs
Read tools: get one + pending listPassPass
Confirmed writes via existing pending actionsPassPass (generic UI)Pass (generic UI)Pass
Approve/reject via HTTP semantics (not status enum tool)PassPass
No assign / timeline notesPassPass
Catalog MINOR ai 1.16.0 only (not leave-management)PassPass

Authz map (HTTP ↔ AI)

ActionHTTPAI tool / confirm
Get oneview (self-scoped unless approve / admin)get_leave_request
List pendingviewAny + service scopingget_pending_leave_requests
Approveapprove + optional notes/deductapprove_leave_requestLeaveAiSupport + approve()
Rejectreject + required notesreject_leave_requestLeaveAiSupport + reject()

Upgrade & staging smoke

  1. php artisan migrate --force — catalog ai1.16.0 (requires prior 1.15.0; do not db:seed).
  2. Entitle ai + employees + leave-management.
  3. Smoke: Ask EloSync list pending / fetch leave → propose approve or reject → Confirm.

Rollback

Roll back the catalog bump migration (down1.15.0). Tools remain in code but version claim reverts; no schema change.

Monitoring

Unchanged from AI platform readiness (Nightwatch / logs on AI gateway + pending action confirm failures).

Official documentation for the EloSync SaaS Platform.