From d9e1094d0cf34ed12f2a41277410f3b37094de32 Mon Sep 17 00:00:00 2001 From: "agent.develop" Date: Wed, 30 Sep 2026 20:51:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(build):=208d=20=E5=9F=BA=E5=BA=A7=E5=8C=85?= =?UTF-8?q?=20wwwroot=20=E6=8C=82=E8=BD=BD=EF=BC=88owner=20=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E4=BF=AE=E5=A4=8D=EF=BC=8CBug=20KMzNP/Vt3D8nvl/CJij/L?= =?UTF-8?q?Syc=20=E6=A0=B9=E5=9B=A0=E9=97=AD=E7=8E=AF=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit wheelhouse 基座 wheel 不含 wwwroot(rbac wheel wwwroot=0),venv editable 安装使代码可达 但 rbac 登录页与 bricks dist(header.tmpl) 从未挂进应用 wwwroot → index.ui 渲染 /bricks/header.tmpl 时 processor=None → 根路径与 /rbac/user/login.ui 全 500。 按宿主 9090 同款软链挂载:rbac wwwroot 经 PKGS_DIR 运行时定位(editable 源), bricks dist 用全机唯一绝对路径(pbl 用户实测可读)。挂载后目标机实测: /rbac/user/login.ui=200、/=200、/healthz=200。 --- build.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/build.sh b/build.sh index 2161794..130dbc8 100755 --- a/build.sh +++ b/build.sh @@ -323,6 +323,32 @@ done [ -n "${LINKED_MODULES}" ] || die "未发现任何含 wwwroot/ 的 pbl_* 模块,模块 wwwroot 挂载为空" log "模块 wwwroot 软链挂载完成:${LINKED_MODULES}" +# ---- 8d. 平台基座包 wwwroot 挂载(软链)+ 可达性门禁(owner 2026-09-30 手动修复)---- +# 根因(Bug KMzNPfKwI7Byk2SzLR / Vt3D8nvlALCIbdye / CJijeS7Mz6UekBB_YwNuR / LSycNWkqDbOlAeqSSna5z): +# wheelhouse 基座 wheel 只含 .py(rbac wheel 14 文件、wwwroot=0),venv editable 安装使 Python +# 代码可达(healthz/dspy 200),但 rbac 登录页与 bricks dist(header.tmpl/bricks.js)等基座包 +# wwwroot 静态资源从未挂进应用 wwwroot/ → index.ui 渲染 /bricks/header.tmpl 时 fpath=None → +# processor None → be_call AttributeError → 根路径与 /rbac/user/login.ui 全 500。 +# 宿主 9090 正确参照即 wwwroot/rbac→pkgs/rbac/wwwroot、wwwroot/bricks→pkgs/bricks/dist 两条软链。 +# 定位方式(2026-09-30 pbl 用户实测):PKGS_DIR 经 editable 源运行时定位(→ scense/pkgs, +# pbl 可读 rbac/wwwroot/user/login.ui);bricks dist 全机唯一在 +# /d/pipeline/pipeline-app/pkgs/bricks/dist(scense/pkgs 下无 bricks),pbl 实测可读 header.tmpl。 +# 实测结果:挂载后 /rbac/user/login.ui=200、/=200、/healthz=200(平台约定登录路径是 +# /rbac/user/login.ui,非 /main/rbac/ 前缀——宿主实测 /main/ 前缀本身也 500)。 +BASE_PKGS_DIR="$("${PY}" -c 'import rbac,os;print(os.path.dirname(os.path.dirname(rbac.__file__)))' 2>/dev/null)" +BRICKS_DIST="/d/pipeline/pipeline-app/pkgs/bricks/dist" +[ -n "${BASE_PKGS_DIR}" ] && [ -d "${BASE_PKGS_DIR}/rbac/wwwroot" ] || die "基座 rbac wwwroot 定位失败: BASE_PKGS_DIR=${BASE_PKGS_DIR:-}(editable 源不可达?)" +[ -f "${BRICKS_DIST}/header.tmpl" ] || die "bricks dist 不可达: ${BRICKS_DIST}/header.tmpl 不存在(若部署用户无权限,参照 wheelhouse 先例 chmod o+rX + 父链 o+x)" +if [ -e "${APP_DIR}/wwwroot/rbac" ] && [ ! -L "${APP_DIR}/wwwroot/rbac" ]; then + die "wwwroot/rbac 已存在且不是软链(应用仓自带目录?),请人工处置后重试" +fi +if [ -e "${APP_DIR}/wwwroot/bricks" ] && [ ! -L "${APP_DIR}/wwwroot/bricks" ]; then + die "wwwroot/bricks 已存在且不是软链(应用仓自带目录?),请人工处置后重试" +fi +ln -sfn "${BASE_PKGS_DIR}/rbac/wwwroot" "${APP_DIR}/wwwroot/rbac" +ln -sfn "${BRICKS_DIST}" "${APP_DIR}/wwwroot/bricks" +log "基座包 wwwroot 挂载完成: rbac→${BASE_PKGS_DIR}/rbac/wwwroot bricks→${BRICKS_DIST}" + # 挂载后应用侧可达性门禁:覆盖层页面壳必须能通过应用 wwwroot 路径取到 APP_OVERLAY_DIR="${APP_DIR}/wwwroot/pbl_scense_ext/pbl_overlay" APP_UI_COUNT=0