feat(admin): 补全平台任务观测 + 空间管理 + 基建加 MinIO/实时探针

对照已实现系统功能补 admin 缺失模块(feat/site):

- 全平台任务/运行观测:GET /admin/tasks(跨租户查 sundynix_task,join 租户名/提交人邮箱/评测,
  按状态/租户筛 + 状态计数;含 HITL 待审批=筛 waiting)+ TasksPage(状态卡+筛+表)。
- 空间(Space)管理:GET /admin/spaces(跨租户列 Space + 成员数子查询 + kind/归档态)+ SpacesPage。
- 基建观测:infra 加 MinIO(126 对象存储);postgres/redis/minio 从启动标志升级为实时 ping
  (blob.Ping/Postgres.Ping/Redis.Ping),能反映中途掉线。StatusPage 加 minio 标签、6 个依赖。
- 模型健康/熔断:确认 DashboardPage 已有「运行时链路态」渲染 m.health,无需重做。

验证:admin tsc + vitest 41 过、gateway build/vet/test 过;两新页浏览器实测渲染+优雅错误处理;
两新端点起临时 gateway 打真 PG 实测——tasks(counts+3路join)、spaces(成员数子查询)均返真数据。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Blizzard
2026-07-18 17:06:25 +08:00
parent de315450a4
commit 373167b705
13 changed files with 544 additions and 5 deletions
+11 -1
View File
@@ -46,9 +46,19 @@ func Open(endpoint, accessKey, secretKey, bucket string) *Store {
return &Store{cli: cli, bucket: bucket}
}
// Ready 报告对象存储是否可用。
// Ready 报告对象存储是否可用(启动时连接状态)
func (s *Store) Ready() bool { return s != nil && s.cli != nil }
// Ping 活性探测:向 MinIO 发一次 BucketExists,验证连接此刻真的可用(非仅启动时连过)。
// 供服务状态页做实时健康灯。
func (s *Store) Ping(ctx context.Context) bool {
if s == nil || s.cli == nil {
return false
}
_, err := s.cli.BucketExists(ctx, s.bucket)
return err == nil
}
// Put 写入一段文本到对象键 key。
func (s *Store) Put(ctx context.Context, key, content string) error {
r := bytes.NewReader([]byte(content))