Project

General

Profile

Actions

Feature #147

open
SV SV

[HR][P9] Screens, dashboards and holidays

Feature #147: [HR][P9] Screens, dashboards and holidays

Added by Sravan V S about 2 months ago. Updated 3 days ago.

Status:
Resolved
Priority:
Normal
Assignee:
Target version:
-
Start date:
09/28/2026
Due date:
% Done:

0%

Estimated time:
Resolved By:

Description

Dashboard content once the underlying numbers are true. Holiday model and page. Time-and-attendance screen regroup. Shift template lifecycle (version vs forbid mid-life edits) and enum varchar migration. General polish across A/B/C/D.

Size: L

Needs owner decision #11, 18, 19 (see #137).

Source: clinq-docs/modules/hr/reviews/2026-09-28-ui-audit/ (branch docs/hr-ui-audit-2026-09-28)

Findings covered:

  • A-29
  • A-31
  • A-33
  • A-37
  • A-38
  • A-39
  • A-40
  • A-43
  • C-40
  • C-41
  • C-42
  • C-43
  • C-44
  • C-45
  • B-29
  • B-43
  • D-11
  • D-22
  • D-23
  • D-25
  • D-27
  • D-28
  • D-39
  • D-41
  • D-42
  • D-43

SV Updated by Sravan V S about 2 months ago Actions #1

  • Assignee set to Sravan V S

S- Updated by SK - 12 days ago Actions #2

  • Status changed from New to Resolved
  • Assignee changed from Sravan V S to Roshni Harish.
  • Resolved By set to SK -

Fixed and merged to dev on nuvita-hr (610f669). Worked from the ticket's terse description, verified each item against current code first (source audit doc confirmed permanently lost, see #137). Independently re-verified the agent's work myself: re-ran the full build/unit/integration/portal test suites on the merged dev tip (all green), and read the shift-template guard diff and both new migrations line-by-line before pushing - the attendance-status migration's int-to-string CASE mapping matches the AttendanceStatus enum exactly.

What was real and fixed:

  • Holiday "type" drift: the admin Holidays page's type badge/filter/form was wired to a dead int field whose values didn't even match the real HolidayType enum used elsewhere (ESS calendar, API). Removed the dead field entirely (entity/DTO/EF config + migration), rewired the page onto the real enum.
  • Program decision #11a (owner-authorized): removed the standalone quick "Approve" button from the leave-requests quick-view sheet - both manager-approval and HR-final-approval now route through the full review page, so an approval is never made without full context.
  • Program decision #18 (owner-authorized, B-29): shift template edits to start/end time are now blocked while a future-dated published roster entry references the template - name/description edits remain unrestricted. Scoped narrowly to clocked times, not a full edit lock; documented as the decision made within the owner's guard.
  • Attendance record status converted from int to text (enum-serialization convention) - surfaced and fixed a latent bug where raw SQL in the year-seed service compared the column against a bare int literal, which would have silently broken once the column held text.
  • Investigated the dashboard ("once the underlying numbers are true") - found it was already reading from the corrected single ledger (#139/#140/#146), no drift, no fix needed.

Skipped, flagged as follow-up: decision #11b (fold Doctors into Employees via Tabs) and #11c (Time-and-attendance screen regroup) are both substantial UI restructurings that need their own properly-scoped ticket rather than a rushed attempt bundled into this one - recommend splitting those out if you still want them done.

Test results on the merged dev tip: dotnet build clean (0 warnings/errors); Nuvita.Hr.Tests.Unit 1331/1331 passed; Nuvita.Hr.Tests.Integration 254/254 passed; portal vitest 809/809 passed across 103 files; portal tsc --noEmit clean.

QA change-log entry added. Assigning to Roshni for QA sign-off.

RH Updated by Roshni Harish. 3 days ago Actions #3

  • Assignee changed from Roshni Harish. to Sravan V S
Actions

Also available in: PDF Atom