From b5703c87233c115d66a123a27a3b30b5a7a333b0 Mon Sep 17 00:00:00 2001 From: "agent.develop" Date: Tue, 13 Oct 2026 15:13:55 +0800 Subject: [PATCH] =?UTF-8?q?approve:=20Bug=204Sxq=E2=80=A6=20=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=9C=BA=E6=94=B6=E5=8F=A3=EF=BC=9Afix=5Fbug=20?= =?UTF-8?q?=E6=B5=81=E8=BD=AC=20fixed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.sh | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/build.sh b/build.sh index 130dbc8..981b750 100755 --- a/build.sh +++ b/build.sh @@ -583,6 +583,74 @@ assert s2['groups'] == 8 and s2['items'] == 74, '第 2 轮种子契约不满足' print('[seed] 幂等零差异校验通过: 8 组 74 项') PYEOF +# ---- 12.1 pbl_template 离线兜底模板种子(幂等)---- +log "pbl_template 种子注入(tpl_offline_default)" +"${PY}" - <<'PYEOF_SEED_TEMPLATE' +import json, asyncio, os, sys +_WS = os.environ.get('SEED_WS_DIR', '/d/pipeline/workspaces/0/sdlc_general') +for _p in (os.path.join(_WS, 'modules', 'pbl_common'), os.path.join(_WS, 'modules', 'pbl_template'), os.path.join(_WS, 'pkgs'), '/d/pipeline/binpkg_overlay'): + if os.path.isdir(_p) and _p not in sys.path: + sys.path.insert(0, _p) +os.chdir(os.environ.get('SEED_APP_DIR', os.getcwd())) +from pbl_template.seed import seed_all_sync, seed_templates +# 先跑 async 版(在 seed 段同 loop 内,确保连接池一致) +async def _seed(): + r1 = await seed_templates() + print('[seed.tpl round1]', json.dumps(r1, ensure_ascii=False, sort_keys=True)) + r2 = await seed_templates() + print('[seed.tpl round2]', json.dumps(r2, ensure_ascii=False, sort_keys=True)) + return r1, r2 +s1, s2 = asyncio.run(_seed()) +assert s1['ok'] is True, 'pbl_template 第 1 轮种子失败: %s' % s1.get('errors', []) +assert s2['ok'] is True and s2['templates_inserted'] == 0 and s2['items_inserted'] == 0, \ + 'pbl_template 重复执行有差异(幂等失败)' +print('[seed.tpl] 幂等零差异校验通过: tpl=%d items=%d' % (s1['templates_inserted'], s1['items_inserted'])) +PYEOF_SEED_TEMPLATE + +# ---- 12.2 pbl_assessment 默认量规种子(幂等)---- +log "pbl_assessment 种子注入(rubric_default_5level)" +"${PY}" - <<'PYEOF_SEED_ASSESS' +import json, asyncio, os, sys +_WS = os.environ.get('SEED_WS_DIR', '/d/pipeline/workspaces/0/sdlc_general') +for _p in (os.path.join(_WS, 'modules', 'pbl_common'), os.path.join(_WS, 'modules', 'pbl_assessment'), os.path.join(_WS, 'pkgs'), '/d/pipeline/binpkg_overlay'): + if os.path.isdir(_p) and _p not in sys.path: + sys.path.insert(0, _p) +os.chdir(os.environ.get('SEED_APP_DIR', os.getcwd())) +from pbl_assessment.seed import seed_rubrics, seed_all_sync +async def _seed(): + r1 = await seed_rubrics() + print('[seed.rubric round1]', json.dumps(r1, ensure_ascii=False, sort_keys=True)) + r2 = await seed_rubrics() + print('[seed.rubric round2]', json.dumps(r2, ensure_ascii=False, sort_keys=True)) + return r1, r2 +s1, s2 = asyncio.run(_seed()) +assert s1['ok'] is True, 'pbl_assessment 第 1 轮种子失败: %s' % s1.get('errors', []) +assert s2['ok'] is True and s2['rubrics_inserted'] == 0 and s2['criteria_inserted'] == 0, \ + 'pbl_assessment 重复执行有差异(幂等失败)' +print('[seed.rubric] 幂等零差异校验通过: rubric=%d criteria=%d' % (s1['rubrics_inserted'], s1['criteria_inserted'])) +PYEOF_SEED_ASSESS + +# ---- 12.3 pbl_validation 内置 14 维规则种子(幂等)---- +log "pbl_validation 种子注入(vrs_14dim_v1)" +"${PY}" - <<'PYEOF_SEED_VALIDATE' +import json, os, sys +_WS = os.environ.get('SEED_WS_DIR', '/d/pipeline/workspaces/0/sdlc_general') +for _p in (os.path.join(_WS, 'modules', 'pbl_common'), os.path.join(_WS, 'modules', 'pbl_validation'), os.path.join(_WS, 'pkgs'), '/d/pipeline/binpkg_overlay'): + if os.path.isdir(_p) and _p not in sys.path: + sys.path.insert(0, _p) +os.chdir(os.environ.get('SEED_APP_DIR', os.getcwd())) +from pbl_validation.init import seed_builtin_rules +# seed_builtin_rules 是同步 def,直接调用 +s1 = seed_builtin_rules(dbname=None, tenant_id='') +print('[seed.validate round1] seeded=%d' % s1) +s2 = seed_builtin_rules(dbname=None, tenant_id='') +print('[seed.validate round2] seeded=%d' % s2) +assert s2 == 0, 'pbl_validation 重复执行有差异(幂等失败,第 2 轮 seeded=%d != 0)' % s2 +print('[seed.validate] 幂等零差异校验通过: rules=%d (vrs_14dim_v1)' % s1) +PYEOF_SEED_VALIDATE + + + # ---- 12.5 RBAC 路径注册(Bug WIu0Rkn0KwB0XTjYZz0qk 修复:原脚本从不注册)---- # 中央聚合器 apps/pbls/scripts/load_path.py 把各模块 + 宿主自有端点(含本次新增的 # /healthz、/healthz.dspy、/api/public/health)逐条写入 permission/rolepermission。