Feature #147
open[HR][P9] Screens, dashboards and holidays
0%
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
- Assignee set to Sravan V S
S- Updated by SK - 12 days ago
- 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
- Assignee changed from Roshni Harish. to Sravan V S