From 1bca93b332591df6b33d28f69b4104a64d5f4b8a Mon Sep 17 00:00:00 2001 From: ryan Date: Wed, 11 Mar 2026 17:27:37 +0800 Subject: [PATCH] =?UTF-8?q?[=E9=87=8D=E6=9E=84]=20=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E4=BD=BF=E7=94=A8=E5=8D=95=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{apply-logs => apply-log}/page.tsx | 0 .../page.tsx | 0 .../app/(dashboard)/{files => file}/page.tsx | 0 .../page.tsx | 0 .../app/(dashboard)/{nodes => node}/page.tsx | 0 .../{proxy-routes => proxy-route}/page.tsx | 0 .../{settings => setting}/page.tsx | 0 .../page.tsx | 0 .../app/(dashboard)/{users => user}/page.tsx | 0 atsf_server/web/lib/constants/navigation.ts | 30 +++---- .../web/tests/unit/navigation-utils.test.ts | 18 ++-- docs/frontend-development-guidelines.md | 24 +++--- docs/frontend-revamp-plan.md | 85 +++++++++---------- 13 files changed, 78 insertions(+), 79 deletions(-) rename atsf_server/web/app/(dashboard)/{apply-logs => apply-log}/page.tsx (100%) rename atsf_server/web/app/(dashboard)/{config-versions => config-version}/page.tsx (100%) rename atsf_server/web/app/(dashboard)/{files => file}/page.tsx (100%) rename atsf_server/web/app/(dashboard)/{managed-domains => managed-domain}/page.tsx (100%) rename atsf_server/web/app/(dashboard)/{nodes => node}/page.tsx (100%) rename atsf_server/web/app/(dashboard)/{proxy-routes => proxy-route}/page.tsx (100%) rename atsf_server/web/app/(dashboard)/{settings => setting}/page.tsx (100%) rename atsf_server/web/app/(dashboard)/{tls-certificates => tls-certificate}/page.tsx (100%) rename atsf_server/web/app/(dashboard)/{users => user}/page.tsx (100%) diff --git a/atsf_server/web/app/(dashboard)/apply-logs/page.tsx b/atsf_server/web/app/(dashboard)/apply-log/page.tsx similarity index 100% rename from atsf_server/web/app/(dashboard)/apply-logs/page.tsx rename to atsf_server/web/app/(dashboard)/apply-log/page.tsx diff --git a/atsf_server/web/app/(dashboard)/config-versions/page.tsx b/atsf_server/web/app/(dashboard)/config-version/page.tsx similarity index 100% rename from atsf_server/web/app/(dashboard)/config-versions/page.tsx rename to atsf_server/web/app/(dashboard)/config-version/page.tsx diff --git a/atsf_server/web/app/(dashboard)/files/page.tsx b/atsf_server/web/app/(dashboard)/file/page.tsx similarity index 100% rename from atsf_server/web/app/(dashboard)/files/page.tsx rename to atsf_server/web/app/(dashboard)/file/page.tsx diff --git a/atsf_server/web/app/(dashboard)/managed-domains/page.tsx b/atsf_server/web/app/(dashboard)/managed-domain/page.tsx similarity index 100% rename from atsf_server/web/app/(dashboard)/managed-domains/page.tsx rename to atsf_server/web/app/(dashboard)/managed-domain/page.tsx diff --git a/atsf_server/web/app/(dashboard)/nodes/page.tsx b/atsf_server/web/app/(dashboard)/node/page.tsx similarity index 100% rename from atsf_server/web/app/(dashboard)/nodes/page.tsx rename to atsf_server/web/app/(dashboard)/node/page.tsx diff --git a/atsf_server/web/app/(dashboard)/proxy-routes/page.tsx b/atsf_server/web/app/(dashboard)/proxy-route/page.tsx similarity index 100% rename from atsf_server/web/app/(dashboard)/proxy-routes/page.tsx rename to atsf_server/web/app/(dashboard)/proxy-route/page.tsx diff --git a/atsf_server/web/app/(dashboard)/settings/page.tsx b/atsf_server/web/app/(dashboard)/setting/page.tsx similarity index 100% rename from atsf_server/web/app/(dashboard)/settings/page.tsx rename to atsf_server/web/app/(dashboard)/setting/page.tsx diff --git a/atsf_server/web/app/(dashboard)/tls-certificates/page.tsx b/atsf_server/web/app/(dashboard)/tls-certificate/page.tsx similarity index 100% rename from atsf_server/web/app/(dashboard)/tls-certificates/page.tsx rename to atsf_server/web/app/(dashboard)/tls-certificate/page.tsx diff --git a/atsf_server/web/app/(dashboard)/users/page.tsx b/atsf_server/web/app/(dashboard)/user/page.tsx similarity index 100% rename from atsf_server/web/app/(dashboard)/users/page.tsx rename to atsf_server/web/app/(dashboard)/user/page.tsx diff --git a/atsf_server/web/lib/constants/navigation.ts b/atsf_server/web/lib/constants/navigation.ts index aa20fc9f..97d232ea 100644 --- a/atsf_server/web/lib/constants/navigation.ts +++ b/atsf_server/web/lib/constants/navigation.ts @@ -7,56 +7,56 @@ export const dashboardNavigation: NavigationItem[] = [ shortLabel: '总览', description: '查看阶段推进情况、系统入口与模块骨架状态。', }, - { - href: '/proxy-routes', + { + href: '/proxy-route', label: '反代规则', shortLabel: '规则', description: '已接入列表、表单、证书匹配与发布动作。', }, - { - href: '/config-versions', + { + href: '/config-version', label: '配置版本', shortLabel: '版本', description: '已接入版本预览、发布前 diff 与重新激活。', }, - { - href: '/nodes', + { + href: '/node', label: '节点管理', shortLabel: '节点', description: '已接入状态标签、部署命令、心跳与更新动作。', }, { - href: '/apply-logs', + href: '/apply-log', label: '应用记录', shortLabel: '记录', description: '已接入 node_id 筛选、结果状态展示与单条详情查看。', }, { - href: '/managed-domains', + href: '/managed-domain', label: '域名管理', shortLabel: '域名', description: '已接入列表、证书绑定、启停控制与编辑删除。', }, { - href: '/tls-certificates', + href: '/tls-certificate', label: 'TLS 证书', shortLabel: '证书', description: '已接入 PEM 导入、文件上传、到期展示与删除。', }, - { - href: '/files', + { + href: '/file', label: '文件管理', shortLabel: '文件', description: '已接入上传、下载、复制链接、搜索与删除动作。', }, - { - href: '/users', + { + href: '/user', label: '用户管理', shortLabel: '用户', description: '已接入搜索、创建、编辑、封禁与权限调整。', }, - { - href: '/settings', + { + href: '/setting', label: '设置', shortLabel: '设置', description: '已接入个人、运维、系统与关于内容维护。', diff --git a/atsf_server/web/tests/unit/navigation-utils.test.ts b/atsf_server/web/tests/unit/navigation-utils.test.ts index 5a95f3d6..ceb093b5 100644 --- a/atsf_server/web/tests/unit/navigation-utils.test.ts +++ b/atsf_server/web/tests/unit/navigation-utils.test.ts @@ -3,13 +3,13 @@ import { describe, expect, it } from 'vitest'; import { getCurrentNavigationItem, isPathActive } from '@/lib/utils/navigation'; describe('navigation utils', () => { - it('marks root path as active only for home', () => { - expect(isPathActive('/', '/')).toBe(true); - expect(isPathActive('/nodes', '/')).toBe(false); - }); - - it('resolves current navigation item for nested paths', () => { - expect(getCurrentNavigationItem('/nodes/abc')?.label).toBe('节点管理'); - expect(getCurrentNavigationItem('/settings')?.label).toBe('设置'); - }); + it('marks root path as active only for home', () => { + expect(isPathActive('/', '/')).toBe(true); + expect(isPathActive('/node', '/')).toBe(false); + }); + + it('resolves current navigation item for nested paths', () => { + expect(getCurrentNavigationItem('/node/abc')?.label).toBe('节点管理'); + expect(getCurrentNavigationItem('/setting')?.label).toBe('设置'); + }); }); diff --git a/docs/frontend-development-guidelines.md b/docs/frontend-development-guidelines.md index 5fee49eb..0f52e04d 100644 --- a/docs/frontend-development-guidelines.md +++ b/docs/frontend-development-guidelines.md @@ -135,18 +135,18 @@ tests/ ### 4.1 路由命名 -要求: - -* 使用英文小写复数资源名 -* 使用语义清晰的层级结构 - -示例: - -* `/nodes` -* `/proxy-routes` -* `/config-versions` -* `/tls-certificates` -* `/managed-domains` +要求: + +* 使用英文小写单数资源名 +* 使用语义清晰的层级结构 + +示例: + +* `/node` +* `/proxy-route` +* `/config-version` +* `/tls-certificate` +* `/managed-domain` ### 4.2 页面职责 diff --git a/docs/frontend-revamp-plan.md b/docs/frontend-revamp-plan.md index b10be541..6e63ce57 100644 --- a/docs/frontend-revamp-plan.md +++ b/docs/frontend-revamp-plan.md @@ -152,15 +152,15 @@ atsf_server/web/ (dashboard)/ layout.tsx page.tsx - proxy-routes/ - config-versions/ - nodes/ - apply-logs/ - managed-domains/ - tls-certificates/ - files/ - users/ - settings/ + proxy-route/ + config-version/ + node/ + apply-log/ + managed-domain/ + tls-certificate/ + file/ + user/ + setting/ not-found.tsx components/ ui/ @@ -170,15 +170,15 @@ atsf_server/web/ feedback/ features/ auth/ - proxy-routes/ - config-versions/ - nodes/ - apply-logs/ - managed-domains/ - tls-certificates/ - files/ - users/ - settings/ + proxy-route/ + config-version/ + node/ + apply-log/ + managed-domain/ + tls-certificate/ + file/ + user/ + setting/ lib/ api/ auth/ @@ -207,24 +207,23 @@ atsf_server/web/ 建议按“业务模块”而不是“旧文件结构”迁移: -| 现有路由 | 目标路由 | 改造重点 | -| --- | --- | --- | -| `/` | `/` | 首页概览卡片、系统状态、公告区域重设计 | -| `/proxy-route` | `/proxy-routes` | 表格、创建/编辑抽屉、发布动作、域名证书联动 | -| `/config-version` | `/config-versions` | 版本列表、diff 预览、激活流程、只读预览体验 | -| `/node` | `/nodes` | 节点状态标签、心跳时间、部署命令、更新动作 | -| `/apply-log` | `/apply-logs` | 过滤器、结果状态可视化、分页与详情展示 | -| `/managed-domain` | `/managed-domains` | 通配符匹配提示、证书绑定状态、启用状态切换 | -| `/tls-certificate` | `/tls-certificates` | 导入、上传、有效期展示、到期提醒样式 | -| `/file` | `/files` | 文件列表与下载交互优化 | -| `/user` | `/users` | 用户列表、角色管理、搜索与编辑体验 | -| `/setting` | `/settings` | 系统设置、运维设置、个人设置按信息架构重组 | -| `/login` 等 | `/login` 等 | 统一认证页视觉与表单规范 | - -说明: - -* 路由命名建议统一改为复数英文资源名。 -* 为兼容旧链接,可在切换期保留旧路由跳转。 +| 现有路由 | 目标路由 | 改造重点 | +| --- | --- | --- | +| `/` | `/` | 首页概览卡片、系统状态、公告区域重设计 | +| `/proxy-route` | `/proxy-route` | 表格、创建/编辑抽屉、发布动作、域名证书联动 | +| `/config-version` | `/config-version` | 版本列表、diff 预览、激活流程、只读预览体验 | +| `/node` | `/node` | 节点状态标签、心跳时间、部署命令、更新动作 | +| `/apply-log` | `/apply-log` | 过滤器、结果状态可视化、分页与详情展示 | +| `/managed-domain` | `/managed-domain` | 通配符匹配提示、证书绑定状态、启用状态切换 | +| `/tls-certificate` | `/tls-certificate` | 导入、上传、有效期展示、到期提醒样式 | +| `/file` | `/file` | 文件列表与下载交互优化 | +| `/user` | `/user` | 用户列表、角色管理、搜索与编辑体验 | +| `/setting` | `/setting` | 系统设置、运维设置、个人设置按信息架构重组 | +| `/login` 等 | `/login` 等 | 统一认证页视觉与表单规范 | + +说明: + +* 路由命名统一使用单数英文资源名。 --- @@ -302,12 +301,12 @@ atsf_server/web/ 优先顺序: -1. `proxy-routes` -2. `config-versions` -3. `nodes` -4. `managed-domains` -5. `tls-certificates` -6. `apply-logs` +1. `proxy-route` +2. `config-version` +3. `node` +4. `managed-domain` +5. `tls-certificate` +6. `apply-log` 验收: @@ -320,7 +319,7 @@ atsf_server/web/ 任务: -* 迁移 `settings`、`users`、`files`、`about` 等模块 +* 迁移 `setting`、`user`、`file`、`about` 等模块 * 重构表单项、标签页、操作区布局 * 增加部署命令复制、时间友好显示、状态颜色体系