downcity 1.1.407 → 1.1.411

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.
Files changed (39) hide show
  1. package/README.md +1 -0
  2. package/bin/federation/admin/commands/dashboard.d.ts.map +1 -1
  3. package/bin/federation/admin/commands/dashboard.js +4 -4
  4. package/bin/federation/admin/commands/dashboard.js.map +1 -1
  5. package/bin/federation/admin/commands/usage.d.ts.map +1 -1
  6. package/bin/federation/admin/commands/usage.js +44 -23
  7. package/bin/federation/admin/commands/usage.js.map +1 -1
  8. package/bin/federation/admin/dashboard/dashboard-data.d.ts +2 -2
  9. package/bin/federation/admin/dashboard/dashboard-data.d.ts.map +1 -1
  10. package/bin/federation/admin/dashboard/dashboard-data.js +31 -3
  11. package/bin/federation/admin/dashboard/dashboard-data.js.map +1 -1
  12. package/bin/federation/admin/dashboard/dashboard-metrics.d.ts.map +1 -1
  13. package/bin/federation/admin/dashboard/dashboard-metrics.js +35 -28
  14. package/bin/federation/admin/dashboard/dashboard-metrics.js.map +1 -1
  15. package/bin/federation/create/templates/CloudflareWorkersTemplate.js +4 -2
  16. package/bin/federation/create/templates/CloudflareWorkersTemplate.js.map +1 -1
  17. package/bin/federation/create/templates/LocalNodeTemplate.js +3 -1
  18. package/bin/federation/create/templates/LocalNodeTemplate.js.map +1 -1
  19. package/bin/federation/index.d.ts.map +1 -1
  20. package/bin/federation/index.js +35 -0
  21. package/bin/federation/index.js.map +1 -1
  22. package/bin/federation/types/AdminDashboard.d.ts +4 -0
  23. package/bin/federation/types/AdminDashboard.d.ts.map +1 -1
  24. package/bin/federation/types/FederationWeb.d.ts +41 -0
  25. package/bin/federation/types/FederationWeb.d.ts.map +1 -0
  26. package/bin/federation/types/FederationWeb.js +8 -0
  27. package/bin/federation/types/FederationWeb.js.map +1 -0
  28. package/bin/federation/web/FederationWebCommand.d.ts +10 -0
  29. package/bin/federation/web/FederationWebCommand.d.ts.map +1 -0
  30. package/bin/federation/web/FederationWebCommand.js +61 -0
  31. package/bin/federation/web/FederationWebCommand.js.map +1 -0
  32. package/bin/federation/web/FederationWebServer.d.ts +12 -0
  33. package/bin/federation/web/FederationWebServer.d.ts.map +1 -0
  34. package/bin/federation/web/FederationWebServer.js +385 -0
  35. package/bin/federation/web/FederationWebServer.js.map +1 -0
  36. package/bin/federation/web-ui/app.css +24 -0
  37. package/bin/federation/web-ui/app.js +318 -0
  38. package/bin/federation/web-ui/index.html +27 -0
  39. package/package.json +5 -4
package/README.md CHANGED
@@ -11,6 +11,7 @@ downcity -v
11
11
 
12
12
  - `city` 是本机 City 容器,基于 `City()` 与 Agent SDK 管理全局 Agent、运行时、Plugin 与控制台。
13
13
  - `fed` 是 Federation Server Manager;TUI 用于注册和管理 Server,项目命令读取当前目录的 `federation.json`。Local Node.js 和 Cloudflare Workers 都通过 `fed deploy` 部署。
14
+ - `fed web` 在 `127.0.0.1:43128` 启动当前 Federation 的本地 Web 管理 UI;Admin Key 只保留在 CLI 本地 BFF 中。
14
15
 
15
16
  ```bash
16
17
  fed create ./my-fed
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../../src/federation/admin/commands/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAMjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE;;GAEG;AACH,wBAAsB,eAAe,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDtH"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../../src/federation/admin/commands/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAMjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE;;GAEG;AACH,wBAAsB,eAAe,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDtH"}
@@ -41,14 +41,14 @@ export async function manageDashboard(a, _base_url, runtime) {
41
41
  const next_range = await select_range(runtime, range);
42
42
  if (next_range) {
43
43
  range = next_range;
44
- snapshot = raw_data ? build_dashboard_snapshot(raw_data, range) : undefined;
45
- if (snapshot)
46
- await show_dashboard_view(runtime, "overview", snapshot);
44
+ raw_data = await runtime.with_loading(t({ zh: "读取用户系统 Dashboard", en: "Loading user system dashboard" }), async () => await fetch_dashboard_raw_data(a, range));
45
+ snapshot = build_dashboard_snapshot(raw_data, range);
46
+ await show_dashboard_view(runtime, "overview", snapshot);
47
47
  }
48
48
  continue;
49
49
  }
50
50
  if (action === "refresh" || !raw_data || !snapshot) {
51
- raw_data = await runtime.with_loading(t({ zh: "读取用户系统 Dashboard", en: "Loading user system dashboard" }), async () => await fetch_dashboard_raw_data(a));
51
+ raw_data = await runtime.with_loading(t({ zh: "读取用户系统 Dashboard", en: "Loading user system dashboard" }), async () => await fetch_dashboard_raw_data(a, range));
52
52
  snapshot = build_dashboard_snapshot(raw_data, range);
53
53
  }
54
54
  const view = action === "refresh" ? "overview" : action;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/federation/admin/commands/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/federation/admin/commands/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AACrH,OAAO,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,EAAE,CAAC,EAAE,MAAM,uBAAuB,CAAC;AAI1C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,CAAkB,EAAE,SAAiB,EAAE,OAA0B;IACrG,IAAI,QAAwC,CAAC;IAC7C,IAAI,QAAwC,CAAC;IAC7C,IAAI,KAAK,GAAoB,KAAK,CAAC;IAEnC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,uBAAuB,EAAE,CAAC,EAAE;YAC5F,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,aAAa,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;YAC7G,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;YACvD,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;YAC7D,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;YAC3D,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;YAC3D,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;YACvD,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;YACzD,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE;YACzE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE;YACvF,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;YACtG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;YAC3D,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7F,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;SACtD,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO;QAEzC,IAAI,CAAC;YACH,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACtD,IAAI,UAAU,EAAE,CAAC;oBACf,KAAK,GAAG,UAAU,CAAC;oBACnB,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CACnC,CAAC,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,+BAA+B,EAAE,CAAC,EAClE,KAAK,IAAI,EAAE,CAAC,MAAM,wBAAwB,CAAC,CAAC,EAAE,KAAK,CAAC,CACrD,CAAC;oBACF,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;oBACrD,MAAM,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAC3D,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnD,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CACnC,CAAC,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,+BAA+B,EAAE,CAAC,EAClE,KAAK,IAAI,EAAE,CAAC,MAAM,wBAAwB,CAAC,CAAC,EAAE,KAAK,CAAC,CACrD,CAAC;gBACF,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAwB,CAAC;YAC1E,MAAM,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,OAA0B,EAAE,aAA8B;IACpF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE;QAC3E,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC;QACpC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC;QACjC,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC;QAClC,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC;QAClC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7F,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;KACtD,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACnD,OAAO,MAAyB,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAsB,EAAE,aAA8B;IAC1E,MAAM,YAAY,GAAG,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,OAAO;QACL,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,YAAY,EAAE;QAC7C,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;KACxB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,KAAsB;IACxC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,kCAAkC,EAAE,CAAC,CAAC;IACvG,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,gCAAgC,EAAE,CAAC,CAAC;IAC1F,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,iCAAiC,EAAE,CAAC,CAAC;IAC7F,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,OAA0B,EAAE,IAAoB,EAAE,QAA4B;IAC/G,MAAM,OAAO,CAAC,UAAU,CAAC;QACvB,KAAK,EAAE,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;QACjD,OAAO,EAAE;YACP,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;YAC5B,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;YAC7B,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;SAC5B;QACD,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;QACpC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,oBAAoB,EAAE,CAAC;KACvE,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../../src/federation/admin/commands/usage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE,wBAAsB,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDjH"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../../src/federation/admin/commands/usage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE,wBAAsB,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEjH"}
@@ -8,19 +8,19 @@ export async function manageUsage(a, _baseUrl, runtime) {
8
8
  while (true) {
9
9
  const act = await runtime.select(t({ zh: "用量统计", en: "Usage analytics" }), [
10
10
  {
11
- label: t({ zh: "查看调用事件", en: "List events" }),
12
- value: "events",
11
+ label: t({ zh: "查看活跃概览", en: "Activity overview" }),
12
+ value: "overview",
13
13
  hint: t({
14
- zh: "查看最近 service 调用明细,包含 Bureau/产品、service、状态和创建时间。",
15
- en: "View recent service-call events with Bureau/product, service, status, and creation time.",
14
+ zh: "查看最近 30 天活跃用户、DAU、WAU、MAU、调用量、Token 与 Credits。",
15
+ en: "View active users, DAU, WAU, MAU, calls, tokens, and Credits for the latest 30 days.",
16
16
  }),
17
17
  },
18
18
  {
19
- label: t({ zh: "查看汇总统计", en: "Summary" }),
20
- value: "summary",
19
+ label: t({ zh: "查看用户用量", en: "User usage" }),
20
+ value: "users",
21
21
  hint: t({
22
- zh: "按 Bureau/产品、service 和状态聚合调用次数,用于观察消耗趋势和失败分布。",
23
- en: "Aggregate call counts by Bureau/product, service, and status to inspect usage trends and failures.",
22
+ zh: "按用户查看调用、Token、Credits、成功率和最后活跃时间。",
23
+ en: "Inspect calls, tokens, Credits, success rate, and last active time by user.",
24
24
  }),
25
25
  },
26
26
  { label: t({ zh: "导航", en: "Navigation" }), value: "__section_navigation__", disabled: true },
@@ -33,27 +33,34 @@ export async function manageUsage(a, _baseUrl, runtime) {
33
33
  if (!act || act === "back")
34
34
  return;
35
35
  try {
36
- if (act === "events") {
37
- const b = await runtime.with_loading(t({ zh: "用量事件", en: "Usage Events" }), async () => await svc.get("events"));
38
- const items = b.items.slice(-20);
36
+ const query = build_usage_query();
37
+ if (act === "overview") {
38
+ const b = await runtime.with_loading(t({ zh: "活跃概览", en: "Activity overview" }), async () => await svc.get(`admin/overview?${query}`));
39
+ const activity = read_record(b.activity);
40
+ const summary = read_record(b.summary);
39
41
  await runtime.show_table({
40
- title: t({ zh: `${items.length} 条用量事件`, en: `${items.length} Usage Events` }),
41
- columns: [t({ zh: "创建时间", en: "Created" }), "Bureau", t({ zh: "服务", en: "Service" }), t({ zh: "状态", en: "Status" })],
42
- rows: items.map((e) => ({
43
- cells: [e.created_at.slice(0, 19), e.bureau_id, e.service, e.status],
44
- })),
45
- empty_message: t({ zh: "暂无用量事件。", en: "No usage events." }),
42
+ title: t({ zh: "最近 30 天 Usage", en: "Latest 30-day Usage" }),
43
+ columns: [t({ zh: "指标", en: "Metric" }), t({ zh: "值", en: "Value" })],
44
+ rows: [
45
+ { cells: ["DAU", String(activity.daily_active_users ?? 0)] },
46
+ { cells: ["WAU", String(activity.weekly_active_users ?? 0)] },
47
+ { cells: ["MAU", String(activity.monthly_active_users ?? 0)] },
48
+ { cells: [t({ zh: "范围活跃", en: "Range active" }), String(activity.range_active_users ?? 0)] },
49
+ { cells: [t({ zh: "调用", en: "Executions" }), String(summary.execution_count ?? 0)] },
50
+ { cells: ["Total Tokens", String(summary.total_tokens ?? 0)] },
51
+ { cells: ["Credits", String(summary.credits_used ?? 0)] },
52
+ ],
46
53
  });
47
54
  }
48
55
  else {
49
- const b = await runtime.with_loading(t({ zh: "用量汇总", en: "Usage Summary" }), async () => await svc.get("summary"));
56
+ const b = await runtime.with_loading(t({ zh: "用户用量", en: "User usage" }), async () => await svc.get(`admin/users?${query}`));
50
57
  await runtime.show_table({
51
- title: t({ zh: "用量汇总", en: "Usage Summary" }),
52
- columns: ["City", t({ zh: "服务", en: "Service" }), t({ zh: "数量", en: "Count" }), t({ zh: "状态", en: "Status" })],
53
- rows: b.items.map((s) => ({
54
- cells: [s.bureau_id, s.service, String(s.count), s.status],
58
+ title: t({ zh: "用户用量", en: "User usage" }),
59
+ columns: ["User ID", t({ zh: "调用", en: "Calls" }), "Tokens", "Credits", t({ zh: "成功率", en: "Success" }), t({ zh: "最后活跃", en: "Last active" })],
60
+ rows: b.items.map((item) => ({
61
+ cells: [String(item.user_id ?? ""), String(item.execution_count ?? 0), String(item.total_tokens ?? 0), String(item.credits_used ?? 0), format_rate(item.success_rate), String(item.last_active_at ?? "").slice(0, 19)],
55
62
  })),
56
- empty_message: t({ zh: "暂无用量汇总。", en: "No usage summary." }),
63
+ empty_message: t({ zh: "暂无用户用量。", en: "No user usage." }),
57
64
  });
58
65
  }
59
66
  }
@@ -63,4 +70,18 @@ export async function manageUsage(a, _baseUrl, runtime) {
63
70
  }
64
71
  }
65
72
  }
73
+ function build_usage_query() {
74
+ const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
75
+ const to = new Date().toLocaleDateString("en-CA", { timeZone: timezone });
76
+ const from_date = new Date(`${to}T00:00:00.000Z`);
77
+ from_date.setUTCDate(from_date.getUTCDate() - 29);
78
+ return new URLSearchParams({ from: from_date.toISOString().slice(0, 10), to, timezone }).toString();
79
+ }
80
+ function read_record(value) {
81
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
82
+ }
83
+ function format_rate(value) {
84
+ const number = Number(value);
85
+ return Number.isFinite(number) ? `${(number * 100).toFixed(1)}%` : "-";
86
+ }
66
87
  //# sourceMappingURL=usage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../../src/federation/admin/commands/usage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,uBAAuB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAG5F,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,CAAkB,EAAE,QAAgB,EAAE,OAA0B;IAChG,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE;YACvE;gBACE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC;gBAC7C,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,CAAC,CAAC;oBACN,EAAE,EAAE,iDAAiD;oBACrD,EAAE,EAAE,0FAA0F;iBAC/F,CAAC;aACH;YACD;gBACE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;gBACzC,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,CAAC,CAAC;oBACN,EAAE,EAAE,8CAA8C;oBAClD,EAAE,EAAE,oGAAoG;iBACzG,CAAC;aACH;YACD,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7F;gBACE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;gBAClC,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,4BAA4B,EAAE,CAAC;aACnE;SACF,CAAC,CAAC;QACL,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO;QAEnC,IAAI,CAAC;YACH,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrB,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAA0F,QAAQ,CAAC,CAAC,CAAC;gBAC1M,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBACjC,MAAM,OAAO,CAAC,UAAU,CAAC;oBACvB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,QAAQ,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,eAAe,EAAE,CAAC;oBAC7E,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACpH,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACtB,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;qBACrE,CAAC,CAAC;oBACH,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC;iBAC5D,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAqF,SAAS,CAAC,CAAC,CAAC;gBACvM,MAAM,OAAO,CAAC,UAAU,CAAC;oBACvB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC;oBAC7C,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC9G,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACxB,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;qBAC3D,CAAC,CAAC;oBACH,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,mBAAmB,EAAE,CAAC;iBAC7D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../../src/federation/admin/commands/usage.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,9 @@
6
6
  * - 每个 endpoint 独立容错,方便 Dashboard 在 service 缺失时仍可展示。
7
7
  */
8
8
  import { FederationAdmin } from "@downcity/city";
9
- import type { dashboard_raw_data } from "../../types/AdminDashboard.js";
9
+ import type { dashboard_raw_data, dashboard_range } from "../../types/AdminDashboard.js";
10
10
  /**
11
11
  * 读取 Dashboard 原始数据。
12
12
  */
13
- export declare function fetch_dashboard_raw_data(a: FederationAdmin): Promise<dashboard_raw_data>;
13
+ export declare function fetch_dashboard_raw_data(a: FederationAdmin, range: dashboard_range): Promise<dashboard_raw_data>;
14
14
  //# sourceMappingURL=dashboard-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-data.d.ts","sourceRoot":"","sources":["../../../../src/federation/admin/dashboard/dashboard-data.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,kBAAkB,EAKnB,MAAM,sCAAsC,CAAC;AAE9C;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmC9F"}
1
+ {"version":3,"file":"dashboard-data.d.ts","sourceRoot":"","sources":["../../../../src/federation/admin/dashboard/dashboard-data.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EAKhB,MAAM,sCAAsC,CAAC;AAE9C;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyCtH"}
@@ -8,11 +8,15 @@
8
8
  /**
9
9
  * 读取 Dashboard 原始数据。
10
10
  */
11
- export async function fetch_dashboard_raw_data(a) {
11
+ export async function fetch_dashboard_raw_data(a, range) {
12
12
  const services = create_initial_service_state();
13
+ const usage_query = build_usage_query(range);
13
14
  const accounts_users = await read_endpoint(services, "accounts", "users", async () => (await a.service("accounts").get("users")).items);
14
15
  const accounts_sessions = await read_endpoint(services, "accounts", "sessions", async () => (await a.service("accounts").get("sessions")).items);
15
- const usage_events = await read_endpoint(services, "usage", "events", async () => (await a.service("usage").get("events")).items);
16
+ const usage_overviews = await read_endpoint(services, "usage", "admin/overview", async () => [
17
+ await a.service("usage").get(`admin/overview?${usage_query}`),
18
+ ]);
19
+ const usage_users = await read_endpoint(services, "usage", "admin/users", async () => (await a.service("usage").get(`admin/users?${usage_query}`)).items);
16
20
  const credits_users = await read_endpoint(services, "credits", "users", async () => await a.credits.list_users({ limit: 200 }));
17
21
  const credits_topups = await read_endpoint(services, "credits", "topups", async () => await a.credits.transactions.list({ kind: "topup", limit: 200 }));
18
22
  const payment_payments = await read_endpoint(services, "payment", "payments", async () => (await a.service("payment").get("payments")).items);
@@ -22,13 +26,37 @@ export async function fetch_dashboard_raw_data(a) {
22
26
  services,
23
27
  accounts_users,
24
28
  accounts_sessions,
25
- usage_events,
29
+ usage_events: [],
30
+ usage_overview: usage_overviews[0] ?? {},
31
+ usage_users,
26
32
  credits_users,
27
33
  credits_topups,
28
34
  payment_payments,
29
35
  payment_events,
30
36
  };
31
37
  }
38
+ function build_usage_query(range) {
39
+ const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
40
+ const to = format_local_date(new Date(), timezone);
41
+ const days = range === "today" ? 1 : range === "7d" ? 7 : range === "30d" ? 30 : 400;
42
+ const from_date = new Date(`${to}T00:00:00.000Z`);
43
+ from_date.setUTCDate(from_date.getUTCDate() - (days - 1));
44
+ return new URLSearchParams({ from: from_date.toISOString().slice(0, 10), to, timezone }).toString();
45
+ }
46
+ function format_local_date(date, timezone) {
47
+ const parts = new Intl.DateTimeFormat("en-US", {
48
+ timeZone: timezone,
49
+ year: "numeric",
50
+ month: "2-digit",
51
+ day: "2-digit",
52
+ }).formatToParts(date);
53
+ const year = parts.find((item) => item.type === "year")?.value;
54
+ const month = parts.find((item) => item.type === "month")?.value;
55
+ const day = parts.find((item) => item.type === "day")?.value;
56
+ if (!year || !month || !day)
57
+ throw new Error("Unable to resolve local Usage date.");
58
+ return `${year}-${month}-${day}`;
59
+ }
32
60
  /**
33
61
  * 创建初始服务状态。
34
62
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-data.js","sourceRoot":"","sources":["../../../../src/federation/admin/dashboard/dashboard-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-data.js","sourceRoot":"","sources":["../../../../src/federation/admin/dashboard/dashboard-data.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-metrics.d.ts","sourceRoot":"","sources":["../../../../src/federation/admin/dashboard/dashboard-metrics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,eAAe,EACf,kBAAkB,EAElB,kBAAkB,EAEnB,MAAM,sCAAsC,CAAC;AAI9C;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,eAAe,GAAG,kBAAkB,CAuFjH"}
1
+ {"version":3,"file":"dashboard-metrics.d.ts","sourceRoot":"","sources":["../../../../src/federation/admin/dashboard/dashboard-metrics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,eAAe,EACf,kBAAkB,EAElB,kBAAkB,EAEnB,MAAM,sCAAsC,CAAC;AAI9C;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,eAAe,GAAG,kBAAkB,CAyFjH"}
@@ -15,12 +15,14 @@ export function build_dashboard_snapshot(raw_data, range) {
15
15
  const paid_payments_with_amount = paid_payments.filter((item) => has_amount_minor(item));
16
16
  const range_paid_payments = paid_payments.filter((item) => in_range(item, window));
17
17
  const range_paid_payments_with_amount = range_paid_payments.filter((item) => has_amount_minor(item));
18
- const range_usage_events = raw_data.usage_events.filter((item) => in_range(item, window));
18
+ const usage_activity = read_record(raw_data.usage_overview.activity);
19
+ const usage_summary = read_record(raw_data.usage_overview.summary);
19
20
  const first_paid_times = read_first_paid_times(paid_payments);
20
- const active_in_range = count_unique(range_usage_events.map((item) => read_string(item.user_id)));
21
+ const active_in_range = read_number(usage_activity.range_active_users);
21
22
  const paying_users_range = count_unique(range_paid_payments.map((item) => read_string(item.user_id)));
22
- const error_events_range = range_usage_events.filter((item) => read_string(item.status) === "error").length;
23
- const usage_error_rate_range = safe_rate(error_events_range, range_usage_events.length);
23
+ const usage_event_count = read_number(usage_summary.execution_count);
24
+ const error_events_range = read_number(usage_summary.failed_count);
25
+ const usage_error_rate_range = safe_rate(error_events_range, usage_event_count);
24
26
  const users = {
25
27
  total_registered: raw_data.accounts_users.length,
26
28
  new_today: count_records_since(raw_data.accounts_users, window.today_start),
@@ -33,12 +35,15 @@ export function build_dashboard_snapshot(raw_data, range) {
33
35
  recent_users: sort_recent(raw_data.accounts_users).slice(0, 10),
34
36
  };
35
37
  const activity = {
36
- active_today: count_usage_users_since(raw_data.usage_events, window.today_start),
37
- active_7d: count_usage_users_since(raw_data.usage_events, window.seven_days_start),
38
- active_30d: count_usage_users_since(raw_data.usage_events, window.thirty_days_start),
38
+ active_today: read_number(usage_activity.daily_active_users),
39
+ active_7d: read_number(usage_activity.weekly_active_users),
40
+ active_30d: read_number(usage_activity.monthly_active_users),
39
41
  active_in_range,
40
- stickiness_today_over_30d: safe_rate(count_usage_users_since(raw_data.usage_events, window.today_start), count_usage_users_since(raw_data.usage_events, window.thirty_days_start)),
41
- recent_events: sort_recent(raw_data.usage_events).slice(0, 20),
42
+ stickiness_today_over_30d: read_nullable_number(usage_activity.daily_monthly_stickiness),
43
+ recent_events: [...raw_data.usage_users]
44
+ .sort((left, right) => read_time(right.last_active_at) - read_time(left.last_active_at))
45
+ .slice(0, 20)
46
+ .map((item) => ({ ...item, created_at: item.last_active_at, service: "ai", status: `${read_number(item.execution_count)} calls` })),
42
47
  };
43
48
  return {
44
49
  generated_at: new Date(window.now).toISOString(),
@@ -73,13 +78,13 @@ export function build_dashboard_snapshot(raw_data, range) {
73
78
  pending_topups: raw_data.payment_payments.filter((item) => read_string(item.status) === "pending").length,
74
79
  },
75
80
  usage: {
76
- total_events: raw_data.usage_events.length,
77
- events_range: range_usage_events.length,
78
- success_events_range: range_usage_events.filter((item) => read_string(item.status) === "success").length,
81
+ total_events: usage_event_count,
82
+ events_range: usage_event_count,
83
+ success_events_range: read_number(usage_summary.succeeded_count),
79
84
  error_events_range,
80
85
  error_rate_range: usage_error_rate_range,
81
- top_services: read_top_services(range_usage_events),
82
- top_models: read_top_models(range_usage_events),
86
+ top_services: usage_event_count > 0 ? [{ service: "ai", count: usage_event_count }] : [],
87
+ top_models: read_top_usage_models(raw_data.usage_users),
83
88
  },
84
89
  health: {
85
90
  missing_revenue_amount_count: paid_payments.length - paid_payments_with_amount.length,
@@ -135,9 +140,6 @@ function in_range(row, window) {
135
140
  function count_records_since(rows, start_time) {
136
141
  return rows.filter((row) => is_since(read_row_created_at(row), start_time)).length;
137
142
  }
138
- function count_usage_users_since(rows, start_time) {
139
- return count_unique(rows.filter((row) => is_since(row.created_at, start_time)).map((row) => read_string(row.user_id)));
140
- }
141
143
  function read_first_paid_times(rows) {
142
144
  const first_paid_times = new Map();
143
145
  for (const row of rows) {
@@ -168,23 +170,17 @@ function read_revenue(rows) {
168
170
  display: format_money(currency, amount_minor),
169
171
  }));
170
172
  }
171
- function read_top_services(rows) {
172
- return read_top_counts(rows, "service").map((item) => ({ service: item.key, count: item.count }));
173
- }
174
- function read_top_models(rows) {
175
- return read_top_counts(rows, "model_id").map((item) => ({ model_id: item.key, count: item.count }));
176
- }
177
- function read_top_counts(rows, key) {
173
+ function read_top_usage_models(rows) {
178
174
  const counts = new Map();
179
175
  for (const row of rows) {
180
- const value = read_string(row[key]);
176
+ const value = read_string(row.top_model_id);
181
177
  if (!value)
182
178
  continue;
183
- counts.set(value, (counts.get(value) ?? 0) + 1);
179
+ counts.set(value, (counts.get(value) ?? 0) + read_number(row.execution_count));
184
180
  }
185
181
  return [...counts.entries()]
186
- .map(([item_key, count]) => ({ key: item_key, count }))
187
- .sort((left, right) => right.count - left.count || left.key.localeCompare(right.key))
182
+ .map(([model_id, count]) => ({ model_id, count }))
183
+ .sort((left, right) => right.count - left.count || left.model_id.localeCompare(right.model_id))
188
184
  .slice(0, 5);
189
185
  }
190
186
  function sort_recent(rows) {
@@ -239,6 +235,17 @@ function read_number(value) {
239
235
  const normalized = Number(value ?? 0);
240
236
  return Number.isFinite(normalized) ? normalized : 0;
241
237
  }
238
+ function read_nullable_number(value) {
239
+ if (value === null || value === undefined)
240
+ return null;
241
+ const normalized = Number(value);
242
+ return Number.isFinite(normalized) ? normalized : null;
243
+ }
244
+ function read_record(value) {
245
+ return value && typeof value === "object" && !Array.isArray(value)
246
+ ? value
247
+ : {};
248
+ }
242
249
  function format_money(currency, amount_minor) {
243
250
  const divisor = currency_minor_divisor(currency);
244
251
  const amount = amount_minor / divisor;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-metrics.js","sourceRoot":"","sources":["../../../../src/federation/admin/dashboard/dashboard-metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-metrics.js","sourceRoot":"","sources":["../../../../src/federation/admin/dashboard/dashboard-metrics.ts"],"names":[],"mappings":"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"}
@@ -128,13 +128,14 @@ async function create_federation(env: Env): Promise<Federation> {
128
128
  public_url_prefix,
129
129
  }));
130
130
  }
131
- federation.use(new AccountsService({
131
+ const accounts_service = new AccountsService({
132
132
  providers: [
133
133
  githubAccountsProvider(),
134
134
  googleAccountsProvider(),
135
135
  wechatAccountsProvider(),
136
136
  ],
137
- }));
137
+ });
138
+ federation.use(accounts_service);
138
139
  const credits_service = new CreditsService();
139
140
  const ai_service = new AIService({ credits: credits_service });
140
141
  federation.use(credits_service);
@@ -142,6 +143,7 @@ async function create_federation(env: Env): Promise<Federation> {
142
143
  federation.use(new UsageService({
143
144
  ai_usage_reader: ai_service,
144
145
  credits_usage_reader: credits_service,
146
+ account_usage_reader: accounts_service,
145
147
  }));
146
148
  await federation.health();
147
149
  return federation;
@@ -1 +1 @@
1
- {"version":3,"file":"CloudflareWorkersTemplate.js","sourceRoot":"","sources":["../../../../src/federation/create/templates/CloudflareWorkersTemplate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CloudflareWorkersTemplate.js","sourceRoot":"","sources":["../../../../src/federation/create/templates/CloudflareWorkersTemplate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,kCAAkC;AAClC,MAAM,UAAU,wCAAwC,CACtD,KAA8B;IAE9B,MAAM,YAAY,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO;QACL;YACE,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,SAAS,CAAC;gBACjB,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,YAAY;gBAClB,EAAE,EAAE,KAAK,CAAC,MAAM;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,cAAc;gBACrB,UAAU,EAAE;oBACV,MAAM,EAAE,oBAAoB;oBAC5B,SAAS,EAAE;wBACT,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,EAAE;wBAC3D,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,QAAQ,EAAE;wBAChF,OAAO,EAAE;4BACP,IAAI,EAAE,IAAI;4BACV,OAAO,EAAE,kBAAkB;4BAC3B,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,UAAU;4BAC7B,iBAAiB,EAAE,EAAE;yBACtB;qBACF;iBACF;aACF,CAAC;SACH;QACD;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,SAAS,CAAC;gBACjB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE;oBACP,SAAS,EAAE,+BAA+B;iBAC3C;gBACD,YAAY,EAAE;oBACZ,gBAAgB,EAAE,QAAQ;oBAC1B,uBAAuB,EAAE,QAAQ;oBACjC,oBAAoB,EAAE,QAAQ;iBAC/B;gBACD,eAAe,EAAE;oBACf,2BAA2B,EAAE,QAAQ;oBACrC,UAAU,EAAE,QAAQ;oBACpB,QAAQ,EAAE,QAAQ;iBACnB;aACF,CAAC;SACH;QACD;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,SAAS,CAAC;gBACjB,eAAe,EAAE;oBACf,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,UAAU;oBAClB,gBAAgB,EAAE,UAAU;oBAC5B,GAAG,EAAE,CAAC,QAAQ,CAAC;oBACf,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,IAAI;oBACZ,YAAY,EAAE,IAAI;oBAClB,KAAK,EAAE,CAAC,2BAA2B,CAAC;iBACrC;gBACD,OAAO,EAAE,CAAC,aAAa,CAAC;aACzB,CAAC;SACH;QACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SAChE;QACD;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,wBAAwB,EAAE;SACpC;KACF,CAAC;AACJ,CAAC;AAED,+BAA+B;AAC/B,SAAS,wBAAwB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgGR,CAAC;AACF,CAAC;AAED,wBAAwB;AACxB,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,kCAAkC;AAClC,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;SAC9B,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,YAAY,CAAC;AAC7C,CAAC"}
@@ -177,7 +177,8 @@ const database = new Database({
177
177
  });
178
178
  const federation = new Federation({ database });
179
179
 
180
- federation.use(new AccountsService({ local_login: true }));
180
+ const accounts_service = new AccountsService({ local_login: true });
181
+ federation.use(accounts_service);
181
182
  const credits_service = new CreditsService();
182
183
  const ai_service = new AIService({ credits: credits_service });
183
184
  federation.use(credits_service);
@@ -185,6 +186,7 @@ federation.use(ai_service);
185
186
  federation.use(new UsageService({
186
187
  ai_usage_reader: ai_service,
187
188
  credits_usage_reader: credits_service,
189
+ account_usage_reader: accounts_service,
188
190
  }));
189
191
 
190
192
  await federation.health();
@@ -1 +1 @@
1
- {"version":3,"file":"LocalNodeTemplate.js","sourceRoot":"","sources":["../../../../src/federation/create/templates/LocalNodeTemplate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalNodeTemplate.js","sourceRoot":"","sources":["../../../../src/federation/create/templates/LocalNodeTemplate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/federation/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAmCH;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA8JnD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/federation/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAoCH;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAoMnD"}
@@ -25,6 +25,7 @@ import { CliError } from "../shared/CliError.js";
25
25
  import { helpText, langOptionText, resolveCliLocale, setCliLocale, t } from "../shared/CliLocale.js";
26
26
  import { create_federation_bureau_token, list_federation_bureaus, revoke_federation_bureau, } from "./bureau/commands/bureau.js";
27
27
  import { run_interactive_bureau_token_manager } from "./bureau/InteractiveBureauTokenManager.js";
28
+ import { run_federation_web } from "./web/FederationWebCommand.js";
28
29
  const __filename = fileURLToPath(import.meta.url);
29
30
  const __dirname = dirname(__filename);
30
31
  const packageJson = JSON.parse(readFileSync(join(__dirname, "../../package.json"), "utf-8"));
@@ -87,6 +88,40 @@ export async function runDownfedCli() {
87
88
  await manage_federation_server();
88
89
  }));
89
90
  register_bureau_commands(program);
91
+ program
92
+ .command("web")
93
+ .description(t({
94
+ zh: "启动当前 Federation 的本地 Web 管理 UI",
95
+ en: "start the local Web admin UI for a Federation",
96
+ }))
97
+ .option("--host <host>", t({ zh: "本地监听地址(仅 loopback)", en: "local listen host (loopback only)" }), "127.0.0.1")
98
+ .option("--port <port>", t({ zh: "本地监听端口", en: "local listen port" }), "43128")
99
+ .option("--no-open", t({ zh: "不自动打开浏览器", en: "do not open the browser automatically" }))
100
+ .option("--federation <name-or-url>", t({ zh: "指定 Federation 名称或 URL", en: "select a Federation by name or URL" }))
101
+ .helpOption("--help", helpText())
102
+ .action(createVersionBanner(packageJson.version, async (options) => {
103
+ const port = Number(options.port);
104
+ if (!Number.isInteger(port) || port < 0 || port > 65535) {
105
+ throw new CliError({ title: "--port 必须是 0 到 65535 之间的整数。" });
106
+ }
107
+ try {
108
+ await run_federation_web({
109
+ host: options.host.trim(),
110
+ port,
111
+ open: options.open,
112
+ federation: options.federation,
113
+ });
114
+ }
115
+ catch (error) {
116
+ if (error instanceof CliError)
117
+ throw error;
118
+ throw new CliError({
119
+ title: "无法启动 Federation Web UI。",
120
+ note: error instanceof Error ? error.message : String(error),
121
+ fix: "确认当前 Federation、admin_secret_key 与本地监听端口可用。",
122
+ });
123
+ }
124
+ }));
90
125
  server_program
91
126
  .command("add")
92
127
  .description(t({