feat(ECR-022): CrisisCare CrisisPolicy 只读并 Closed
新增 crisis_policies、admin.crisis.read、列表/试匹配 API 与 admin-h5「危机」页;禁 CrisisEvent 写/UGC/真支付。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
-- ECR-022 down
|
||||
|
||||
DELETE FROM admin_role_permissions WHERE code = 'admin.crisis.read';
|
||||
DROP TABLE IF EXISTS crisis_policies;
|
||||
@@ -0,0 +1,49 @@
|
||||
-- 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;
|
||||
Reference in New Issue
Block a user