@sleep2agi/agent-network-dashboard 0.4.3-preview.1 → 0.4.4-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +6 -6
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin.html +2 -2
- package/.next/server/app/admin.rsc +2 -2
- package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/logs.html +2 -2
- package/.next/server/app/logs.rsc +3 -3
- package/.next/server/app/logs.segments/_full.segment.rsc +3 -3
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
- package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/messages.html +2 -2
- package/.next/server/app/messages.rsc +2 -2
- package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
- package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
- package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
- package/.next/server/app/node/page_client-reference-manifest.js +1 -1
- package/.next/server/app/node.html +2 -2
- package/.next/server/app/node.rsc +2 -2
- package/.next/server/app/node.segments/_full.segment.rsc +2 -2
- package/.next/server/app/node.segments/_head.segment.rsc +1 -1
- package/.next/server/app/node.segments/_index.segment.rsc +2 -2
- package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/node.segments/node.segment.rsc +1 -1
- package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/nodes.html +2 -2
- package/.next/server/app/nodes.rsc +2 -2
- package/.next/server/app/nodes.segments/_full.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +2 -2
- package/.next/server/app/server-logs.rsc +3 -3
- package/.next/server/app/server-logs.segments/_full.segment.rsc +3 -3
- package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
- package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/networks.html +2 -2
- package/.next/server/app/settings/networks.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +2 -2
- package/.next/server/app/settings/tokens.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +2 -2
- package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks.html +2 -2
- package/.next/server/app/tasks.rsc +2 -2
- package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
- package/.next/server/chunks/ssr/app_0pljk5o._.js +1 -1
- package/.next/server/chunks/ssr/app_0pljk5o._.js.map +1 -1
- package/.next/server/chunks/ssr/app_page_tsx_0es_sk2._.js +1 -1
- package/.next/server/chunks/ssr/app_page_tsx_0es_sk2._.js.map +1 -1
- package/.next/server/chunks/ssr/app_server-logs_page_tsx_0_kpp1p._.js +1 -1
- package/.next/server/chunks/ssr/app_server-logs_page_tsx_0_kpp1p._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/0u~_.32f.midj.css +2 -0
- package/.next/static/chunks/10njj7kn9ylkf.js +1 -0
- package/.next/static/chunks/14sm.ta0zylsj.js +1 -0
- package/.next/static/chunks/18ac93ii3mjlj.js +1 -0
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/StatsBar.tsx +7 -1
- package/app/globals.css +73 -8
- package/app/logs/page.tsx +22 -6
- package/app/server-logs/page.tsx +22 -11
- package/package.json +1 -1
- package/.mcp.json +0 -11
- package/.next/static/chunks/0agna31q2fjq1.css +0 -2
- package/.next/static/chunks/0ttvcv6~g0f6i.js +0 -1
- package/.next/static/chunks/0~93h~zb55yh9.js +0 -1
- package/.next/static/chunks/140l7~i5q9wrv.js +0 -1
- package/AGENTS.md +0 -5
- package/DASHBOARD_OPTIMIZATION_PLAN.md +0 -414
- package/docs/iteration-plan.md +0 -62
- package/docs/v4-plan.md +0 -38
- /package/.next/static/{7dwKlhAm5uyghPmkAubQK → jTh5m77FIfQccc0gftvik}/_buildManifest.js +0 -0
- /package/.next/static/{7dwKlhAm5uyghPmkAubQK → jTh5m77FIfQccc0gftvik}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{7dwKlhAm5uyghPmkAubQK → jTh5m77FIfQccc0gftvik}/_ssgManifest.js +0 -0
|
@@ -1,414 +0,0 @@
|
|
|
1
|
-
# Agent Network Dashboard 后台优化方案
|
|
2
|
-
|
|
3
|
-
## 1. 当前现状
|
|
4
|
-
|
|
5
|
-
### 1.1 当前页面
|
|
6
|
-
|
|
7
|
-
基于当前代码,前台实际只有 3 个页面:
|
|
8
|
-
|
|
9
|
-
1. `/login`
|
|
10
|
-
- 密码登录页
|
|
11
|
-
- 使用 `anet_dashboard_session` Cookie 做简单会话鉴权
|
|
12
|
-
- 密码来源于环境变量或 `~/.anet/config.json`
|
|
13
|
-
|
|
14
|
-
2. `/`
|
|
15
|
-
- Dashboard 总览页
|
|
16
|
-
- 展示在线节点、工作中节点、总节点数、CommHub 版本、运行时长
|
|
17
|
-
- 展示 `anet` 配置状态
|
|
18
|
-
- 支持广播消息
|
|
19
|
-
- 支持查看拓扑图
|
|
20
|
-
- 展示 Agent 卡片列表
|
|
21
|
-
- 展示 Dashboard 自己的 inbox 消息
|
|
22
|
-
|
|
23
|
-
3. `/node?alias=xxx`
|
|
24
|
-
- 单个节点详情页
|
|
25
|
-
- 展示节点基础信息、当前任务、最近输出
|
|
26
|
-
- 展示发给该节点的 inbox 消息
|
|
27
|
-
- 支持向单个节点发送任务
|
|
28
|
-
|
|
29
|
-
### 1.2 当前已接入的后端能力
|
|
30
|
-
|
|
31
|
-
当前 Dashboard 并不是纯静态页面,已经通过 Next API route 代理了 CommHub 的若干接口:
|
|
32
|
-
|
|
33
|
-
- `/api/hub/status`
|
|
34
|
-
- 读取全部 session 状态
|
|
35
|
-
- `/api/hub/health`
|
|
36
|
-
- 读取 hub 健康状态、SSE 连接情况、版本、运行时长
|
|
37
|
-
- `/api/hub/messages`
|
|
38
|
-
- 读取最近消息流
|
|
39
|
-
- `/api/hub/session`
|
|
40
|
-
- 读取单个节点详情、节点 inbox、SSE 状态
|
|
41
|
-
- `/api/hub/send`
|
|
42
|
-
- 给单个节点派发任务
|
|
43
|
-
- `/api/hub/broadcast`
|
|
44
|
-
- 对全体节点广播
|
|
45
|
-
- `/api/hub/inbox`
|
|
46
|
-
- 读取 Dashboard 自己的 inbox
|
|
47
|
-
- `/api/hub/register`
|
|
48
|
-
- 将 Dashboard 自身注册为一个节点
|
|
49
|
-
- `/api/anet/config`
|
|
50
|
-
- 读取本地或运行时配置
|
|
51
|
-
- `/api/auth/login`、`/api/auth/logout`
|
|
52
|
-
- 简单登录退出
|
|
53
|
-
|
|
54
|
-
### 1.3 当前产品定位判断
|
|
55
|
-
|
|
56
|
-
当前系统更接近“实时监控看板 + 运维控制台原型”,还不是完整后台系统。
|
|
57
|
-
|
|
58
|
-
它已经具备这些优点:
|
|
59
|
-
|
|
60
|
-
- 实时感强,5 秒刷新
|
|
61
|
-
- 拓扑图有辨识度,适合演示
|
|
62
|
-
- 已有单节点派单和广播能力
|
|
63
|
-
- 已做最基础的登录保护
|
|
64
|
-
|
|
65
|
-
但它也有明显边界:
|
|
66
|
-
|
|
67
|
-
- 页面层级很浅,只有总览和节点详情
|
|
68
|
-
- 缺少后台常见的信息架构和导航体系
|
|
69
|
-
- 缺少用户、权限、审计、检索、筛选、批量处理等后台基础能力
|
|
70
|
-
- 大量信息仍是“直接把 CommHub 数据展示出来”,没有形成管理闭环
|
|
71
|
-
|
|
72
|
-
## 2. 当前缺什么功能
|
|
73
|
-
|
|
74
|
-
下面按“后台系统”角度拆分缺口。
|
|
75
|
-
|
|
76
|
-
### 2.1 后台基础能力缺口
|
|
77
|
-
|
|
78
|
-
1. 用户管理
|
|
79
|
-
- 目前只有单密码登录,没有用户体系
|
|
80
|
-
- 没有账号、角色、权限组
|
|
81
|
-
- 没有谁执行了什么操作的责任归属
|
|
82
|
-
|
|
83
|
-
2. 权限控制
|
|
84
|
-
- 现在所有登录者权限相同
|
|
85
|
-
- 没有只读、运维、管理员等权限分层
|
|
86
|
-
- 没有敏感操作确认机制
|
|
87
|
-
|
|
88
|
-
3. 审计日志
|
|
89
|
-
- 没有记录谁在什么时间广播了什么、给哪个 agent 发了什么任务
|
|
90
|
-
- 无法回溯误操作
|
|
91
|
-
|
|
92
|
-
4. 导航与信息架构
|
|
93
|
-
- 目前没有真正的后台导航
|
|
94
|
-
- 缺少二级页面与模块组织
|
|
95
|
-
|
|
96
|
-
### 2.2 Agent 管理能力缺口
|
|
97
|
-
|
|
98
|
-
1. Agent 列表页能力不足
|
|
99
|
-
- 现在首页卡片即列表,但没有筛选、搜索、排序、分组
|
|
100
|
-
- 无法按在线状态、工作状态、服务器、Agent 类型查看
|
|
101
|
-
|
|
102
|
-
2. Agent 生命周期管理不足
|
|
103
|
-
- 看得到状态,但不能执行“暂停/恢复/重试/下线/标记异常/批量操作”
|
|
104
|
-
|
|
105
|
-
3. Agent 详情不够完整
|
|
106
|
-
- 没有历史任务轨迹
|
|
107
|
-
- 没有性能曲线
|
|
108
|
-
- 没有最近错误和失败原因聚合
|
|
109
|
-
- 没有消息往来视角的时间线
|
|
110
|
-
|
|
111
|
-
4. Agent 分组能力缺失
|
|
112
|
-
- 没有标签、分组、环境维度
|
|
113
|
-
- 不能快速对“生产/测试”“某项目组”“某地区节点”操作
|
|
114
|
-
|
|
115
|
-
### 2.3 消息与任务管理缺口
|
|
116
|
-
|
|
117
|
-
1. 消息查看能力不足
|
|
118
|
-
- 现在只有拓扑图 recent signal 和局部 inbox
|
|
119
|
-
- 没有统一消息中心
|
|
120
|
-
- 不能按来源、目标、时间、优先级、类型搜索
|
|
121
|
-
|
|
122
|
-
2. 任务管理缺失
|
|
123
|
-
- 能发送任务,但没有任务列表
|
|
124
|
-
- 看不到任务状态流转
|
|
125
|
-
- 没有重试、取消、重新派发
|
|
126
|
-
- 没有失败任务聚合
|
|
127
|
-
|
|
128
|
-
3. 广播能力过于轻量
|
|
129
|
-
- 没有广播历史
|
|
130
|
-
- 没有广播模板
|
|
131
|
-
- 没有发送前确认、影响范围预估、目标筛选
|
|
132
|
-
|
|
133
|
-
### 2.4 日志与可观测性缺口
|
|
134
|
-
|
|
135
|
-
1. 日志中心缺失
|
|
136
|
-
- 节点详情里只有“Last Output”
|
|
137
|
-
- 没有完整日志流、日志级别、日志过滤、关键字搜索
|
|
138
|
-
|
|
139
|
-
2. 指标体系不足
|
|
140
|
-
- 只有在线数、工作数、总数、版本、运行时长
|
|
141
|
-
- 缺少任务成功率、平均响应时长、消息吞吐、失败率、异常率
|
|
142
|
-
|
|
143
|
-
3. 告警与异常处理缺失
|
|
144
|
-
- 没有离线告警、长时间 working 告警、消息堆积告警
|
|
145
|
-
- 没有异常节点列表和待处理队列
|
|
146
|
-
|
|
147
|
-
### 2.5 运营和“吸引人用”相关缺口
|
|
148
|
-
|
|
149
|
-
1. 缺少演示型页面
|
|
150
|
-
- 当前很像内部工具,不像能打动新用户的产品后台
|
|
151
|
-
|
|
152
|
-
2. 缺少新手引导
|
|
153
|
-
- 没有解释“这个系统能做什么”“第一步怎么接入”
|
|
154
|
-
|
|
155
|
-
3. 缺少可分享视图
|
|
156
|
-
- 没有适合老板、运营、合作方看的汇总视图
|
|
157
|
-
|
|
158
|
-
4. 缺少配置管理页
|
|
159
|
-
- 当前只展示 config,不支持管理和校验
|
|
160
|
-
|
|
161
|
-
## 3. 优先级建议
|
|
162
|
-
|
|
163
|
-
### P0:优先补齐“能管理”的最小后台闭环
|
|
164
|
-
|
|
165
|
-
这是最应该先做的,因为它直接决定这个系统是不是后台。
|
|
166
|
-
|
|
167
|
-
1. 后台导航重构
|
|
168
|
-
- 增加左侧导航或顶部导航
|
|
169
|
-
- 拆出核心模块:总览、Agents、任务、消息、日志、系统配置
|
|
170
|
-
|
|
171
|
-
2. Agents 列表页升级
|
|
172
|
-
- 支持搜索、筛选、排序、分组
|
|
173
|
-
- 支持按在线/离线、working/idle、server、agent 类型筛选
|
|
174
|
-
|
|
175
|
-
3. 消息中心
|
|
176
|
-
- 建统一消息页
|
|
177
|
-
- 支持查看所有消息流和按条件过滤
|
|
178
|
-
|
|
179
|
-
4. 任务中心
|
|
180
|
-
- 展示最近任务、执行中任务、失败任务
|
|
181
|
-
- 把“发送任务”从散落操作升级成可追踪对象
|
|
182
|
-
|
|
183
|
-
5. 审计日志
|
|
184
|
-
- 至少先记录广播、单节点发送、登录、退出等关键操作
|
|
185
|
-
|
|
186
|
-
原因:
|
|
187
|
-
|
|
188
|
-
- 这些能力能把当前“监控看板”升级为“可运营后台”
|
|
189
|
-
- 对日常使用价值最大
|
|
190
|
-
- 也最容易让后续功能有落点
|
|
191
|
-
|
|
192
|
-
### P1:补齐运维和可观测性
|
|
193
|
-
|
|
194
|
-
1. 日志中心
|
|
195
|
-
- 统一日志页面
|
|
196
|
-
- 支持关键字、节点、时间范围、级别筛选
|
|
197
|
-
|
|
198
|
-
2. 异常与告警页
|
|
199
|
-
- 离线节点
|
|
200
|
-
- 超时任务
|
|
201
|
-
- 长时间无心跳节点
|
|
202
|
-
- 消息积压
|
|
203
|
-
|
|
204
|
-
3. Agent 详情增强
|
|
205
|
-
- 任务时间线
|
|
206
|
-
- 消息时间线
|
|
207
|
-
- 最近错误
|
|
208
|
-
- 运行指标摘要
|
|
209
|
-
|
|
210
|
-
原因:
|
|
211
|
-
|
|
212
|
-
- 这部分能显著提高留存,因为它解决“真问题”
|
|
213
|
-
- 日常维护、排障、协作价值会明显提升
|
|
214
|
-
|
|
215
|
-
### P2:补齐权限、配置、协作
|
|
216
|
-
|
|
217
|
-
1. 用户管理和角色权限
|
|
218
|
-
2. 系统配置页
|
|
219
|
-
3. 广播模板和批量操作
|
|
220
|
-
4. 收藏视图、标签视图、团队视图
|
|
221
|
-
|
|
222
|
-
原因:
|
|
223
|
-
|
|
224
|
-
- 这是“多人长期使用”必需品
|
|
225
|
-
- 对吸引团队协作和扩大使用范围很重要
|
|
226
|
-
|
|
227
|
-
### P3:增强产品吸引力和展示力
|
|
228
|
-
|
|
229
|
-
1. 面向老板/客户的高级概览页
|
|
230
|
-
2. 更完整的数据故事化展示
|
|
231
|
-
3. Onboarding 引导
|
|
232
|
-
4. Demo 模式或只读分享模式
|
|
233
|
-
|
|
234
|
-
原因:
|
|
235
|
-
|
|
236
|
-
- 这部分最有利于对外展示和拉新
|
|
237
|
-
- 但应建立在后台基础能力已经稳定的前提下
|
|
238
|
-
|
|
239
|
-
## 4. 推荐的信息架构
|
|
240
|
-
|
|
241
|
-
建议后台升级为以下结构:
|
|
242
|
-
|
|
243
|
-
1. 总览 Dashboard
|
|
244
|
-
- 核心指标卡
|
|
245
|
-
- 今日异常
|
|
246
|
-
- 在线率趋势
|
|
247
|
-
- 最近任务与消息
|
|
248
|
-
- 快捷操作
|
|
249
|
-
|
|
250
|
-
2. Agents
|
|
251
|
-
- Agent 列表
|
|
252
|
-
- Agent 分组
|
|
253
|
-
- Agent 详情
|
|
254
|
-
|
|
255
|
-
3. 任务
|
|
256
|
-
- 任务列表
|
|
257
|
-
- 任务详情
|
|
258
|
-
- 失败任务
|
|
259
|
-
|
|
260
|
-
4. 消息
|
|
261
|
-
- 消息流
|
|
262
|
-
- 广播历史
|
|
263
|
-
- Inbox 查看
|
|
264
|
-
|
|
265
|
-
5. 日志
|
|
266
|
-
- 全局日志检索
|
|
267
|
-
- 节点日志
|
|
268
|
-
- 异常日志
|
|
269
|
-
|
|
270
|
-
6. 系统
|
|
271
|
-
- CommHub 状态
|
|
272
|
-
- 配置管理
|
|
273
|
-
- 审计日志
|
|
274
|
-
- 用户与权限
|
|
275
|
-
|
|
276
|
-
## 5. 怎么让后台系统更吸引人用
|
|
277
|
-
|
|
278
|
-
“吸引人用”不能只靠视觉,要靠“上手快 + 信息清楚 + 操作有安全感 + 有成就感”。
|
|
279
|
-
|
|
280
|
-
### 5.1 提升第一眼吸引力
|
|
281
|
-
|
|
282
|
-
1. 把首页从“节点堆叠”升级为“业务概览”
|
|
283
|
-
- 首页第一屏应该先回答:
|
|
284
|
-
- 系统现在是否健康
|
|
285
|
-
- 有多少 Agent 正在工作
|
|
286
|
-
- 今天完成了多少任务
|
|
287
|
-
- 有多少异常需要处理
|
|
288
|
-
|
|
289
|
-
2. 保留当前拓扑图,但降级为“亮点模块”
|
|
290
|
-
- 当前拓扑图很有记忆点,适合作为亮点
|
|
291
|
-
- 但不应该继续占据首页主叙事
|
|
292
|
-
- 应该服务于“网络态势感知”,而不是替代后台导航
|
|
293
|
-
|
|
294
|
-
3. 提升数据的解释性
|
|
295
|
-
- 不只显示数字,还要显示趋势、对比和异常原因
|
|
296
|
-
|
|
297
|
-
### 5.2 提升日常使用价值
|
|
298
|
-
|
|
299
|
-
1. 让用户 30 秒内完成核心动作
|
|
300
|
-
- 找到异常 Agent
|
|
301
|
-
- 查看最近消息
|
|
302
|
-
- 派发任务
|
|
303
|
-
- 查失败日志
|
|
304
|
-
|
|
305
|
-
2. 增加常用快捷入口
|
|
306
|
-
- 最近查看 Agent
|
|
307
|
-
- 最近广播
|
|
308
|
-
- 收藏分组
|
|
309
|
-
- 待处理异常
|
|
310
|
-
|
|
311
|
-
3. 给关键操作增加反馈闭环
|
|
312
|
-
- 发送任务后能看到已发送、已接收、执行中、完成/失败
|
|
313
|
-
- 这样用户会更信任系统
|
|
314
|
-
|
|
315
|
-
### 5.3 提升多人协作意愿
|
|
316
|
-
|
|
317
|
-
1. 引入用户和角色
|
|
318
|
-
2. 引入审计日志
|
|
319
|
-
3. 引入备注、标签、状态标记
|
|
320
|
-
4. 支持共享视图和团队过滤器
|
|
321
|
-
|
|
322
|
-
这样系统才能从“一个人操作的看板”升级为“团队一起使用的后台”。
|
|
323
|
-
|
|
324
|
-
### 5.4 提升对外展示能力
|
|
325
|
-
|
|
326
|
-
1. 增加只读总览模式
|
|
327
|
-
- 给老板、客户、合作方看
|
|
328
|
-
|
|
329
|
-
2. 增加运营视角指标
|
|
330
|
-
- 活跃节点数
|
|
331
|
-
- 平均响应时长
|
|
332
|
-
- 今日完成任务数
|
|
333
|
-
- 异常恢复率
|
|
334
|
-
|
|
335
|
-
3. 增加 onboarding 区块
|
|
336
|
-
- 如何接入 Agent
|
|
337
|
-
- 如何发送任务
|
|
338
|
-
- 如何排查异常
|
|
339
|
-
|
|
340
|
-
## 6. 建议的实施顺序
|
|
341
|
-
|
|
342
|
-
### 第一阶段:把原型升级为后台
|
|
343
|
-
|
|
344
|
-
目标:补齐后台骨架
|
|
345
|
-
|
|
346
|
-
- 重构导航和布局
|
|
347
|
-
- 新增 Agents 列表页
|
|
348
|
-
- 新增任务页
|
|
349
|
-
- 新增消息页
|
|
350
|
-
- 把首页调整为概览页
|
|
351
|
-
|
|
352
|
-
### 第二阶段:把后台升级为可运维系统
|
|
353
|
-
|
|
354
|
-
目标:提升日常使用频率
|
|
355
|
-
|
|
356
|
-
- 新增日志中心
|
|
357
|
-
- 新增异常与告警
|
|
358
|
-
- 增强 Agent 详情页
|
|
359
|
-
- 增加任务状态追踪
|
|
360
|
-
|
|
361
|
-
### 第三阶段:把系统升级为可协作产品
|
|
362
|
-
|
|
363
|
-
目标:让多人愿意长期使用
|
|
364
|
-
|
|
365
|
-
- 用户管理
|
|
366
|
-
- 角色权限
|
|
367
|
-
- 审计日志
|
|
368
|
-
- 标签和分组
|
|
369
|
-
- 批量操作
|
|
370
|
-
|
|
371
|
-
### 第四阶段:把系统升级为可展示产品
|
|
372
|
-
|
|
373
|
-
目标:帮助吸引更多用户和团队
|
|
374
|
-
|
|
375
|
-
- 老板视图 / 运营视图
|
|
376
|
-
- 只读分享模式
|
|
377
|
-
- onboarding 与空状态设计
|
|
378
|
-
- 更有产品感的数据故事呈现
|
|
379
|
-
|
|
380
|
-
## 7. 建议先落地的具体页面
|
|
381
|
-
|
|
382
|
-
如果只选第一批最值得做的页面,我建议是:
|
|
383
|
-
|
|
384
|
-
1. 新首页:运营化 Dashboard
|
|
385
|
-
- 替换当前“以卡片为主”的首页结构
|
|
386
|
-
|
|
387
|
-
2. Agents 页
|
|
388
|
-
- 当前首页中的 Agent 卡片沉淀到独立页面
|
|
389
|
-
|
|
390
|
-
3. Messages 页
|
|
391
|
-
- 把消息流和 inbox 能力做成统一页面
|
|
392
|
-
|
|
393
|
-
4. Tasks 页
|
|
394
|
-
- 把派单、状态追踪、失败重试形成闭环
|
|
395
|
-
|
|
396
|
-
5. Logs 页
|
|
397
|
-
- 补齐排障入口
|
|
398
|
-
|
|
399
|
-
## 8. 结论
|
|
400
|
-
|
|
401
|
-
当前项目已经有一个不错的基础:
|
|
402
|
-
|
|
403
|
-
- 已有实时状态
|
|
404
|
-
- 已有节点详情
|
|
405
|
-
- 已有消息与派单接口
|
|
406
|
-
- 已有可视化亮点
|
|
407
|
-
|
|
408
|
-
但如果目标是“做好后台系统,吸引大家来使用”,重点不是继续堆一个更炫的总览页,而是尽快把它从展示型面板升级成:
|
|
409
|
-
|
|
410
|
-
- 有导航的信息系统
|
|
411
|
-
- 有任务和消息闭环的操作系统
|
|
412
|
-
- 有日志、异常、审计、权限的协作系统
|
|
413
|
-
|
|
414
|
-
建议先按 P0 和 P1 推进,这样最能快速提升产品可用性和团队使用意愿。
|
package/docs/iteration-plan.md
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# Dashboard 迭代计划
|
|
2
|
-
|
|
3
|
-
> 更新:2026-04-10 | N站马
|
|
4
|
-
|
|
5
|
-
## 当前进度
|
|
6
|
-
|
|
7
|
-
| 任务 | 状态 | 负责 |
|
|
8
|
-
|------|------|------|
|
|
9
|
-
| Tasks 任务列表页 | done | N站马 |
|
|
10
|
-
| 首页任务状态统计 | done | N站马 |
|
|
11
|
-
| 节点详情补新字段 | done | N站马 |
|
|
12
|
-
| API 代理层(兼容降级) | done | N站马 |
|
|
13
|
-
| CommHub /api/tasks | **阻塞** | 通信龙 server |
|
|
14
|
-
| CommHub /api/status 补字段 | **阻塞** | 通信龙 server |
|
|
15
|
-
| 联调验证 | 待 server 就绪 | N站马+N站牛 |
|
|
16
|
-
|
|
17
|
-
## 迭代路线
|
|
18
|
-
|
|
19
|
-
### Sprint 1: 当前(基础功能)
|
|
20
|
-
|
|
21
|
-
- [x] Tasks 页(已降级对接 /api/completions)
|
|
22
|
-
- [x] 首页 Task 统计面板
|
|
23
|
-
- [x] 节点详情补字段(前端就绪,等后端数据)
|
|
24
|
-
- [x] API 代理层自动降级
|
|
25
|
-
- [ ] 联调 + 部署
|
|
26
|
-
|
|
27
|
-
### Sprint 2: 导航 + 数据层
|
|
28
|
-
|
|
29
|
-
- [ ] 侧边栏导航(Overview / Nodes / Tasks / Messages / Logs / Settings)
|
|
30
|
-
- [ ] SWR/React Query 统一数据层,替换分散 setInterval 轮询
|
|
31
|
-
- [ ] Next.js middleware 统一鉴权,干掉各组件分散 401 检测
|
|
32
|
-
|
|
33
|
-
### Sprint 3: 页面补齐
|
|
34
|
-
|
|
35
|
-
- [ ] Nodes 列表页(筛选 status/agent/server,批量操作)
|
|
36
|
-
- [ ] Messages 页(按 type/from/to 搜索,调试模式)
|
|
37
|
-
- [ ] Task Timeline 详情页(created→delivered→running→replied 全链路)
|
|
38
|
-
|
|
39
|
-
### Sprint 4: 运维闭环
|
|
40
|
-
|
|
41
|
-
- [ ] Logs 页(全局搜索 + 节点过滤 + 错误级别)
|
|
42
|
-
- [ ] 异常高亮(timeout/failed task,offline/stale 节点区分)
|
|
43
|
-
- [ ] SSE 实时推送替代轮询
|
|
44
|
-
|
|
45
|
-
### Sprint 5: 安全 + 多人
|
|
46
|
-
|
|
47
|
-
- [ ] 登录限流 + CSRF
|
|
48
|
-
- [ ] 密码和 CommHub token 分离
|
|
49
|
-
- [ ] /api/anet/config 脱敏
|
|
50
|
-
- [ ] 多用户 + 项目隔离 + RBAC
|
|
51
|
-
|
|
52
|
-
## 建议
|
|
53
|
-
|
|
54
|
-
1. **Sprint 2 最值得投入** — 导航重构是从"调试页"变"后台系统"的分水岭,SWR 统一数据层能解决当前最大的技术债(每个组件各自轮询)
|
|
55
|
-
|
|
56
|
-
2. **SSE 优于轮询** — Dashboard 可直接订阅 CommHub /events/Dashboard,省掉所有 5s setInterval,实时性更好、请求量更低
|
|
57
|
-
|
|
58
|
-
3. **空状态设计别拖** — 每个新页面上线时同步做空状态引导,新用户第一印象很重要
|
|
59
|
-
|
|
60
|
-
4. **拓扑图保持但降级** — 放 Overview 显眼位置作为产品记忆点,但不再主导首页布局
|
|
61
|
-
|
|
62
|
-
5. **Server 接口升级是最大阻塞** — Sprint 1 联调和 Sprint 3 的 Messages/Task Timeline 都依赖通信龙 server 侧升级,建议推动优先级
|
package/docs/v4-plan.md
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# Dashboard V4 优化方案
|
|
2
|
-
|
|
3
|
-
## 上一阶段成果
|
|
4
|
-
- 51 commits,8+ 页面,preview.8→27 全对接
|
|
5
|
-
- V3 Auth 完整:登录/注册/token管理/网络管理/成员查看
|
|
6
|
-
- SSE 实时 + SWR 数据层 + network_id 隔离
|
|
7
|
-
- Docker 测试环境自动化
|
|
8
|
-
|
|
9
|
-
## preview.27 新发现
|
|
10
|
-
- 注册返回 `utok_`(用户 token)+ `ntok_`(网络 token)
|
|
11
|
-
- 首个注册用户自动成为 `admin` 角色
|
|
12
|
-
- `/api/task_events` 端点可用
|
|
13
|
-
- `/api/auth/tokens` 返回多种 token
|
|
14
|
-
|
|
15
|
-
## V4 优化清单
|
|
16
|
-
|
|
17
|
-
### 产品
|
|
18
|
-
1. 注册流程:展示 utok_ 和 ntok_ 双 token(用户 token + 网络 token)
|
|
19
|
-
2. Network 多租户:完整的网络→成员→邀请→角色 流程
|
|
20
|
-
3. 任务事件时间线:/api/task_events 接入 Task 详情页
|
|
21
|
-
|
|
22
|
-
### 设计
|
|
23
|
-
4. 统一色彩系统:定义 design tokens(primary/success/warning/error)
|
|
24
|
-
5. 首页信息层次优化:减少视觉噪音
|
|
25
|
-
6. 空状态设计统一
|
|
26
|
-
|
|
27
|
-
### 前端
|
|
28
|
-
7. 注册响应支持 utok_/ntok_ 双 token
|
|
29
|
-
8. 新增 /api/hub/task-events 代理
|
|
30
|
-
9. Task 详情页接入 task_events 时间线
|
|
31
|
-
|
|
32
|
-
### 运维
|
|
33
|
-
10. Docker 测试自动化脚本
|
|
34
|
-
11. 健康检查监控
|
|
35
|
-
|
|
36
|
-
### 运营
|
|
37
|
-
12. Demo 数据丰富化
|
|
38
|
-
13. Onboarding 引导
|
|
File without changes
|
/package/.next/static/{7dwKlhAm5uyghPmkAubQK → jTh5m77FIfQccc0gftvik}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|