-- 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;