Files
digital-psychology/apps/api/migrations/000023_crisis_policies.up.sql
T
jackyu66gitandCursor de224184a6 feat(ECR-022): CrisisCare CrisisPolicy 只读并 Closed
新增 crisis_policies、admin.crisis.read、列表/试匹配 API 与 admin-h5「危机」页;禁 CrisisEvent 写/UGC/真支付。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 01:28:45 +08:00

50 lines
1.4 KiB
SQL

-- ECR-022 CrisisCare CrisisPolicy
CREATE TABLE IF NOT EXISTS crisis_policies (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
code varchar(64) NOT NULL UNIQUE,
title varchar(128) NOT NULL,
severity varchar(16) NOT NULL
CHECK (severity IN ('high','critical')),
pattern text NOT NULL,
action varchar(32) NOT NULL
CHECK (action IN ('escalate','block','show_helpline')),
helpline_text text NULL,
active boolean NOT NULL DEFAULT true,
system boolean NOT NULL DEFAULT false,
created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_crisis_policies_active ON crisis_policies(active);
INSERT INTO crisis_policies(code, title, severity, pattern, action, helpline_text, active, system)
VALUES
(
'self_harm_critical',
'自伤/轻生危机',
'critical',
'不想活了',
'show_helpline',
'若你正处于危机,请立即联系身边可信的人,或拨打当地紧急援助/心理援助热线。愈心谷不能替代急救与专业干预。',
true,
true
),
(
'violence_threat',
'暴力伤害威胁',
'high',
'弄死你',
'escalate',
NULL,
true,
true
)
ON CONFLICT (code) DO NOTHING;
INSERT INTO admin_role_permissions(role_id, code)
SELECT r.id, 'admin.crisis.read'
FROM admin_roles r
WHERE r.name = 'super_admin'
ON CONFLICT DO NOTHING;