feat(admin-frontend): 补齐用户节点与订单运营工作台

新增用户高级筛选、批量操作与更多行级动作,支持邮件、
CSV、封禁恢复、订单分配、邀请查看、流量记录与重置流量

增强节点管理页的分页、父子筛选、跨页勾选、批量修改与
单节点置顶,并补齐后端批量更新 host、group_ids、rate

修复订单佣金状态误判问题,新增真实佣金筛选与行级确认,
同时优化仪表盘排行悬浮详情展示

补充 admin-frontend 独立 Dockerfile、Caddy 配置与 GHCR
发布工作流,支持通过独立镜像部署管理前端
This commit is contained in:
yinjianm
2026-04-24 23:15:48 +08:00
parent e393b11b61
commit d4168720ac
65 changed files with 4114 additions and 438 deletions
@@ -0,0 +1,11 @@
{
"status": "completed",
"completed": 4,
"failed": 0,
"pending": 0,
"total": 4,
"done": 4,
"percent": 100,
"current": "admin-frontend GHCR 发布与 compose 接入已完成,等待用户后续动作",
"updated_at": "2026-04-24 23:05:00"
}
@@ -0,0 +1,40 @@
{
"updatedAt": "2026-04-24T14:50:00.000Z",
"version": 1,
"source": "manual",
"originCommand": "generic-r2",
"verifyMode": "test-first",
"reviewerFocus": [
"admin-frontend 镜像链路是否与主应用镜像链路解耦且不互相污染",
"compose 分支新增 admin 服务后镜像名、端口和访问路径是否一致"
],
"testerFocus": [
"vite 输出目录是否可在容器构建时切换到 dist",
"admin-frontend Dockerfile 是否能独立构建静态镜像",
"GitHub Actions workflow 与 compose.yaml 是否都能通过 YAML 解析"
],
"ui": {
"required": false,
"designContract": false,
"sourcePriority": [
"requirements.md"
],
"styleAdvisor": {
"required": false,
"reason": "",
"focus": []
},
"visualValidation": {
"required": false,
"reason": "",
"screens": [],
"states": []
}
},
"advisor": {
"required": false,
"reason": "",
"focus": [],
"preferredSources": []
}
}
@@ -0,0 +1,37 @@
# admin-frontend GHCR 自动构建与 compose 接入 — 实施规划
## 目标与范围
-`admin-frontend` 从“仓内前端目录”升级为“可独立构建、可独立分发、可独立部署”的静态前端镜像。
- 保持当前主应用镜像发布链路不变,同时补一条面向前端的独立 GHCR 发布通道。
-`compose` 分支可直接拉起独立 `admin` 服务,对外暴露单独端口。
## 架构与实现策略
- 构建链路:
-`admin-frontend/` 下新增独立 Dockerfile,采用 `Node -> Caddy` 多阶段构建。
- 通过环境变量把容器构建输出切到 `dist`,避免影响当前仓内 `public/assets/admin` 输出。
- 发布链路:
- 新增单独的 GitHub Actions workflow,仅在 `admin-frontend/**` 或 workflow 自身变更时触发。
- 镜像发布到 `ghcr.io/<owner>/xboard-admin-frontend`,标签策略与主应用保持一致:分支、sha、`new``latest`
- 运行链路:
- 通过 Caddy 在容器内提供静态资源,根路径自动重定向到 `/assets/admin/`
- `compose` 分支新增 `admin` 服务,直接拉取 GHCR 镜像并暴露 `7002:80`
## 完成定义
- `admin-frontend` 本地可通过 Dockerfile 正常构建镜像。
- GitHub Actions 可在 push 后自动构建并推送 `admin-frontend` 镜像到 GHCR。
- `compose` 分支的 `compose.yaml` 已包含独立 `admin` 服务,且镜像名与端口配置正确。
- `npm run build` 与 workflow/compose 语法检查通过。
## 风险与验证
- 风险 1`vite.config.ts` 目前默认输出到仓根 `public/assets/admin`,容器构建若不切换输出目录会污染镜像构建路径,因此必须引入可覆写输出目录。
- 风险 2:若前端服务直接暴露 `/` 而未处理 `/assets/admin/`,现有资源前缀会失配,因此需要容器内重定向和静态路径兜底。
- 风险 3:当前仓库已有大量未提交业务改动,不能直接切换分支修改 `compose.yaml`,需在独立 worktree 中处理 `compose` 分支文件。
- 验证方式:
- `npm run build`
- `docker build -f admin-frontend/Dockerfile admin-frontend`
- `python -c "import yaml; ..."` 检查 workflow 与 compose YAML
## 决策记录
- [2026-04-24] 采用独立 `admin` 服务,并按用户确认暴露单独端口,不内嵌回 Laravel 主服务容器。
- [2026-04-24] 采用独立 workflow,而不是把前端镜像构建塞进现有后端 `docker-publish.yml`,以降低耦合和回归面。
- [2026-04-24] 前端运行时采用 Caddy 提供静态资源并做 `/ -> /assets/admin/` 重定向,兼容当前 `base: '/assets/admin/'`
@@ -0,0 +1,31 @@
# admin-frontend GHCR 自动构建与 compose 接入 — 需求
确认后冻结,执行阶段不可修改。如需变更必须回到设计阶段重新确认。
## 核心目标
-`admin-frontend` 增加独立的 Docker 构建与 GitHub Actions 发布链路。
- 在代码提交后,自动构建 `admin-frontend` 镜像并推送到 GHCR。
- 按用户已确认的方案,把 `compose` 分支的 `compose.yaml` 增加独立 `admin` 服务,并暴露独立访问端口。
## 功能边界
- 镜像必须只面向 `admin-frontend/` 构建,不混入 Laravel 主应用镜像逻辑。
- GHCR 发布链路需支持与主仓当前镜像发布策略并存,不能破坏现有后端 `docker-publish.yml`
- 新增的 `admin` 服务需直接引用 GHCR 镜像,不走本地 `build:`
- `admin` 服务需可独立访问,并保留把 `/assets/admin/` 继续挂到反向代理的能力。
## 非目标
- 本轮不改造 Laravel 主应用 Dockerfile。
- 本轮不重做 `admin-frontend` 的业务代码与视觉界面。
- 本轮不处理 GitHub Secrets 之外的外部部署脚本。
## 技术约束
- `admin-frontend` 仍使用 `Vue 3 + TypeScript + Vite`
- 本地现有构建输出 `../public/assets/admin` 不能被破坏;容器构建需使用独立输出目录。
- 发布目标为 GHCR,多架构与登录方式尽量沿用现有主仓工作流模式。
- 视觉与前端基线继续遵循 `apple/DESIGN.md`,但本轮主要产出为工程/部署配置。
## 质量要求
- `admin-frontend` 镜像需可直接运行并稳定提供静态资源。
- 工作流命名、镜像命名与标签策略需清晰,不和主应用镜像冲突。
- `compose.yaml` 中新增服务后,配置语义应一眼可读,端口、镜像名和用途明确。
- 最终至少完成一次 `admin-frontend` 构建验证与工作流 YAML 语法级自检。
@@ -0,0 +1,13 @@
# admin-frontend GHCR 自动构建与 compose 接入 — 任务分解
## 任务列表
- [x] 任务1:补齐本轮方案与合同产物(涉及文件:`.helloagents/plans/202604242250_admin-frontend-ghcr-compose/*`;完成标准:存在需求、方案、任务、合同与状态文件;验证方式:文件检查)
- [x] 任务2:实现 `admin-frontend` 独立 Docker 构建链路(涉及文件:`admin-frontend/Dockerfile``admin-frontend/Caddyfile``admin-frontend/.dockerignore``admin-frontend/vite.config.ts`;完成标准:可输出独立静态镜像;验证方式:`npm run build` + `ADMIN_BUILD_OUT_DIR=dist npm run build`,本地 `docker build` 因环境缺少 docker CLI 未执行)
- [x] 任务3:新增前端 GHCR 发布 workflow(涉及文件:`.github/workflows/admin-frontend-docker-publish.yml`;完成标准:push 后可自动构建并推送前端镜像;验证方式:YAML 解析 + 工作流自检)
- [x] 任务4:在 compose 分支接入独立 `admin` 服务并完成知识库同步(涉及文件:`compose.yaml`compose 分支 worktree)、`.helloagents/CHANGELOG.md``.helloagents/context.md``.helloagents/modules/admin-frontend.md``.helloagents/sessions/master/default/STATE.md`;完成标准:`compose` 分支文件完成接入且知识库已更新;验证方式:YAML 解析 + 文件检查)
## 进度
- [x] 已确认采用独立 `admin` 服务,并在 compose 分支暴露单独端口。
- [x] 已完成方案包、前端镜像构建链路与 GHCR workflow 编排。
- [x] 已完成 compose 分支 `compose.yaml` 接入与 YAML 语法校验。
- [x] 已完成 `npm run build``ADMIN_BUILD_OUT_DIR=dist npm run build` 验证;本地 `docker build` 因环境缺少 `docker` 命令未执行。