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 |
|
 adminandClaude 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 |
|
 adminandClaude 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 |
|
 adminandClaude 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 |
|
 adminandClaude 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 |
|
 adminandClaude 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 |
|
 adminandClaude 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 |
|
 adminandClaude 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 |
|
 adminandClaude 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 |
|
 adminandClaude 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 |
|
 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
|
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 |
|
 adminandClaude 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 |
|
 adminandClaude 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 |
|
 adminandClaude 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
|
8a9758c8a6
|
feat: Phase 1 foundation - incident components, storage, and migrations
|
2026-07-10 10:48:56 +08:00 |
|
 adminandClaude 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 |
|