admin and Claude 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
admin and Claude 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
dfca872629
feat: CSV export endpoint for HSE and management dashboards
2026-07-11 18:44:52 +08:00
admin
b6845f5bb5
feat: WhatsApp notification helper + phase 4 migration (recheck_round, WhatsApp settings)
2026-07-11 18:43:57 +08:00
admin
e631d04aba
fix: reporter dashboard — guard reported_at null before new Date()
2026-07-11 18:41:43 +08:00
admin
55b6dac646
feat: reporter dashboard — user-scoped incident submissions with status
2026-07-11 18:39:18 +08:00
admin
070e2d1d5d
fix: CAPA owner dashboard — priority null guard, nulls-last due_date sort
2026-07-11 18:22:21 +08:00
admin
a2f1be7eaf
feat: CAPA owner dashboard — user-scoped active and completed CAPAs
2026-07-11 18:19:41 +08:00
admin and Claude Sonnet 4.6
69df45250c
fix: supervisor dashboard — dedup incident ID queries, accurate counts, due_date null guard
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01V5pD9CZzUjknw5nxzX5abr
2026-07-11 18:16:54 +08:00
admin
ceb5c7994a
feat: supervisor dashboard — site-scoped open incidents, overdue CAPAs
2026-07-11 18:13:26 +08:00
admin
3dac469314
feat: management dashboard — month delta, LTI, severity distribution, site comparison
2026-07-11 18:10:33 +08:00
admin and Claude Sonnet 4.6
b9ab94c9da
feat: API key settings page — store ANTHROPIC/VOYAGE keys in DB with admin UI
...
- Migration: app_settings table with admin-only RLS (ANTHROPIC_API_KEY, VOYAGE_API_KEY)
- lib/settings.ts: getApiKey() reads DB first, falls back to env var
- lib/claude/client.ts: factory createAnthropicClient(apiKey) replaces singleton
- lib/claude/embed.ts: optional apiKey param, falls back to env
- 3 Claude AI routes + similar route: fetch key from settings before calling AI
- incidents/route.ts: fire-and-forget embed reads VOYAGE key from settings
- GET/POST /api/settings: admin-only masked key management endpoint
- /hse/settings page + ApiKeyForm client component
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 17:46:40 +08:00
admin and Claude Sonnet 4.6
c07bdb77ad
fix: RLS guard in match_incidents + try/catch around AI/embed calls
...
- Add new migration 20260711000013_match_incidents_auth_guard.sql that
replaces match_incidents with an inline auth guard: callers without
hse/admin role receive PGRST301 Forbidden, closing the SECURITY
DEFINER RLS bypass.
- Wrap anthropic.messages.create() in try/catch returning 503 in all
four AI routes: quality-check, triage-suggest, rca-draft, similar.
- Wrap JSON.parse(inc.embedding) and embedText() in similar/route.ts
in a shared try/catch returning 503 Embedding service unavailable.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 16:48:20 +08:00
admin and Claude Sonnet 4.6
3473cf8ab7
feat: dashboard — leading/lagging, zone heatmap, CAPA on-time rate, DOSH filing status
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 16:38:57 +08:00
admin and Claude Sonnet 4.6
10e71969dd
feat: AI RCA draft assistant in investigation form
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 16:35:12 +08:00
admin and Claude Sonnet 4.6
547cc6e817
feat: pgvector similar-incident retrieval + SimilarIncidentsPanel
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 16:31:02 +08:00
admin and Claude Sonnet 4.6
f10fa071f9
feat: AI triage suggestion — severity + DOSH flags pre-fill
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 16:27:29 +08:00
admin
a5933d2cd9
fix: guard JSON parse and validate Claude tool output in quality-check route
2026-07-11 16:23:31 +08:00
admin and Claude Sonnet 4.6
3bec95aaf8
feat: AI report quality check before submission
...
Adds POST /api/incidents/ai/quality-check using Claude tool_use to score incident descriptions 1-10. Report form blocks submission when score < 6, shows amber feedback with suggestions, and offers a 'Submit anyway' override.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 16:18:39 +08:00
admin and Claude Opus 4.8
54332d0297
feat: JKKP 6/7 PDF generation via pdf-lib, download from incident detail
...
Also excludes node_modules.nosync from vitest test discovery to fix pre-existing bleed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 15:24:18 +08:00
admin and Claude 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
admin and Claude Opus 4.8
804b1fbf33
feat: verification flow — HSE verify/reopen CAPA, auto-transition incident to verification
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 15:18:17 +08:00
admin and Claude Opus 4.8
1780586185
feat: CAPA board — kanban/table view, create CAPA from incident, status tracking
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 15:16:49 +08:00
admin and Claude Opus 4.8
63cb28f520
feat: investigation workspace — 5-Why/fishbone RCA, transitions triaged→investigating→capa_pending
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 15:14:27 +08:00
admin and Claude Opus 4.8
e55c5284a7
feat: triage panel — severity + DOSH checklist, transitions reported→triaged
...
Also excludes node_modules.nosync from tsconfig to fix pre-existing TS type check bleed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 15:12:35 +08:00
admin and Claude Sonnet 4.6
1fe646d82d
fix: extract zone fields explicitly to avoid Supabase join type narrowing to never
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01AWxyMibCuGGtSQSqfajDQ7
2026-07-11 07:59:07 +08:00
admin and Claude 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
admin and Claude Sonnet 4.6
7d3f8ec757
fix: export Incident types, replace any casts with typed unknown casts
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01AWxyMibCuGGtSQSqfajDQ7
2026-07-11 07:55:26 +08:00
admin and Claude 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 and Claude Sonnet 4.6
b281420810
feat: HSE dashboard with incident stats by type and site
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01AWxyMibCuGGtSQSqfajDQ7
2026-07-11 07:40:22 +08:00
admin and Claude Sonnet 4.6
713556631b
feat: incident detail page with evidence gallery for HSE and supervisor roles
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01AWxyMibCuGGtSQSqfajDQ7
2026-07-11 07:40:06 +08:00
admin and Claude Sonnet 4.6
2f2018f27a
feat: incident inbox pages with filter/search for HSE and supervisor roles
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01AWxyMibCuGGtSQSqfajDQ7
2026-07-11 07:39:43 +08:00
admin
2239b6e2df
feat: email notifications via Resend on new incident
2026-07-10 13:24:44 +08:00
admin
3f8da5bd91
feat: incident report form, API route, middleware shared-route + redirect
2026-07-10 13:19:45 +08:00
admin
8a9758c8a6
feat: Phase 1 foundation - incident components, storage, and migrations
2026-07-10 10:48:56 +08:00
admin and Claude Sonnet 4.6
c3ba543ebb
feat: add protected role dashboard placeholders
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01AWxyMibCuGGtSQSqfajDQ7
2026-07-09 22:32:29 +08:00
admin and Claude Sonnet 4.6
559859470b
feat: add login page and auth callback route
...
- Replace default Next.js home with role-aware root redirect
- Add email/password login form (client component, signInWithPassword)
- Add auth callback route for Supabase code exchange
- Login page at /login, callback at /api/auth/callback
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01AWxyMibCuGGtSQSqfajDQ7
2026-07-09 22:18:21 +08:00
admin
9b5b21381f
chore: fix layout metadata and mark Task 1 complete in ledger
2026-07-09 21:37:23 +08:00
admin
f83686fcca
chore: scaffold Next.js 15 + Supabase clients + vitest
2026-07-09 21:33:59 +08:00