- 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.