 adminandClaude Fable 5
|
576557181a
|
feat: Phase 5 & 6 — usability, compliance hardening, analytics
Phase 5 (usability + compliance):
- In-app notification bell/badge: migration 016 adds read state + per-user
RLS + create_in_app_notification SECURITY DEFINER RPC; /api/notifications;
wired into incident creation, CAPA assign/verify, escalation cron
- Incident closure: new POST /api/incidents/[id]/close (requires verification
status + all CAPAs verified); migration 017 locks closed incidents at DB
level (update/delete triggers) with append-only incident_addenda + UI panel
- Server-side pagination on HSE/supervisor incident inboxes (.range, 25/page)
- Investigation form: alcohol/urine test result + witness statement refs
(existing schema columns, now editable)
- Type-specific intake fields: migration 018 adds incidents.type_details
JSONB; whitelist validation; environmental/asset/security/fire field
groups in report form; EN/MS/ZH labels; offline queue support
- JKKP 8 annual register CSV export (/api/reports/jkkp8) + dashboard button
+ January statutory deadline banner
- Admin page: user invite (service-role client), role/site/active management,
site + zone CRUD with QR report links — replaces Phase 0 stub
- Evidence gallery thumbnails via Supabase render transform with fallback
Phase 6 (analytics):
- 12-month stacked trend chart (leading/lagging/other) + top root causes
(lib/dashboard/trends.ts pure helpers)
- AI rising-risk zones: /api/dashboard/ai/risk-flags aggregates 90-day
zone stats, claude-opus-4-8 forced tool_use, panel on HSE + management
dashboards, suggestion audit-logged
Also fixes 9 pre-existing missing /ims basePath prefixes in client fetches
and download links.
132 tests passing, tsc clean, next build clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CPf5Rc8QPx6V8KLEEgfKEQ
|
2026-07-12 10:25:08 +08:00 |
|
admin
|
98c38c3716
|
fix: use setUTCDate in getNextRecheckDate to avoid local-timezone off-by-one
|
2026-07-11 21:49:43 +08:00 |
|
admin
|
871ef7c53a
|
fix: rename on-time rate label, hoist getApiKey above escalation loop, remove broken capa-owner incident link
|
2026-07-11 19:03:23 +08:00 |
|
 adminandClaude Sonnet 4.6
|
b9def9c957
|
feat: CAPA effectiveness re-check cron — 30/60/90-day email + WhatsApp notifications
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
|
2026-07-11 18:55:27 +08:00 |
|
 adminandClaude Sonnet 4.6
|
a47f3aabc9
|
feat: WhatsApp notifications — new incident alert and CAPA overdue escalation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
|
2026-07-11 18:50:25 +08:00 |
|
admin
|
121433ddf8
|
Revert "feat: WhatsApp notification helper + phase 4 migration (recheck_round, WhatsApp settings)"
This reverts commit b6845f5bb5.
|
2026-07-11 18:47:08 +08:00 |
|
admin
|
b6845f5bb5
|
feat: WhatsApp notification helper + phase 4 migration (recheck_round, WhatsApp settings)
|
2026-07-11 18:43:57 +08:00 |
|
 adminandClaude Opus 4.8
|
75fa2605bf
|
feat: CAPA overdue escalation cron — 4 thresholds, once-per-threshold via notifications_log
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
|
2026-07-11 15:20:15 +08:00 |
|
 adminandClaude Sonnet 4.6
|
33875395fb
|
fix: cast Supabase join types through unknown for TSC compatibility
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AWxyMibCuGGtSQSqfajDQ7
|
2026-07-11 07:57:00 +08:00 |
|
 adminandClaude Sonnet 4.6
|
ed14885253
|
fix: replace any casts with typed casts for Supabase join results
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AWxyMibCuGGtSQSqfajDQ7
|
2026-07-11 07:52:53 +08:00 |
|
admin
|
2239b6e2df
|
feat: email notifications via Resend on new incident
|
2026-07-10 13:24:44 +08:00 |
|