AdminProfilesPage UI 设计规范
自动生成时间: 2026-02-04
组件路径: workbench/NextUI.Workbench/Pages/Admin/AdminProfilesPage.razor
1. 组件概述
Admin Profiles Page 是 SharedProfile 管理页面,用于管理跨应用的用户配置文件,支持查看、创建、编辑、删除配置文件。
2. 页面结构
2.1 Server Status Card
┌─────────────────────────────────────────────────────────────────────┐
│ [Server] Profile API Server: Mock SharedProfile Service [Connected] │
│ [Refresh] │
└─────────────────────────────────────────────────────────────────────┘
2.2 Profiles List Card
┌─────────────────────────────────────────────────────────────────────┐
│ All Profiles [Search...] [+ Create Profile] │
├─────────────────────────────────────────────────────────────────────┤
│ DataGrid: │
│ Avatar | User ID | Display Name | Language | Theme | Updated | Act. │
│ [img] | user-1 | John Doe | [en-US] | [light]| 1/1/26 | [✏️🗑]│
└─────────────────────────────────────────────────────────────────────┘
│ Showing N of N profiles │
└─────────────────────────────────────────────────────────────────────┘
2.3 Statistics Cards
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ [Card] │ │ [Sun] │ │ [Moon] │ │ [Globe] │
│ N │ │ N │ │ N │ │ N │
│ Total │ │ Light │ │ Dark │ │ Languages │
│ Profiles │ │ Theme │ │ Theme │ │ │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
3. 状态变量
| 变量 |
类型 |
默认值 |
说明 |
_serverStatus |
string |
"Connected" |
服务器连接状态 |
_profiles |
List<SharedProfile> |
[] |
配置文件列表 |
_loading |
bool |
true |
加载状态 |
_searchText |
string |
"" |
搜索文本 |
_createDialogOpen |
bool |
false |
创建对话框 |
_editDialogOpen |
bool |
false |
编辑对话框 |
_deleteDialogOpen |
bool |
false |
删除对话框 |
_editingProfile |
SharedProfile? |
null |
正在编辑的配置 |
_deletingProfile |
SharedProfile? |
null |
待删除的配置 |
4. DataGrid 列定义
| 列名 |
类型 |
宽度 |
内容 |
| Avatar |
Template |
50px |
SxAvatar |
| User ID |
Property |
auto |
UserId, Sortable |
| Display Name |
Property |
auto |
DisplayName, Sortable |
| Language |
Template |
120px |
Badge |
| Theme |
Template |
100px |
Badge with color |
| Updated |
Template |
180px |
UpdatedAt 格式化 |
| Actions |
Template |
100px |
Edit/Delete 按钮 |
5. 对话框规范
5.1 Create Profile Dialog
| 字段 |
组件 |
绑定 |
说明 |
| User ID |
SxInput |
_newUserId |
必填 |
| Display Name |
SxInput |
_newDisplayName |
可选 |
| Avatar URL |
SxInput |
_newAvatarUrl |
可选 |
| Preferred Language |
SxSelect |
_newPreferredLanguage |
默认 en-US |
| Theme Preference |
SxSelect |
_newThemePreference |
默认 system |
语言选项: en-US, zh-CN, ja-JP
主题选项: system, light, dark
按钮: Cancel, Create Profile
5.2 Edit Profile Dialog
| 字段 |
组件 |
绑定 |
说明 |
| (Header) |
SxAvatar + UserId |
- |
只读显示 |
| Display Name |
SxInput |
_editDisplayName |
- |
| Avatar URL |
SxInput |
_editAvatarUrl |
- |
| Preferred Language |
SxSelect |
_editPreferredLanguage |
8 种语言 |
| Theme Preference |
SxSelect |
_editThemePreference |
3 种主题 |
| Timezone |
SxSelect |
_editTimezone |
6 种时区 |
语言选项 (8种):
| 代码 |
显示名称 |
| en-US |
English (US) |
| zh-CN |
简体中文 |
| zh-TW |
繁體中文 |
| ja-JP |
日本語 |
| ko-KR |
한국어 |
| de-DE |
Deutsch |
| fr-FR |
Français |
| es-ES |
Español |
主题选项: system, light, dark
时区选项 (6种):
| 代码 |
显示名称 |
| UTC |
UTC |
| America/New_York |
Eastern Time (US) |
| America/Los_Angeles |
Pacific Time (US) |
| Europe/London |
London |
| Asia/Shanghai |
Shanghai |
| Asia/Tokyo |
Tokyo |
按钮: Cancel, Save Changes
5.3 Delete Profile Dialog
| 元素 |
组件 |
说明 |
| Error |
SxMessageBar |
"此操作无法撤销" |
| Confirmation |
SxTypography |
显示用户名和 ID |
按钮: Cancel, Delete (红色)
6. 搜索过滤
private List<SharedProfile> FilteredProfiles =>
string.IsNullOrWhiteSpace(_searchText)
? _profiles
: _profiles.Where(p =>
(p.UserId?.Contains(_searchText, StringComparison.OrdinalIgnoreCase) ?? false) ||
(p.DisplayName?.Contains(_searchText, StringComparison.OrdinalIgnoreCase) ?? false))
.ToList();
7. Badge 样式
7.1 Theme Badge
| Theme |
Appearance |
| dark |
Important |
| light |
Informational |
| 其他 |
Lightweight |
7.2 Server Status Badge
| Status |
Appearance |
| Connected |
Success |
| Disconnected |
Danger |
| 其他 |
Lightweight |
8. 依赖服务
| 服务 |
说明 |
ICurrentUser |
当前用户信息 |
IIdentityService |
身份验证服务 |
ISharedProfileAdminService |
配置文件管理服务 |
9. 事件处理
| 事件 |
来源 |
处理 |
CurrentUser.Changed |
用户状态变化 |
重新加载配置 |
AdminService.ProfilesChanged |
配置变化 |
重新加载配置 |
10. 典型使用场景 (Use Cases)
10.1 UC-1: 查看配置文件列表
- Admin 导航到
/admin/profiles
- 页面加载配置数据
- 查看列表和统计
10.2 UC-2: 搜索配置文件
- Admin 在搜索框输入用户名或 ID
- 列表实时过滤
10.3 UC-3: 创建配置文件
- Admin 点击 "Create Profile"
- 填写 User ID 和其他字段
- 点击 "Create Profile"
- 配置创建,列表刷新
10.4 UC-4: 编辑配置文件
- Admin 点击配置的编辑按钮
- 修改显示名称、语言、主题等
- 点击 "Save Changes"
- 配置更新
10.5 UC-5: 删除配置文件
- Admin 点击配置的删除按钮
- 确认对话框显示
- 点击 "Delete"
- 配置删除
11. API 调用
| 操作 |
方法 |
| 获取所有 |
AdminService.GetAllProfilesAsync() |
| 创建 |
AdminService.UpdateProfileAsync(userId, profile) |
| 更新 |
AdminService.PatchProfileAsync(userId, updates) |
| 删除 |
AdminService.DeleteProfileAsync(userId) |
12. 测试检查点
12.1 必须测试 (单元测试)
12.2 E2E 测试
13. 规范合规检查
13.1 组件使用
13.2 样式
14. 已知问题 / TODO
- Dialog 使用
@bind-Visible 而非 @bind-Open (检查组件一致性)
15. 变更历史
| 日期 |
变更内容 |
| 2026-02-04 |
初始生成 |
| 2026-02-04 |
UI Review: 添加详细的语言和时区选项表格 |