fix(build): 8d 基座包 wwwroot 挂载(owner 手动修复,Bug KMzNP/Vt3D8nvl/CJij/LSyc 根因闭环)

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。
This commit is contained in:
agent.develop 2026-09-30 20:51:10 +08:00
parent 84207b4d5d
commit d9e1094d0c

View File

@ -323,6 +323,32 @@ done
[ -n "${LINKED_MODULES}" ] || die "未发现任何含 wwwroot/ 的 pbl_* 模块,模块 wwwroot 挂载为空" [ -n "${LINKED_MODULES}" ] || die "未发现任何含 wwwroot/ 的 pbl_* 模块,模块 wwwroot 挂载为空"
log "模块 wwwroot 软链挂载完成:${LINKED_MODULES}" 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:-<empty>}(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 路径取到 # 挂载后应用侧可达性门禁:覆盖层页面壳必须能通过应用 wwwroot 路径取到
APP_OVERLAY_DIR="${APP_DIR}/wwwroot/pbl_scense_ext/pbl_overlay" APP_OVERLAY_DIR="${APP_DIR}/wwwroot/pbl_scense_ext/pbl_overlay"
APP_UI_COUNT=0 APP_UI_COUNT=0