From 61b441769538e932239c0a2008fd3c5552ab9fda Mon Sep 17 00:00:00 2001 From: wangbo Date: Fri, 31 Jul 2026 04:31:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(acceptance):=20=E7=BB=A7=E6=89=BF=E5=88=86?= =?UTF-8?q?=E7=89=87=E8=BA=AB=E4=BB=BD=E7=9A=84=E9=AA=8C=E6=94=B6=E8=A7=92?= =?UTF-8?q?=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 分片 API Key 已具有正确 scopes 和候选规则,但空角色无法通过基础接口权限检查。创建和重用分片身份时同步主验收用户角色,保持专属用户组与钱包隔离不变。\n\n验证:bash -n、ShellCheck。 --- scripts/cluster/run-production-acceptance.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/cluster/run-production-acceptance.sh b/scripts/cluster/run-production-acceptance.sh index 74ff968..6181e15 100755 --- a/scripts/cluster/run-production-acceptance.sh +++ b/scripts/cluster/run-production-acceptance.sh @@ -429,7 +429,13 @@ ensure_acceptance_identity_shards() { return 1 } identity_material=$(database_query " -WITH desired AS ( +WITH primary_user AS ( + SELECT roles + FROM gateway_users + WHERE id='$AI_GATEWAY_ACCEPTANCE_USER_ID'::uuid + AND status='active' + AND deleted_at IS NULL +), desired AS ( SELECT ordinal, 'production-acceptance-shard-' || lpad(ordinal::text, 3, '0') AS user_key FROM generate_series(1, $((AI_GATEWAY_ACCEPTANCE_IDENTITY_SHARDS - 1))) ordinal @@ -443,7 +449,7 @@ WITH desired AS ( desired.user_key, 'Production Acceptance Shard ' || lpad(desired.ordinal::text, 3, '0'), '$acceptance_group_id'::uuid, - '[]'::jsonb, + primary_user.roles, '{}'::jsonb, jsonb_build_object( 'purpose', 'production_acceptance_shard', @@ -452,8 +458,10 @@ WITH desired AS ( ), 'active' FROM desired + CROSS JOIN primary_user ON CONFLICT (user_key) DO UPDATE SET default_user_group_id=EXCLUDED.default_user_group_id, + roles=EXCLUDED.roles, metadata=EXCLUDED.metadata, status='active', deleted_at=NULL,