Files
Nexus/docs/changelog/2026-05-30-servers-iteration.md
T
Your Name ebe276ea29 docs: add changelog and audit for servers iteration
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 19:50:07 +08:00

2.5 KiB
Raw Blame History

2026-05-30 — 服务器列表迭代

日期

2026-05-30

变更摘要

服务器列表页面全面迭代:后端新增服务端分页/搜索/排序/状态筛选,前端完全重写支持新功能。

动机

原服务器列表一次性加载全部数据,2000+ 服务器场景下性能差且无搜索/排序能力。

涉及文件

文件 变更类型 说明
server/infrastructure/database/server_repo.py 修改 get_paginated() 新增 search/sort_by/sort_order/is_online 参数,白名单排序,DB 级分页
server/api/servers.py 修改 list_servers() 新增 4 个 Query 参数 + Redis post-filter;修复 12 个预存 ruff 错误;修复 agent_port F821 bug
web/app/servers.html 重写 服务端分页/搜索/排序/状态筛选/自动刷新/键盘快捷键/CSV 导出/骨架屏/空状态优化

变更详情

后端 — server_repo.py

  • get_paginated() 签名扩展:新增 searchname/domain LIKE)、sort_by(白名单验证)、sort_orderasc/desc)、is_onlineMySQL 预过滤)
  • _SORT_COLUMNS 白名单:id/name/domain/status/heartbeat/agent_version/category
  • is_online 过滤时 over-fetch +10 补偿 Redis overlay 修正

后端 — servers.py

  • list_servers() 新增 Query 参数:search/sort_by/sort_order/is_online
  • Redis post-filteris_online 过滤时移除 Redis 状态不匹配的记录
  • 修复 12 个预先存在的 ruff 错误:F401 unused imports、B904 raise from、S110 try-except-pass、F541 f-string
  • 修复 F821 bugupgrade_agent()agent_port 变量未定义

前端 — servers.html

  • 服务端分页:50/100/200 条/页,首页/上一页/数字页码/下一页/末页
  • 防抖搜索(300ms):名称/地址 LIKE 模糊搜索
  • 可点击列排序:Agent 状态/名称/地址/分类/Agent/最后心跳,▲▼ 指示器
  • 状态筛选下拉:全部/在线/离线
  • 自动刷新:30 秒间隔,弹窗编辑时自动暂停
  • 键盘快捷键:↑↓/jk 移动、Esc 关闭面板、/ 搜索、r 刷新
  • CSV 导出:当前筛选条件下导出最多 5000 条
  • 骨架屏加载:8 行脉冲动画替代"加载中..."
  • 空状态优化:区分"无数据"和"无匹配结果"

是否需迁移

是否需重启

是 — supervisorctl restart nexus

验证方式

  1. ruff check: All checks passed
  2. bandit: No issues
  3. import: 成功
  4. Playwright 浏览器验证: 搜索/排序/筛选/分页全部通过

Commit

84282e8