From dededc582415c23d333da7fbaff35a18c35fb8d5 Mon Sep 17 00:00:00 2001 From: bingshuo <565183519@qq.com> Date: Thu, 21 May 2026 17:43:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20add=20access=5Fgrants=20table=20[D109]?= =?UTF-8?q?=20dynamic=20permission=20interface=20(=E5=86=B0=E6=9C=94?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E7=94=9F=E6=88=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- persona-brain-db/schema/15-access-grants.sql | 26 ++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 persona-brain-db/schema/15-access-grants.sql diff --git a/persona-brain-db/schema/15-access-grants.sql b/persona-brain-db/schema/15-access-grants.sql new file mode 100644 index 0000000..974e03f --- /dev/null +++ b/persona-brain-db/schema/15-access-grants.sql @@ -0,0 +1,26 @@ +-- ============================================================ +-- 表15:access_grants(访问权限表) +-- 用途:动态权限接口,由冰朔手动生成 +-- 冰朔权限控制三层:对国家系统逻辑完全透明 → 国家系统逻辑审核 → 光湖团队审核 → 冰朔本人 +-- ============================================================ + +CREATE TABLE IF NOT EXISTS access_grants ( + grant_id VARCHAR(64) PRIMARY KEY, + grantee_type VARCHAR(16) NOT NULL + CHECK (grantee_type IN ('persona', 'system', 'national', 'user', 'emergency')), + grantee_id VARCHAR(64) NOT NULL, + resource_type VARCHAR(32) NOT NULL, + resource_id VARCHAR(64), + permissions TEXT NOT NULL, -- JSON array of permissions + grant_conditions TEXT, -- JSON object of conditions + valid_from TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + valid_until TIMESTAMP, + issued_by VARCHAR(64) NOT NULL, + status VARCHAR(16) NOT NULL DEFAULT 'active' + CHECK (status IN ('active', 'revoked', 'expired')), + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX IF NOT EXISTS idx_ag_grantee ON access_grants(grantee_type, grantee_id); +CREATE INDEX IF NOT EXISTS idx_ag_resource ON access_grants(resource_type, resource_id); +CREATE INDEX IF NOT EXISTS idx_ag_status ON access_grants(status);