admin and Claude Sonnet 4.6
edb0bde4c5
fix: restore phase4 migration (recheck_round column + WhatsApp app_settings rows)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
2026-07-11 18:51:44 +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
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
ab6299f963
feat: pgvector extension + incidents.embedding column + match_incidents RPC
2026-07-11 16:14:32 +08:00
admin
a718a2ddbb
fix: drop write_audit_log before recreate to handle existing function with different param names
2026-07-11 14:50:03 +08:00
admin
dbbb663611
feat: phase2 migration — triage fields, RCA structured data, write_audit_log RPC
2026-07-11 08:35:51 +08:00
admin
8a9758c8a6
feat: Phase 1 foundation - incident components, storage, and migrations
2026-07-10 10:48:56 +08:00
admin
28957f1e0f
fix: patch critical auth and RLS security findings from final review
2026-07-10 06:01:36 +08:00
admin and Claude Sonnet 4.6
05daf70177
feat: add database schema migrations and seed data
...
8 SQL migration files covering all 10 tables, RLS policies with
SECURITY DEFINER helpers, and seed data for SCW1 site + 3 zones.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01AWxyMibCuGGtSQSqfajDQ7
2026-07-09 21:44:24 +08:00