汇总已落盘的借款本金与还款、兼容历史编号的周期化编号、付款责任与回单核验、报销进度和排序、PWA/采购事务、错误原因与日期校验及ERP退役。 统一共享预算池锁序和锁后判断,恢复差旅原预算选择,补原因码固定夹具及反向完整性检查。 纳入配套迁移、测试、受管QA、分层验收合同、规约及任务记录;原始证据留在ignored artifacts。 关联任务:09-17-company-loan-principal-repayment、09-17-erp-exclusive-retirement、09-18-reimbursement-periodic-numbering、09-08-reimbursement-payment-closeout、09-18-local-concurrency-product-fixes、09-19-budget-pool-concurrency、09-05-error-explainability-payment-readiness。 预算补审由Claude定向验证2文件928项通过,原4446/28及r6结果仍仅对应各自历史输入;本轮未重跑测试。 完整新候选门禁、R1真实入口接入与12项公网义务仍开放。生产编号未启用、差旅仍冻结;不推送、不部署,不宣称发布资格。
68 行
2.2 KiB
Bash
68 行
2.2 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
PWA_FIXTURE_ROOT=""
|
|
|
|
pwa_build_candidate() {
|
|
local client_dir="$1"
|
|
local label="$2"
|
|
local build_sha="$3"
|
|
local output_dir="$4"
|
|
local log_file="$5"
|
|
local build_status=0
|
|
|
|
(
|
|
cd "$client_dir"
|
|
NODE_ENV=production VITE_BUILD_SHA="$build_sha" npx vite build --outDir "$output_dir" --emptyOutDir
|
|
) > "$log_file" 2>&1 || build_status="$?"
|
|
|
|
if [[ "$build_status" -ne 0 ]]; then
|
|
echo "[pwa-cross-version][ERROR] build=${label} exit=${build_status}" >&2
|
|
return "$build_status"
|
|
fi
|
|
if [[ ! -f "$output_dir/index.html" || ! -f "$output_dir/sw.js" ]]; then
|
|
echo "[pwa-cross-version][ERROR] build=${label} required_artifact_missing" >&2
|
|
return 1
|
|
fi
|
|
echo "[pwa-cross-version] build=${label} status=PASS"
|
|
}
|
|
|
|
pwa_prepare_fixture() {
|
|
local client_dir="$1"
|
|
local report_dir="$2"
|
|
if [[ -n "$PWA_FIXTURE_ROOT" ]]; then
|
|
echo "[pwa-cross-version][ERROR] fixture_already_owned" >&2
|
|
return 1
|
|
fi
|
|
mkdir -p "$report_dir" || return "$?"
|
|
PWA_FIXTURE_ROOT="$(mktemp -d "${TMPDIR:-/tmp}/hyb-pwa-cross-version.XXXXXX")" || return "$?"
|
|
PWA_BUILD_A_DIR="$PWA_FIXTURE_ROOT/build-a"
|
|
PWA_BUILD_B_DIR="$PWA_FIXTURE_ROOT/build-b"
|
|
PWA_BUILD_A_SHA="111111111111"
|
|
PWA_BUILD_B_SHA="222222222222"
|
|
pwa_build_candidate "$client_dir" A "$PWA_BUILD_A_SHA" "$PWA_BUILD_A_DIR" "$report_dir/pwa-build-a.log" || return "$?"
|
|
pwa_build_candidate "$client_dir" B "$PWA_BUILD_B_SHA" "$PWA_BUILD_B_DIR" "$report_dir/pwa-build-b.log" || return "$?"
|
|
}
|
|
|
|
pwa_with_fixture() {
|
|
if [[ -z "$PWA_FIXTURE_ROOT" || ! -f "${PWA_BUILD_A_DIR:-}/sw.js" || ! -f "${PWA_BUILD_B_DIR:-}/sw.js" ]]; then
|
|
echo "[pwa-cross-version][ERROR] fixture_not_ready" >&2
|
|
return 1
|
|
fi
|
|
PWA_BUILD_A_DIR="$PWA_BUILD_A_DIR" PWA_BUILD_B_DIR="$PWA_BUILD_B_DIR" \
|
|
PWA_BUILD_A_SHA="$PWA_BUILD_A_SHA" PWA_BUILD_B_SHA="$PWA_BUILD_B_SHA" "$@"
|
|
}
|
|
|
|
pwa_cleanup_fixture() {
|
|
if [[ -z "$PWA_FIXTURE_ROOT" ]]; then
|
|
return 0
|
|
fi
|
|
if [[ "$(basename "$PWA_FIXTURE_ROOT")" != hyb-pwa-cross-version.* ]]; then
|
|
echo "[pwa-cross-version][ERROR] fixture_cleanup_refused" >&2
|
|
return 1
|
|
fi
|
|
if [[ -d "$PWA_FIXTURE_ROOT" ]]; then
|
|
find "$PWA_FIXTURE_ROOT" -xdev -depth -delete || return "$?"
|
|
fi
|
|
PWA_FIXTURE_ROOT=""
|
|
}
|