Refactor: Remove summary cards from various pages and update UI components

- Removed summary cards from Managed Domains, Nodes, Proxy Routes, TLS Certificates, Users pages to streamline UI.
- Updated Nodes and Proxy Routes pages to enhance action buttons and descriptions.
- Added new runtime configuration options for rate limiting in Settings page, allowing for dynamic updates.
- Updated documentation to reflect new runtime configurations and their effects.
- Enhanced unit tests for DashboardOverview to include mock data for comprehensive coverage.
This commit is contained in:
ryan
2026-03-11 19:49:30 +08:00
parent f7d18f712e
commit db3f9b0c0a
20 changed files with 1171 additions and 555 deletions
+23
View File
@@ -11,6 +11,8 @@ Server 当前支持两类启动配置:
1. 命令行参数
2. 环境变量
此外,部分运行时参数已迁入数据库 `Option` 表,可在管理端设置页中热更新,例如 Agent 运行参数与限流阈值。
### 1.1 Server 命令行参数
启动示例:
@@ -94,6 +96,27 @@ volumes:
* `REDIS_CONN_STRING` 未配置时,相关能力将回退为进程内实现
* `UPLOAD_PATH` 目录在启动时若不存在会自动创建
### 1.2.1 设置页可热更新的运行时配置
以下配置不依赖环境变量,保存在数据库 `Option` 表中,可在管理端设置页的「运维设置」中调整,并在保存后立即生效:
| 配置项 | 作用 | 默认值 |
| --- | --- | --- |
| `AgentHeartbeatInterval` | Agent 心跳间隔(毫秒) | `30000` |
| `AgentSyncInterval` | Agent 同步间隔(毫秒) | `30000` |
| `NodeOfflineThreshold` | 节点离线判定阈值(毫秒) | `120000` |
| `AgentUpdateRepo` | Agent 自更新仓库 | `Rain-kl/ATSFlare` |
| `GlobalApiRateLimitNum` / `GlobalApiRateLimitDuration` | 全局 API 限流次数 / 时间窗口(秒) | `300` / `180` |
| `GlobalWebRateLimitNum` / `GlobalWebRateLimitDuration` | 全局 Web 限流次数 / 时间窗口(秒) | `300` / `180` |
| `UploadRateLimitNum` / `UploadRateLimitDuration` | 上传接口限流次数 / 时间窗口(秒) | `50` / `60` |
| `DownloadRateLimitNum` / `DownloadRateLimitDuration` | 下载接口限流次数 / 时间窗口(秒) | `50` / `60` |
| `CriticalRateLimitNum` / `CriticalRateLimitDuration` | 登录、注册、验证码等敏感接口限流次数 / 时间窗口(秒) | `100` / `1200` |
说明:
* 限流窗口上限不能超过 `RateLimitKeyExpirationDuration`,当前为 20 分钟
* 限流按来源 IP 统计,若前置了 Nginx/CDN/LB,应正确透传真实客户端 IP
### 1.3 前端构建环境变量
新版管理端位于 `atsf_server/web`,构建时支持以下公开环境变量:
+5
View File
@@ -348,6 +348,11 @@ Agent 接口当前覆盖:
* `AgentSyncInterval`:Agent 配置同步间隔(毫秒),默认 30000
* `NodeOfflineThreshold`:节点离线判定阈值(毫秒),默认 120000
* `AgentUpdateRepo`:Agent 自动更新 GitHub 仓库地址,默认 `Rain-kl/ATSFlare`
* `GlobalApiRateLimitNum` / `GlobalApiRateLimitDuration`:全局 API 限流次数与窗口(秒)
* `GlobalWebRateLimitNum` / `GlobalWebRateLimitDuration`:全局 Web 限流次数与窗口(秒)
* `UploadRateLimitNum` / `UploadRateLimitDuration`:上传接口限流次数与窗口(秒)
* `DownloadRateLimitNum` / `DownloadRateLimitDuration`:下载接口限流次数与窗口(秒)
* `CriticalRateLimitNum` / `CriticalRateLimitDuration`:登录、注册、验证码等敏感接口限流次数与窗口(秒)
* 环境变量类设置(`SESSION_SECRET`、`SQLITE_PATH`、`PORT`)不迁移,保留原有方式
* 前端在设置页面新增「运维设置」Tab
+6
View File
@@ -54,6 +54,11 @@
* `AgentSyncInterval`(默认 30000ms)
* `NodeOfflineThreshold`(默认 120000ms)
* `AgentUpdateRepo`(默认 `Rain-kl/ATSFlare`)
* `GlobalApiRateLimitNum` / `GlobalApiRateLimitDuration`
* `GlobalWebRateLimitNum` / `GlobalWebRateLimitDuration`
* `UploadRateLimitNum` / `UploadRateLimitDuration`
* `DownloadRateLimitNum` / `DownloadRateLimitDuration`
* `CriticalRateLimitNum` / `CriticalRateLimitDuration`
2. 在 `model/option.go` 的 `InitOptionMap()` 注册新选项
3. 在 `model/option.go` 的 `updateOptionMap()` 增加对新选项的同步
4. 修改 `service/agent.go` 中 `computeNodeStatus()` 使用动态 `NodeOfflineThreshold`
@@ -64,6 +69,7 @@
* 运维设置在设置页面可查看和修改
* 修改后立即生效,无需重启 Server
* `NodeOfflineThreshold` 变更后节点状态判定使用新阈值
* 限流阈值与时间窗口可在设置页调整,并即时影响对应中间件
### 3.2 阶段二:Server 下发 Agent 设置 + Agent 接收