From 221845723722ba8d778eeffa508965c9c6acfaff Mon Sep 17 00:00:00 2001 From: yinjianm Date: Fri, 24 Apr 2026 23:31:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(admin-frontend):=20=E8=A1=A5=E9=BD=90?= =?UTF-8?q?=E7=8B=AC=E7=AB=8B=E5=89=8D=E7=AB=AF=E5=AE=B9=E5=99=A8=E7=9A=84?= =?UTF-8?q?=20api=20=E4=BB=A3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为 Caddy 增加 /api 到后端 web 服务的反向代理, 避免独立静态前端容器无法直连 Laravel API。 同时同步知识库上下文,记录 compose 分支使用 XBOARD_BACKEND_UPSTREAM=http://web:7001 的默认约定。 --- .helloagents/CHANGELOG.md | 5 +++++ .helloagents/context.md | 1 + .helloagents/modules/admin-frontend.md | 1 + .helloagents/sessions/master/default/STATE.md | 21 +++++++++---------- admin-frontend/Caddyfile | 5 +++++ 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/.helloagents/CHANGELOG.md b/.helloagents/CHANGELOG.md index f06ae19..ef6fe97 100644 --- a/.helloagents/CHANGELOG.md +++ b/.helloagents/CHANGELOG.md @@ -7,6 +7,11 @@ - 方案: [202604242245_admin-frontend-node-pagination-batch-edit](archive/2026-04/202604242245_admin-frontend-node-pagination-batch-edit/) - 决策: admin-frontend-node-pagination-batch-edit#D001(节点分页采用前端本地分页), admin-frontend-node-pagination-batch-edit#D002(批量修改范围固定为已勾选节点), admin-frontend-node-pagination-batch-edit#D003(置顶节点复用 server/manage/sort) +### 快速修改 +- **[admin-frontend]**: 为独立 `xboard-admin-frontend` 容器补齐 `/api` 反向代理到后端 `web` 服务的链路,并在 compose 分支 `admin` 服务中显式声明 `XBOARD_BACKEND_UPSTREAM=http://web:7001`;同时把镜像名对齐到当前 fork `ghcr.io/micah123321/*` — by yinjianm + - 类型: 快速修改(无方案包) + - 文件: admin-frontend/Caddyfile:1-17, E:/code/php/Xboard-new-compose/compose.yaml:1-26 + ## [0.5.8] - 2026-04-24 ### 新增 diff --git a/.helloagents/context.md b/.helloagents/context.md index 0e1e15a..76b209c 100644 --- a/.helloagents/context.md +++ b/.helloagents/context.md @@ -11,6 +11,7 @@ - 管理端前端位于 `admin-frontend/` - `admin-frontend` 现支持通过 `ADMIN_BUILD_OUT_DIR` 覆写构建输出目录:仓内默认仍写到 `../public/assets/admin`,容器构建可切到独立 `dist` - 前端容器化运行采用 `admin-frontend/Dockerfile`(`Node 20 + Caddy` 多阶段构建),静态站点入口重定向到 `/assets/admin/` +- 前端容器会通过 `XBOARD_BACKEND_UPSTREAM` 把 `/api` 反向代理到后端 `web` 服务;compose 分支当前默认值为 `http://web:7001` - GHCR 前端镜像发布工作流位于 `.github/workflows/admin-frontend-docker-publish.yml`,镜像名为 `ghcr.io//xboard-admin-frontend` - 管理端 API 通过 `window.settings.secure_path` 或 `VITE_ADMIN_PATH` 解析 `/api/v2/{secure_path}` 前缀 - 登录接口复用 `/api/v2/passport/auth/login` diff --git a/.helloagents/modules/admin-frontend.md b/.helloagents/modules/admin-frontend.md index f59f531..c3f57c6 100644 --- a/.helloagents/modules/admin-frontend.md +++ b/.helloagents/modules/admin-frontend.md @@ -11,6 +11,7 @@ - 默认构建输出仍为主仓 `public/assets/admin`;当 `ADMIN_BUILD_OUT_DIR` 存在时,构建输出需切换到外部指定目录,供容器镜像独立打包 - 独立容器运行时通过 `Caddyfile` 把根路径重定向到 `/assets/admin/`,避免当前 `base: '/assets/admin/'` 资源前缀失效 +- 独立容器运行时会把 `/api` 反向代理到 `XBOARD_BACKEND_UPSTREAM`,compose 分支默认指向 `http://web:7001`,确保前端静态容器仍能直连 Laravel 后端 - 前端 GHCR 发布链路与 Laravel 主应用发布链路分离,避免把静态前端构建耦合进现有 PHP 镜像工作流 - 登录成功后优先跳转 `redirect` 指定路由,否则回到 `/dashboard` - 受保护路由在未登录时会自动附加 `redirect` 查询参数 diff --git a/.helloagents/sessions/master/default/STATE.md b/.helloagents/sessions/master/default/STATE.md index caf120a..2586185 100644 --- a/.helloagents/sessions/master/default/STATE.md +++ b/.helloagents/sessions/master/default/STATE.md @@ -1,26 +1,25 @@ # 恢复快照 ## 主线目标 -完成 `admin-frontend` 节点管理页的分页、单节点置顶、仅对已勾选节点生效的批量修改,以及父/子节点筛选。 +完成 `admin-frontend` 独立 Docker 镜像、GHCR 自动发布、compose 分支 `admin` 服务接入,以及 `admin -> web` 的 `/api` 反向代理链路。 ## 正在做什么 -当前任务已完成,已完成代码修改、构建验证、知识库同步与方案包归档。 +当前任务已完成,已补齐 `xboard-admin-frontend` 到后端 `web` 服务的 `/api` 反向代理,并整理最终变更与验证证据。 ## 关键上下文 -- 用户在确认阶段选择了“1”,确认批量修改范围仅限已勾选节点,不扩展到当前筛选结果。 -- 节点页已补齐本地分页、父/子节点筛选、跨分页勾选恢复、行级“置顶节点”和批量修改弹窗。 -- 批量修改只会更新 `host / group_ids / rate`,不会改动端口、显隐状态和协议配置。 -- Laravel `ManageController::batchUpdate` 已扩展支持 `host / rate / group_ids` 三个字段。 -- 本轮方案包已归档到 `.helloagents/archive/2026-04/202604242245_admin-frontend-node-pagination-batch-edit/`。 +- 用户指出此前方案遗漏了 `xboard-admin-frontend` 访问后端 API 的回源链路,需要补齐到后端 `web` 服务。 +- `admin-frontend/Caddyfile` 现已增加 `/api` 反向代理,回源地址由 `XBOARD_BACKEND_UPSTREAM` 控制,默认值为 `http://web:7001`。 +- 独立 worktree `E:\code\php\Xboard-new-compose` 的 `compose.yaml` 已补充 `admin` 服务环境变量 `XBOARD_BACKEND_UPSTREAM=http://web:7001`,并把镜像名对齐到当前 fork `ghcr.io/micah123321/*`。 +- 本轮已同步知识库:`.helloagents/CHANGELOG.md`、`.helloagents/context.md`、`.helloagents/modules/admin-frontend.md`。 ## 下一步 -当前任务已完成;如继续同一业务域,可在节点管理基础上补批量显隐、批量启停、批量重置流量或后端真实分页。 +当前任务已完成;如要继续,可下一步提交/推送 `master` 与 `compose` 两个工作树中的改动,或继续把 `ws-server`、命名卷和最终部署文档一并对齐到你的实际 compose 模板。 ## 阻塞项 -(无) +- 本地缺少 `docker` 与 `caddy` 可执行文件,因此本轮未执行 `docker build` / `caddy validate`,仅完成了 compose YAML 语法验证与代码级自检。 ## 方案 -archive/2026-04/202604242245_admin-frontend-node-pagination-batch-edit +无(R1 快速修正) ## 已标记技能 -frontend-design, hello-ui, hello-verify +hello-verify diff --git a/admin-frontend/Caddyfile b/admin-frontend/Caddyfile index a8ecc05..0ed0e0e 100644 --- a/admin-frontend/Caddyfile +++ b/admin-frontend/Caddyfile @@ -2,6 +2,11 @@ encode zstd gzip root * /usr/share/caddy + @api path /api /api/* + handle @api { + reverse_proxy {$XBOARD_BACKEND_UPSTREAM:http://web:7001} + } + redir / /assets/admin/ 308 redir /assets/admin /assets/admin/ 308