73b1696b0a
为节点新增 auto_online 字段与后台同步任务, 仅对开启托管的节点按在线状态自动同步前台显示。 管理端补齐单节点与批量开关、列表标识与统计, 并在自动上线启用时禁用手动显隐切换。 后端新增定时命令、保存校验、批量更新支持、 数据库迁移与单元测试,保证托管逻辑可落地。
5.9 KiB
5.9 KiB
项目上下文
基本信息
- 项目: Xboard-new
- 当前工作目录:
E:\code\php\Xboard-new - 主要栈: Laravel(PHP) + Vue3/TypeScript/Vite/Element Plus (
admin-frontend)
技术上下文
- 管理端前端位于
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 - 前端容器会通过
XBOARD_UPLOAD_UPSTREAM把/upload/*去掉/upload前缀后反向代理到图片上传服务,默认值为https://pic.535888.xyz - GHCR 前端镜像发布工作流位于
.github/workflows/admin-frontend-docker-publish.yml,镜像名为ghcr.io/<owner>/xboard-admin-frontend - 管理端 API 通过
window.settings.secure_path或VITE_ADMIN_PATH解析/api/v2/{secure_path}前缀 - 登录接口复用
/api/v2/passport/auth/login - 工单回复链路当前以
TicketService::reply()为统一真相源:管理员或用户再次回复已关闭工单时都会自动把工单状态改回开启,同时继续维护reply_status与last_reply_user_id - 管理端仪表盘现已接入:
stat/getStatsstat/getOrderstat/getTrafficRanksystem/getSystemStatussystem/getQueueStats
- 管理端用户管理现已接入:
user/fetchuser/generateuser/updateuser/dumpCSVuser/sendMailuser/banuser/resetSecretuser/destroyplan/fetchtraffic-reset/reset-user
- 管理端节点管理现已接入:
server/manage/getNodesserver/manage/saveserver/manage/sortserver/manage/batchUpdateserver/group/fetchserver/group/saveserver/group/dropserver/route/fetchserver/route/saveserver/route/dropserver/manage/updateserver/manage/copyserver/manage/dropserver/manage/batchDeleteserver/manage/checkGfwserver/manage/resetTrafficserver/manage/batchResetTraffic
- 管理端套餐管理现已接入:
plan/fetchplan/saveplan/updateplan/dropplan/sortserver/group/fetch
- 管理端订单管理现已接入:
order/fetchorder/detailorder/assignorder/paidorder/cancelorder/update
- 管理端礼品卡管理现已接入:
gift-card/templatesgift-card/create-templategift-card/update-templategift-card/delete-templategift-card/generate-codesgift-card/codesgift-card/toggle-codegift-card/export-codesgift-card/update-codegift-card/delete-codegift-card/usagesgift-card/statisticsgift-card/types
- 管理端公告管理现已接入:
notice/fetchnotice/savenotice/shownotice/dropnotice/sort
- 管理端支付配置现已接入:
payment/fetchpayment/getPaymentMethodspayment/getPaymentFormpayment/savepayment/showpayment/droppayment/sort
- 订单支付成功后会额外快照保存
payment_channel / payment_method / payment_amount / payment_ip,管理端订单详情优先展示真实支付成功信息,再回退当前支付配置 - 客户端订阅导出入口位于
app/Http/Controllers/V1/Client/ClientController.php,会根据flag/User-Agent匹配app/Protocols/*导出器 Stash订阅导出位于app/Protocols/Stash.php,当前对AnyTLS采用保守兼容:仅客户端版本>= 3.3.0时导出- 用户主题源代码当前不在仓内,仅保留
theme/Xboard/assets/umi.js编译产物;涉及用户侧工单交互时,优先通过后端语义修复保证前后台一致
项目概述
- 主仓仍以 Laravel 为后端真相源
admin-frontend负责独立管理后台 UI 与交互逻辑admin-frontend现在同时支持两种交付路径:仓内构建产物写回public/assets/admin,或独立构建为 GHCR 静态镜像供 compose 分支部署- 订阅协议导出由 Laravel 主仓内的
app/Protocols/*提供,客户端兼容问题需以对应导出器实现为准 public/assets/admin为构建产物输出位置
开发约定
- 管理端路由使用 Hash 模式
- 管理端当前业务路由包含
/dashboard、/users、/tickets、/nodes、/node-groups、/node-routes、/subscriptions/plans、/subscriptions/orders、/subscriptions/coupons、/subscriptions/gift-cards、/system/config、/system/notices、/system/payments、/system/plugins、/system/themes与/system/knowledge #/nodes当前已升级为真实节点工作台:支持搜索、在线 / 离线筛选、父/子节点筛选、墙状态筛选、分页浏览、显隐切换、自动上线托管开关、复制、单节点置顶、仅对已勾选节点生效的批量修改 / 批量删除,以及 11 种协议的新增 / 编辑弹窗和排序对话框- 节点自动上线由后端
sync:server-auto-online定时命令执行,只处理auto_online=1的节点:在线 / 待同步时自动show=1,离线时自动show=0;未开启自动上线的节点继续保持手动显隐控制 - Bearer Token 存储于
sessionStorage/localStorage admin-frontend的视觉方向当前以 Apple 风格为基线,优先纯色分区、系统字体栈和低装饰成本
当前约束
- 本地静态 preview 环境默认缺少 Laravel 注入的
window.settings与真实管理 API,受保护页面只能验证结构与跳转,不能替代完整联调 - 当前主工作树存在多组未提交业务改动;
compose分支变更需在独立 worktree 中处理,避免污染master - 后端接口契约以仓库内 Controller/Route 为准,不在前端推断字段