fix(admin-frontend): 修复节点权限组保存与协议默认值

统一将节点编辑和批量修改的 group_ids、route_ids
序列化为字符串 ID,避免保存权限组后订阅侧无法命中节点

后端新增 whereGroupId 兼容历史字符串与数字 JSON 值,
并补齐 TUIC 版本、ALPN 选项及 AnyTLS 默认 Padding 配置

docs: 新增 HelloAGENTS 通用与工作流避坑指南
This commit is contained in:
yinjianm
2026-04-27 23:03:57 +08:00
parent c64badfc23
commit 30c2f655e7
16 changed files with 1096 additions and 33 deletions
+7
View File
@@ -1,5 +1,12 @@
# CHANGELOG
## [0.5.17] - 2026-04-25
### 修复
- **[admin-frontend]**: 修复节点编辑 / 批量修改保存权限组后订阅侧无法命中节点的问题;前端提交 `group_ids / route_ids` 时统一序列化为字符串 ID,后端 `whereGroupId` 同时兼容历史字符串与数字 JSON 值,并补齐 TUIC V5/V4、ALPN 选项与 AnyTLS 完整默认 Padding Scheme — by yinjianm
- 类型: 快速修改(无方案包)
- 文件: admin-frontend/src/utils/nodeEditorMapper.ts, admin-frontend/src/utils/nodeEditorOptions.ts, admin-frontend/src/views/nodes/NodeEditorProtocolSection.vue, app/Models/Server.php
## [0.5.16] - 2026-04-25
### 新增
+2
View File
@@ -36,6 +36,8 @@
- 用户流量重置优先复用 `traffic-reset/reset-user`,用户行级“重置流量”会走真实后端重置链路并在成功后刷新列表
- 节点管理页通过真实后端 `server/manage/getNodes``server/group/fetch``server/route/fetch` 获取列表 / 关联数据,并通过 `server/manage/save``server/manage/sort``server/manage/update``server/manage/batchUpdate``server/manage/copy``server/manage/drop` 完成新增、编辑、排序、批量修改与行级操作
- 节点新增 / 编辑采用统一中央大弹窗,支持 `Shadowsocks / VMess / Trojan / Hysteria / VLess / TUIC / SOCKS / Naive / HTTP / Mieru / AnyTLS` 11 种协议的首版动态配置表单
- 节点新增 / 编辑 / 批量修改保存 `group_ids / route_ids` 时统一向后端提交字符串 ID,后端 `Server::whereGroupId()` 同时兼容历史字符串与数字 JSON 值,避免权限组保存后订阅侧无法命中节点
- TUIC 表单默认以 V5 / V4 版本选择、`h3 / h2 / http/1.1` ALPN 选项和 `native / quic` UDP Relay Mode 对齐后端协议模板;AnyTLS Padding Scheme 默认值与 `Server` 模型完整模板保持一致
- 节点排序采用本地草稿 + 上移 / 下移模式,保存时向 `server/manage/sort` 提交 `{ id, order }[]` 顺序 payload
- 节点列表现支持本地分页、在线 / 离线筛选、父/子节点筛选,以及跨分页稳定勾选;批量修改 / 批量删除仅作用于已勾选节点,其中批量修改可统一更新 `host / group_ids / rate`
- 节点行级菜单现已补齐“置顶节点”,会复用当前排序结果生成新的顺序 payload 并提交到 `server/manage/sort`
+12 -9
View File
@@ -1,25 +1,28 @@
# 恢复快照
## 主线目标
`admin-frontend` 用户管理高级筛选新增“活跃状态”条件,并补齐对应后端复合过滤规则。
补充 HelloAGENTS 通用避坑指南中的“多个任务并行执行”处理规则。
## 正在做什么
当前任务已完成,已补齐活跃 / 非活跃筛选与前后端联动,并完成前端构建验证
当前任务已完成,通用文档已补充“多任务并行执行规则”
## 关键上下文
- 高级筛选弹窗新增了 `activity_status` 字段,前端支持选择“活跃 / 非活跃”,默认无该条件即代表“全部”
- 后端 `UserController::fetch()` 现支持 `activity_status=eq:1|0` 的复合规则:`plan_id` 非空、剩余流量大于 0、`last_online_at` 在近半年内即视为活跃
- 已新增 `tests/Unit/Admin/UserControllerActivityStatusFilterTest.php` 覆盖值解析与 SQL 条件拼装,但当前环境缺少可执行 `php` 命令,尚未本机跑通该 PHPUnit 用例
- 已完成 `admin-frontend``npm run build`,最新产物已写入 `public/assets/admin` 子模块
- 已有项目版文档:`docs/helloagents-workflow-pitfalls.md`
- 通用版目标路径:`docs/helloagents-universal-pitfalls.md`
- 通用版面向任意已激活 HelloAGENTS 项目,重点覆盖状态恢复、输出格式、目录边界、验证证据、子仓/子模块、多平台 Shell、外部依赖和收尾流程
- 文档不放入 `.helloagents/`,避免触发模板格式约束
- 本次新增重点:并行任务必须先建任务矩阵;主代理处理关键路径,子代理仅在用户明确授权并行 / 委托时使用;并行写入必须分配不重叠文件范围;状态文件记录并行泳道和合并点。
- 已在 `docs/helloagents-universal-pitfalls.md` 新增 `## 多任务并行执行规则` 章节。
- 已检查章节存在性与 `git diff --check`,无空白错误;仅提示 Git 未来可能将 `STATE.md` LF 替换为 CRLF。
## 下一步
当前任务已完成;如继续同一业务域,建议在具备 PHP 运行时的环境补跑 `UserControllerActivityStatusFilterTest`,并用真实后台登录态手动验证“高级筛选 → 活跃 / 非活跃切换”的结果集
当前补充已完成;后续可把该章节抽成团队并行任务模板
## 阻塞项
- 当前终端不存在 `php`
- 暂无
## 方案
`.helloagents/archive/2026-04/202604250018_admin-frontend-user-activity-status-filter/`
快速文档沉淀(无独立方案包)。
## 已标记技能
hello-ui, hello-verify