approve: Bug 4Sxq… 状态机收口:fix_bug 流转 fixed

This commit is contained in:
agent.develop 2026-10-13 15:13:55 +08:00
parent d9e1094d0c
commit b5703c8723

View File

@ -583,6 +583,74 @@ assert s2['groups'] == 8 and s2['items'] == 74, '第 2 轮种子契约不满足'
print('[seed] 幂等零差异校验通过: 8 组 74 项') print('[seed] 幂等零差异校验通过: 8 组 74 项')
PYEOF 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 修复:原脚本从不注册)---- # ---- 12.5 RBAC 路径注册(Bug WIu0Rkn0KwB0XTjYZz0qk 修复:原脚本从不注册)----
# 中央聚合器 apps/pbls/scripts/load_path.py 把各模块 + 宿主自有端点(含本次新增的 # 中央聚合器 apps/pbls/scripts/load_path.py 把各模块 + 宿主自有端点(含本次新增的
# /healthz、/healthz.dspy、/api/public/health)逐条写入 permission/rolepermission。 # /healthz、/healthz.dspy、/api/public/health)逐条写入 permission/rolepermission。