156 lines
3.7 KiB
Markdown
156 lines
3.7 KiB
Markdown
You are a Senior Full Stack Engineer and QA Engineer.
|
|
|
|
Project:
|
|
Training Management System (TMS)
|
|
|
|
Current status:
|
|
Sprint 1-6 completed.
|
|
Pre-UAT Readiness Review completed.
|
|
Before starting Sprint 7, fix all remaining important issues.
|
|
|
|
Current task:
|
|
Implement Sprint 6.5: Pre-Sprint 7 Hardening.
|
|
|
|
Important constraints:
|
|
|
|
- Do NOT add new business features.
|
|
- Do NOT change folder structure.
|
|
- Do NOT migrate ORM unless absolutely necessary.
|
|
- Do NOT rename tables or columns.
|
|
- Do NOT break existing routes.
|
|
- Reuse existing Auth.js.
|
|
- Reuse existing Drizzle ORM.
|
|
- Keep Thai UI.
|
|
- Keep responsive/mobile behavior.
|
|
- Minimal-impact changes only.
|
|
|
|
Priority 1: Notification Pagination Optimization
|
|
|
|
Problem:
|
|
Notification listing currently loads all matching rows, filters in memory, then slices for pagination.
|
|
|
|
Requirements:
|
|
|
|
1. Move notification pagination to database query level.
|
|
2. Use WHERE, ORDER BY, LIMIT, OFFSET at SQL/Drizzle level.
|
|
3. Keep existing search, read/unread filter, and type filter behavior.
|
|
4. Keep ownership check:
|
|
- organizationId
|
|
- userId
|
|
5. Preserve unread count accuracy.
|
|
6. Preserve header notification popover behavior.
|
|
7. Do not break Notification Center page.
|
|
|
|
Files likely involved:
|
|
|
|
- src/features/notifications/server/notification-data.ts
|
|
- src/app/api/notifications/route.ts
|
|
- src/features/notifications/api/types.ts
|
|
- src/features/notifications/api/service.ts
|
|
|
|
Priority 2: Announcement Route Loading/Error Coverage
|
|
|
|
Problem:
|
|
Announcement route segment does not have route-level loading.tsx and error.tsx.
|
|
|
|
Requirements:
|
|
|
|
1. Add route-level loading and error pages:
|
|
- src/app/dashboard/announcements/loading.tsx
|
|
- src/app/dashboard/announcements/error.tsx
|
|
- src/app/dashboard/announcements/[id]/loading.tsx
|
|
- src/app/dashboard/announcements/[id]/error.tsx
|
|
2. Use Thai UI.
|
|
3. Follow existing loading/error pattern from other dashboard modules.
|
|
4. Keep responsive layout.
|
|
|
|
Priority 3: RBAC Documentation Update
|
|
|
|
Problem:
|
|
docs/nav-rbac.md is outdated and still references Clerk/client-side authorization.
|
|
|
|
Requirements:
|
|
|
|
1. Update docs/nav-rbac.md to reflect current architecture:
|
|
- Auth.js
|
|
- Server-side authorization
|
|
- requireOrganizationAccess()
|
|
- requireHRD()
|
|
- requireEmployeeDashboardAccess()
|
|
- role-based sidebar filtering
|
|
- proxy.ts route protection
|
|
2. Remove outdated Clerk references.
|
|
3. Document:
|
|
- Employee access
|
|
- HRD access
|
|
- API protection
|
|
- direct URL protection
|
|
- file download protection
|
|
4. Keep the document clear and suitable for maintenance.
|
|
|
|
Priority 4: Browser Smoke Test Checklist
|
|
|
|
Create a smoke test checklist for:
|
|
|
|
- Chrome
|
|
- Microsoft Edge
|
|
|
|
Test areas:
|
|
Employee:
|
|
|
|
1. Login
|
|
2. View dashboard
|
|
3. Create training record
|
|
4. Upload certificate
|
|
5. Open/download certificate
|
|
6. Edit pending training record
|
|
7. Delete pending training record
|
|
8. View notification
|
|
9. View announcement
|
|
|
|
HRD:
|
|
|
|
1. Login
|
|
2. Open dashboard
|
|
3. Review pending training
|
|
4. Approve training
|
|
5. Reject training
|
|
6. Create announcement
|
|
7. Open/download announcement attachment
|
|
8. Import employee
|
|
9. Master review approve/reject
|
|
10. View audit logs
|
|
11. Export audit log CSV
|
|
|
|
Priority 5: Output Review File
|
|
|
|
Create:
|
|
|
|
docs/sprint-6-5-pre-sprint-7-hardening-review.md
|
|
|
|
The file must include:
|
|
|
|
1. Summary
|
|
2. Files Changed
|
|
3. Issues Fixed
|
|
4. Notification Pagination Optimization
|
|
5. Announcement Loading/Error Coverage
|
|
6. RBAC Documentation Update
|
|
7. Browser Smoke Test Checklist
|
|
8. Validation Result
|
|
9. Remaining Risks
|
|
10. Sprint 7 Readiness Score
|
|
|
|
Validation:
|
|
|
|
- Run typecheck
|
|
- Run lint
|
|
- Confirm no new migration is required unless changed
|
|
- Confirm existing routes still work
|
|
|
|
Return:
|
|
|
|
- Complete code changes with file paths
|
|
- Content of docs/sprint-6-5-pre-sprint-7-hardening-review.md
|
|
- Any remaining issues
|