Upload leave letters, classify them instantly, review OCI storage metadata, and monitor request volume from a single polished HR surface. The UI keeps the same API contract and JavaScript hooks while adding dashboard-grade presentation and responsive behavior.
file
Sample shortcuts preserved
OCI download links unchanged
Use drag and drop or browse manually. The underlying form still posts multipart data to /api/leave/upload with field name file.
This list is rendered from /api/leave/list. Each download button continues to target /api/leave/download/{id}.
| Filename | Category | Date | OCI object | Action |
|---|---|---|---|---|
| Loading saved requests... | ||||
The response card surfaces category, keywords, OCI metadata, and the raw JSON response without changing the API shape.
{ "message": "Upload a file to see the JSON result." }
This panel shows the exact JSON returned by /api/leave/dashboard and mirrors the identity state used in the header.
{ "name": "demo.user@example.com", "email": "demo.user@example.com" }
Client-side recent activity for the current browser session.