fix(rc5): harden frontend runtime and diagnostics

This commit is contained in:
2026-09-08 05:22:06 +05:00
parent 079094591b
commit b7e478f014
26 changed files with 707 additions and 169 deletions
+19 -4
View File
@@ -64,7 +64,7 @@ run_orchestrator_tests() {
}
run_frontend_tests() {
# Контракты панели, которые не проверяются ни типами, ни сборкой bundle:
# Ранние контракты панели, которые не требуют установленных зависимостей:
# цвет иконок в спрайте, совпадение словарей локализации, соответствие кодов
# ошибок серверным константам, единственность адреса атрибуции.
#
@@ -80,8 +80,8 @@ run_frontend_tests() {
"$BUN_BIN" test tools/test/frontend-sprite.test.ts tools/test/frontend-contract.test.ts \
|| fail "HY2XS admin frontend contract tests failed"
FRONTEND_TESTS_PASSED="true"
export FRONTEND_TESTS_PASSED
FRONTEND_CONTRACT_TESTS_PASSED="true"
export FRONTEND_CONTRACT_TESTS_PASSED
}
run_admin_tests() {
@@ -146,6 +146,9 @@ build_orchestrator() {
bundle_ui() {
local ui_src="${UI_SRC:-apps}"
[ "${FRONTEND_CONTRACT_TESTS_PASSED:-false}" = "true" ] \
|| fail "bundle_ui: ранние контракты панели не проверялись"
rm -rf "$ADMIN_BUILD_DIR"
mkdir -p "$ADMIN_BUILD_DIR"
@@ -164,6 +167,12 @@ bundle_ui() {
"$PNPM_BIN" install --frozen-lockfile
# Словари являются JavaScript-объектами и компилируются vue-i18n только
# при вызове t(). Поэтому ни vue-tsc, ни Vite не видят синтаксическую
# ошибку сообщения. Gate использует тот же установленный runtime, обходит
# все строки обоих языков и выполняется до typecheck и production bundle.
"$BUN_BIN" test test/i18n-runtime.test.ts
# Проверка типов идёт ПЕРЕД сборкой bundle, и это обязательный шаг релиза.
#
# Раньше её здесь не было вовсе: `build:prod` означал
@@ -176,7 +185,7 @@ bundle_ui() {
# кода, который не проходит проверку типов, нет.
"$PNPM_BIN" run typecheck
"$PNPM_BIN" run build:prod
)
) || fail "HY2XS admin frontend runtime tests or bundle failed"
# Версия админки приходит из versions.env через ldflags: один и тот же
# исполняемый файл обязан знать версию пакета, из которого он собран.
@@ -196,6 +205,12 @@ bundle_ui() {
mkdir -p "$STAGE_DIR/ui/hy2xs-admin/docs/sql"
install -m 0644 "$ui_src/docs/sql/schema.sql" "$STAGE_DIR/ui/hy2xs-admin/docs/sql/schema.sql"
fi
# Оба утверждения выставляются только после dependency-free контрактов,
# runtime-компиляции словарей и успешной сборки production bundle.
FRONTEND_RUNTIME_TESTS_PASSED="true"
FRONTEND_TESTS_PASSED="true"
export FRONTEND_RUNTIME_TESTS_PASSED FRONTEND_TESTS_PASSED
}
write_metadata() {