merge: modular-decouple residual goose 00065

This commit is contained in:
WeiCHEN
2026-09-23 10:15:20 +08:00
2 changed files with 53 additions and 3 deletions
@@ -2,7 +2,7 @@
title: "模块解耦残余重构(巨型文件 + W4 + Sysadmin 二期)"
task_id: modular-decouple-residual-b-2026-09-23
continues: modular-decouple-residual-2026-09-23
status: in_progress
status: done
# prior task closed for scope expand (deploy); continued by -b
created: 2026-09-23
updated: 2026-09-23
@@ -17,8 +17,8 @@ write_scope: ["internal", "scripts", "web", ".doc"]
allowed_environments: []
head_sha: "3337bf4a4298cc0e50b2cc867a7f39d66cdd3275"
mutex: "modular-decouple-residual"
review_state: pending
integration_state: pending
review_state: accepted_gates
integration_state: landed_local_dev_701c565f
deployment: not_required
cleanup: pending
cleanup_owner: "独立维护者"
@@ -0,0 +1,50 @@
-- +goose Up
-- 系统管理台二期:细粒度 system:* 权限 + 通用设置审计表。
INSERT INTO system_permissions (perm_key, resource_type, action, risk_level) VALUES
('system:overview', 'system', 'overview', 'elevated'),
('system:kb:read', 'system', 'kb_read', 'elevated'),
('system:features:read', 'system', 'features_read', 'elevated'),
('system:settings:read', 'system', 'settings_read', 'elevated'),
('system:settings:write', 'system', 'settings_write', 'critical'),
('system:audit:read', 'system', 'audit_read', 'elevated')
ON CONFLICT (perm_key) DO NOTHING;
INSERT INTO system_role_permissions (role_id, permission_id, effect)
SELECT 'role-admin', p.id, 'allow'
FROM system_permissions p
WHERE p.perm_key IN (
'system:overview',
'system:kb:read',
'system:features:read',
'system:settings:read',
'system:settings:write',
'system:audit:read'
)
ON CONFLICT DO NOTHING;
CREATE TABLE IF NOT EXISTS system_settings_audits (
id BIGSERIAL PRIMARY KEY,
setting_key TEXT NOT NULL,
before_value JSONB,
after_value JSONB NOT NULL,
actor_user_id BIGINT NOT NULL,
request_id TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_system_settings_audits_key_created
ON system_settings_audits (setting_key, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_system_settings_audits_created
ON system_settings_audits (created_at DESC);
-- +goose Down
DROP INDEX IF EXISTS idx_system_settings_audits_created;
DROP INDEX IF EXISTS idx_system_settings_audits_key_created;
DROP TABLE IF EXISTS system_settings_audits;
DELETE FROM system_role_permissions
WHERE permission_id IN (
SELECT id FROM system_permissions WHERE perm_key LIKE 'system:%'
);
DELETE FROM system_permissions WHERE perm_key LIKE 'system:%';