diff --git a/deploy/fba/build-ui.sh b/deploy/fba/build-ui.sh new file mode 100644 index 0000000..804dc26 --- /dev/null +++ b/deploy/fba/build-ui.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# ============================================================================= +# iAOP FBA UI 构建流水线(Epic #163 / issue #164 [A1]) +# +# 用法: +# ./deploy/fba/build-ui.sh [--src DIR] [--out DIR] +# --src FBA UI 工程目录(默认 deploy/fba/fba-ui-src) +# --out 产物输出目录(默认 deploy/fba/artifacts) +# +# 流程:pnpm install → 生产构建 → 打 tar 到 artifacts/ +# 产物:artifacts/fba-ui-dist.tar.gz(解压后 dist/ 即 nginx 站点目录) +# +# 环境要求:Node.js >= 18.18、pnpm >= 9(Vben5 monorepo) +# ============================================================================= +set -euo pipefail + +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +SRC="${SRC_DIR:-$ROOT/deploy/fba/fba-ui-src}" +OUT="${OUT_DIR:-$ROOT/deploy/fba/artifacts}" +APP_DIR="$SRC/apps/web-antdv-next" + +# 1) 参数校验 +[ -d "$APP_DIR" ] || { echo "[fail] 未找到 UI 工程: $APP_DIR"; exit 1; } +mkdir -p "$OUT" + +# 2) 环境检查 +command -v node >/dev/null || { echo "[fail] 缺少 node(>=18.18)"; exit 1; } +command -v pnpm >/dev/null || { echo "[fail] 缺少 pnpm(>=9),请先安装: npm i -g pnpm"; exit 1; } + +echo "[1/4] 依赖安装(pnpm install)..." +cd "$SRC" +pnpm install --frozen-lockfile=false + +echo "[2/4] 生产构建(web-antdv-next)..." +cd "$APP_DIR" +pnpm run build + +echo "[3/4] 打包 dist/ -> $OUT/fba-ui-dist.tar.gz" +cd "$APP_DIR" +tar -czf "$OUT/fba-ui-dist.tar.gz" dist/ + +echo "[4/4] 完成:$OUT/fba-ui-dist.tar.gz" +ls -lh "$OUT/fba-ui-dist.tar.gz" diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/.env.production b/deploy/fba/fba-ui-src/apps/web-antdv-next/.env.production index 403946b..6210ad5 100644 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/.env.production +++ b/deploy/fba/fba-ui-src/apps/web-antdv-next/.env.production @@ -1,10 +1,16 @@ -VITE_BASE=/ +# ===== Epic #163 / #164:构建参数模板化 ===== +# 构建/部署时按环境替换(部署见 deploy/fba/build-ui.sh) +# 1) VITE_BASE:FBA UI 挂载前缀(nginx /fba-admin/ 反代) +VITE_BASE=/fba-admin/ -# 接口地址 -VITE_GLOB_API_URL=https://fba.wu-clan.site +# 2) VITE_GLOB_API_URL:后端 API 基础地址(nginx 反代 /fba/ → fba_server:8001) +VITE_GLOB_API_URL=http://39.101.182.167:8090/fba + +# 3) VITE_APP_TITLE:浏览器标题(iAOP 品牌,preferences.ts 已固定,可覆盖) +VITE_APP_TITLE=iAOP 云美工业AI优化平台 # 是否开启压缩,可以设置为 none, brotli, gzip -VITE_COMPRESS=gzip +VITE_COMPRESS=none # 是否开启 PWA VITE_PWA=false diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/preferences.ts b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/preferences.ts index 9300d45..f34c713 100644 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/preferences.ts +++ b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/preferences.ts @@ -9,14 +9,25 @@ export const overridesPreferences = defineOverridesPreferences({ // overrides app: { accessMode: 'backend', - name: import.meta.env.VITE_APP_TITLE, + name: 'iAOP 云美工业AI优化平台', enableRefreshToken: true, + // Epic #163:登录后默认落驾驶舱(路由由后端菜单下发,views/iaop/cockpit) + defaultHomePath: '/iaop/cockpit', }, footer: { enable: false, }, logo: { - source: 'https://wu-clan.github.io/picx-images-hosting/logo/fba.png', + // iAOP 文字徽标(内联 SVG,避免外部图片依赖) + source: + 'data:image/svg+xml;utf8,' + + encodeURIComponent( + `` + + `` + + `i` + + `` + + ``, + ), }, shortcutKeys: { enable: false, diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/router/routes/modules/dashboard.ts b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/router/routes/modules/dashboard.ts deleted file mode 100644 index 5254dc6..0000000 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/router/routes/modules/dashboard.ts +++ /dev/null @@ -1,38 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { $t } from '#/locales'; - -const routes: RouteRecordRaw[] = [ - { - meta: { - icon: 'lucide:layout-dashboard', - order: -1, - title: $t('page.dashboard.title'), - }, - name: 'Dashboard', - path: '/dashboard', - children: [ - { - name: 'Analytics', - path: '/analytics', - component: () => import('#/views/dashboard/analytics/index.vue'), - meta: { - affixTab: true, - icon: 'lucide:area-chart', - title: $t('page.dashboard.analytics'), - }, - }, - { - name: 'Workspace', - path: '/workspace', - component: () => import('#/views/dashboard/workspace/index.vue'), - meta: { - icon: 'carbon:workspace', - title: $t('page.dashboard.workspace'), - }, - }, - ], - }, -]; - -export default routes; diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/router/routes/modules/demos.ts b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/router/routes/modules/demos.ts deleted file mode 100644 index 4605d91..0000000 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/router/routes/modules/demos.ts +++ /dev/null @@ -1,28 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { $t } from '#/locales'; - -const routes: RouteRecordRaw[] = [ - { - meta: { - icon: 'ic:baseline-view-in-ar', - keepAlive: true, - order: 1000, - title: $t('demos.title'), - }, - name: 'Demos', - path: '/demos', - children: [ - { - meta: { - title: $t('demos.antd'), - }, - name: 'AntDesignDemos', - path: '/demos/ant-design-next', - component: () => import('#/views/demos/antd/index.vue'), - }, - ], - }, -]; - -export default routes; diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-trends.vue b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-trends.vue deleted file mode 100644 index f1f0b23..0000000 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-trends.vue +++ /dev/null @@ -1,98 +0,0 @@ - - - diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits-data.vue b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits-data.vue deleted file mode 100644 index 190fb41..0000000 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits-data.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits-sales.vue b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits-sales.vue deleted file mode 100644 index 6ff5208..0000000 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits-sales.vue +++ /dev/null @@ -1,46 +0,0 @@ - - - diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits-source.vue b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits-source.vue deleted file mode 100644 index 0915c7a..0000000 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits-source.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits.vue b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits.vue deleted file mode 100644 index 7e0f101..0000000 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/analytics-visits.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/index.vue b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/index.vue deleted file mode 100644 index e794c99..0000000 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/analytics/index.vue +++ /dev/null @@ -1,90 +0,0 @@ - - - diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/workspace/index.vue b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/workspace/index.vue deleted file mode 100644 index b95d613..0000000 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/dashboard/workspace/index.vue +++ /dev/null @@ -1,266 +0,0 @@ - - - diff --git a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/demos/antd/index.vue b/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/demos/antd/index.vue deleted file mode 100644 index 6fb1998..0000000 --- a/deploy/fba/fba-ui-src/apps/web-antdv-next/src/views/demos/antd/index.vue +++ /dev/null @@ -1,66 +0,0 @@ - - -