downcity 1.1.147 → 1.1.149
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/city/admin/commands/accounts.d.ts.map +1 -1
- package/city/admin/commands/accounts.js +12 -11
- package/city/admin/commands/accounts.js.map +1 -1
- package/city/admin/commands/balance.d.ts.map +1 -1
- package/city/admin/commands/balance.js +64 -48
- package/city/admin/commands/balance.js.map +1 -1
- package/city/admin/commands/custom.d.ts.map +1 -1
- package/city/admin/commands/custom.js +10 -3
- package/city/admin/commands/custom.js.map +1 -1
- package/city/admin/commands/instruction.d.ts.map +1 -1
- package/city/admin/commands/instruction.js +7 -2
- package/city/admin/commands/instruction.js.map +1 -1
- package/city/admin/commands/models.d.ts.map +1 -1
- package/city/admin/commands/models.js +21 -8
- package/city/admin/commands/models.js.map +1 -1
- package/city/admin/commands/payment.d.ts.map +1 -1
- package/city/admin/commands/payment.js +21 -17
- package/city/admin/commands/payment.js.map +1 -1
- package/city/admin/commands/service-env.d.ts.map +1 -1
- package/city/admin/commands/service-env.js +103 -44
- package/city/admin/commands/service-env.js.map +1 -1
- package/city/admin/commands/towns.d.ts.map +1 -1
- package/city/admin/commands/towns.js +21 -20
- package/city/admin/commands/towns.js.map +1 -1
- package/city/admin/commands/usage.d.ts.map +1 -1
- package/city/admin/commands/usage.js +12 -11
- package/city/admin/commands/usage.js.map +1 -1
- package/city/admin/loop.d.ts.map +1 -1
- package/city/admin/loop.js +43 -7
- package/city/admin/loop.js.map +1 -1
- package/city/tui/AdminTuiRuntime.d.ts.map +1 -1
- package/city/tui/AdminTuiRuntime.js +55 -18
- package/city/tui/AdminTuiRuntime.js.map +1 -1
- package/city/tui/CityDashboard.d.ts +1 -2
- package/city/tui/CityDashboard.d.ts.map +1 -1
- package/city/tui/CityDashboard.js +38 -58
- package/city/tui/CityDashboard.js.map +1 -1
- package/city/tui/Prompts.d.ts +1 -0
- package/city/tui/Prompts.d.ts.map +1 -1
- package/city/tui/Prompts.js +145 -94
- package/city/tui/Prompts.js.map +1 -1
- package/city/tui/Shell.d.ts +50 -0
- package/city/tui/Shell.d.ts.map +1 -0
- package/city/tui/Shell.js +99 -0
- package/city/tui/Shell.js.map +1 -0
- package/package.json +3 -3
- package/town/shared/TownManager.d.ts.map +1 -1
- package/town/shared/TownManager.js +1 -132
- package/town/shared/TownManager.js.map +1 -1
- package/town/tui/Prompts.d.ts.map +1 -1
- package/town/tui/Prompts.js +77 -16
- package/town/tui/Prompts.js.map +1 -1
- package/town/tui/TownDashboard.js +35 -13
- package/town/tui/TownDashboard.js.map +1 -1
- package/city/home/HomeMenu.d.ts +0 -17
- package/city/home/HomeMenu.d.ts.map +0 -1
- package/city/home/HomeMenu.js +0 -167
- package/city/home/HomeMenu.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/accounts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/accounts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,wBAAsB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCzG"}
|
|
@@ -1,38 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Admin Accounts 管理命令。
|
|
3
3
|
*/
|
|
4
|
+
import { t } from "../../i18n.js";
|
|
4
5
|
import { adminErrorMessage, rethrowAdminAuthError } from "../auth-error.js";
|
|
5
6
|
export async function manageAccounts(a, _baseUrl, runtime) {
|
|
6
7
|
const svc = a.service("accounts");
|
|
7
8
|
while (true) {
|
|
8
9
|
const act = await runtime.select("Accounts", [
|
|
9
|
-
{ label: "List users", value: "users" },
|
|
10
|
-
{ label: "List sessions", value: "sessions" },
|
|
11
|
-
{ label: "Back", value: "back" },
|
|
10
|
+
{ label: t({ zh: "查看用户", en: "List users" }), value: "users" },
|
|
11
|
+
{ label: t({ zh: "查看会话", en: "List sessions" }), value: "sessions" },
|
|
12
|
+
{ label: t({ zh: "返回", en: "Back" }), value: "back" },
|
|
12
13
|
]);
|
|
13
14
|
if (!act || act === "back")
|
|
14
15
|
return;
|
|
15
16
|
try {
|
|
16
17
|
if (act === "users") {
|
|
17
|
-
const b = await runtime.with_loading("Users", async () => await svc.get("users"));
|
|
18
|
+
const b = await runtime.with_loading(t({ zh: "用户", en: "Users" }), async () => await svc.get("users"));
|
|
18
19
|
await runtime.show_table({
|
|
19
|
-
title: `${b.items.length} Users
|
|
20
|
-
columns: ["User ID", "Email", "Created"],
|
|
20
|
+
title: t({ zh: `${b.items.length} 个用户`, en: `${b.items.length} Users` }),
|
|
21
|
+
columns: [t({ zh: "用户 ID", en: "User ID" }), t({ zh: "邮箱", en: "Email" }), t({ zh: "创建时间", en: "Created" })],
|
|
21
22
|
rows: b.items.map((u) => ({
|
|
22
23
|
cells: [u.user_id, u.email, u.created_at.slice(0, 10)],
|
|
23
24
|
})),
|
|
24
|
-
empty_message: "No users.",
|
|
25
|
+
empty_message: t({ zh: "暂无用户。", en: "No users." }),
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
else {
|
|
28
|
-
const b = await runtime.with_loading("Sessions", async () => await svc.get("sessions"));
|
|
29
|
+
const b = await runtime.with_loading(t({ zh: "会话", en: "Sessions" }), async () => await svc.get("sessions"));
|
|
29
30
|
await runtime.show_table({
|
|
30
|
-
title: `${b.items.length} Sessions
|
|
31
|
-
columns: ["Session ID", "User ID", "Status"],
|
|
31
|
+
title: t({ zh: `${b.items.length} 个会话`, en: `${b.items.length} Sessions` }),
|
|
32
|
+
columns: [t({ zh: "会话 ID", en: "Session ID" }), t({ zh: "用户 ID", en: "User ID" }), t({ zh: "状态", en: "Status" })],
|
|
32
33
|
rows: b.items.map((s) => ({
|
|
33
34
|
cells: [s.session_id, s.user_id, s.status],
|
|
34
35
|
})),
|
|
35
|
-
empty_message: "No sessions.",
|
|
36
|
+
empty_message: t({ zh: "暂无会话。", en: "No sessions." }),
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../src/admin/commands/accounts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG5E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,CAAO,EAAE,QAAgB,EAAE,OAA0B;IACxF,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE;YACzC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../src/admin/commands/accounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/balance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/balance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,wBAAsB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyKxG"}
|
|
@@ -1,80 +1,81 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Admin Balance 管理命令。
|
|
3
3
|
*/
|
|
4
|
+
import { t } from "../../i18n.js";
|
|
4
5
|
import { adminErrorMessage, rethrowAdminAuthError } from "../auth-error.js";
|
|
5
6
|
export async function manageBalance(a, _baseUrl, runtime) {
|
|
6
7
|
while (true) {
|
|
7
8
|
const act = await runtime.select("Balance", [
|
|
8
|
-
{ label: "List users", value: "users" },
|
|
9
|
-
{ label: "History", value: "history" },
|
|
10
|
-
{ label: "Topups", value: "topups" },
|
|
11
|
-
{ label: "Redeem codes", value: "redeem_codes" },
|
|
12
|
-
{ label: "Add balance", value: "add" },
|
|
13
|
-
{ label: "Subtract balance", value: "sub" },
|
|
14
|
-
{ label: "Finish topup", value: "finish" },
|
|
15
|
-
{ label: "Cancel topup", value: "cancel" },
|
|
16
|
-
{ label: "Create redeem code", value: "create_redeem_code" },
|
|
17
|
-
{ label: "Disable redeem code", value: "disable_redeem_code" },
|
|
18
|
-
{ label: "Back", value: "back" },
|
|
9
|
+
{ label: t({ zh: "查看用户", en: "List users" }), value: "users" },
|
|
10
|
+
{ label: t({ zh: "余额历史", en: "History" }), value: "history" },
|
|
11
|
+
{ label: t({ zh: "充值单", en: "Topups" }), value: "topups" },
|
|
12
|
+
{ label: t({ zh: "兑换码", en: "Redeem codes" }), value: "redeem_codes" },
|
|
13
|
+
{ label: t({ zh: "增加余额", en: "Add balance" }), value: "add" },
|
|
14
|
+
{ label: t({ zh: "扣减余额", en: "Subtract balance" }), value: "sub" },
|
|
15
|
+
{ label: t({ zh: "完成充值单", en: "Finish topup" }), value: "finish" },
|
|
16
|
+
{ label: t({ zh: "取消充值单", en: "Cancel topup" }), value: "cancel" },
|
|
17
|
+
{ label: t({ zh: "创建兑换码", en: "Create redeem code" }), value: "create_redeem_code" },
|
|
18
|
+
{ label: t({ zh: "停用兑换码", en: "Disable redeem code" }), value: "disable_redeem_code" },
|
|
19
|
+
{ label: t({ zh: "返回", en: "Back" }), value: "back" },
|
|
19
20
|
]);
|
|
20
21
|
if (!act || act === "back")
|
|
21
22
|
return;
|
|
22
23
|
try {
|
|
23
24
|
if (act === "users") {
|
|
24
|
-
const items = await runtime.with_loading("Balance Accounts", async () => await a.balance.listUsers(30));
|
|
25
|
+
const items = await runtime.with_loading(t({ zh: "余额账户", en: "Balance Accounts" }), async () => await a.balance.listUsers(30));
|
|
25
26
|
await runtime.show_table({
|
|
26
|
-
title: `${items.length} Balance Accounts
|
|
27
|
-
columns: ["User", "Balance", "Unit", "Updated"],
|
|
27
|
+
title: t({ zh: `${items.length} 个余额账户`, en: `${items.length} Balance Accounts` }),
|
|
28
|
+
columns: [t({ zh: "用户", en: "User" }), t({ zh: "余额", en: "Balance" }), t({ zh: "单位", en: "Unit" }), t({ zh: "更新时间", en: "Updated" })],
|
|
28
29
|
rows: items.map((item) => ({
|
|
29
30
|
cells: [item.user_id, String(item.balance), item.unit, item.updated_at.slice(0, 19)],
|
|
30
31
|
})),
|
|
31
|
-
empty_message: "No balance accounts.",
|
|
32
|
+
empty_message: t({ zh: "暂无余额账户。", en: "No balance accounts." }),
|
|
32
33
|
});
|
|
33
34
|
continue;
|
|
34
35
|
}
|
|
35
36
|
if (act === "history") {
|
|
36
|
-
const userId = await runtime.text("user_id (optional)");
|
|
37
|
-
const items = await runtime.with_loading("Balance History", async () => await a.balance.listHistory({
|
|
37
|
+
const userId = await runtime.text(t({ zh: "user_id(可选)", en: "user_id (optional)" }));
|
|
38
|
+
const items = await runtime.with_loading(t({ zh: "余额历史", en: "Balance History" }), async () => await a.balance.listHistory({
|
|
38
39
|
limit: 30,
|
|
39
40
|
user_id: userId ?? "",
|
|
40
41
|
}));
|
|
41
42
|
await runtime.show_table({
|
|
42
|
-
title: `${items.length} Balance History
|
|
43
|
-
columns: ["Created", "User", "Kind", "Amount", "Balance After", "Note"],
|
|
43
|
+
title: t({ zh: `${items.length} 条余额历史`, en: `${items.length} Balance History` }),
|
|
44
|
+
columns: [t({ zh: "创建时间", en: "Created" }), t({ zh: "用户", en: "User" }), t({ zh: "类型", en: "Kind" }), t({ zh: "金额", en: "Amount" }), t({ zh: "变更后余额", en: "Balance After" }), t({ zh: "备注", en: "Note" })],
|
|
44
45
|
rows: items.map((item) => ({
|
|
45
46
|
cells: [item.created_at.slice(0, 19), item.user_id, item.kind, String(item.amount), String(item.balance_after), item.note],
|
|
46
47
|
})),
|
|
47
|
-
empty_message: "No balance history.",
|
|
48
|
+
empty_message: t({ zh: "暂无余额历史。", en: "No balance history." }),
|
|
48
49
|
});
|
|
49
50
|
continue;
|
|
50
51
|
}
|
|
51
52
|
if (act === "topups") {
|
|
52
|
-
const userId = await runtime.text("user_id (optional)");
|
|
53
|
+
const userId = await runtime.text(t({ zh: "user_id(可选)", en: "user_id (optional)" }));
|
|
53
54
|
const items = await runtime.with_loading("Topups", async () => await a.balance.listTopups({
|
|
54
55
|
limit: 30,
|
|
55
56
|
user_id: userId ?? "",
|
|
56
57
|
}));
|
|
57
58
|
await runtime.show_table({
|
|
58
|
-
title: `${items.length} Topups
|
|
59
|
-
columns: ["Topup ID", "User", "Amount", "Unit", "Status", "Note"],
|
|
59
|
+
title: t({ zh: `${items.length} 个充值单`, en: `${items.length} Topups` }),
|
|
60
|
+
columns: ["Topup ID", t({ zh: "用户", en: "User" }), t({ zh: "金额", en: "Amount" }), t({ zh: "单位", en: "Unit" }), t({ zh: "状态", en: "Status" }), t({ zh: "备注", en: "Note" })],
|
|
60
61
|
rows: items.map((item) => ({
|
|
61
62
|
cells: [item.topup_id, item.user_id, String(item.amount), item.unit, item.status, item.note],
|
|
62
63
|
})),
|
|
63
|
-
empty_message: "No topups.",
|
|
64
|
+
empty_message: t({ zh: "暂无充值单。", en: "No topups." }),
|
|
64
65
|
});
|
|
65
66
|
continue;
|
|
66
67
|
}
|
|
67
68
|
if (act === "redeem_codes") {
|
|
68
|
-
const status = await runtime.text("status (optional: active/redeemed/disabled)");
|
|
69
|
-
const userId = await runtime.text("redeemed_by_user_id (optional)");
|
|
70
|
-
const items = await runtime.with_loading("Redeem Codes", async () => await a.balance.redeemCodes.list({
|
|
69
|
+
const status = await runtime.text(t({ zh: "status(可选:active/redeemed/disabled)", en: "status (optional: active/redeemed/disabled)" }));
|
|
70
|
+
const userId = await runtime.text(t({ zh: "redeemed_by_user_id(可选)", en: "redeemed_by_user_id (optional)" }));
|
|
71
|
+
const items = await runtime.with_loading(t({ zh: "兑换码", en: "Redeem Codes" }), async () => await a.balance.redeemCodes.list({
|
|
71
72
|
limit: 30,
|
|
72
73
|
status: normalizeRedeemCodeStatus(status),
|
|
73
74
|
user_id: userId ?? "",
|
|
74
75
|
}));
|
|
75
76
|
await runtime.show_table({
|
|
76
|
-
title: `${items.length} Redeem Codes
|
|
77
|
-
columns: ["Redeem Code ID", "Code", "Amount", "Unit", "Status", "Owner", "Note"],
|
|
77
|
+
title: t({ zh: `${items.length} 个兑换码`, en: `${items.length} Redeem Codes` }),
|
|
78
|
+
columns: ["Redeem Code ID", t({ zh: "Code", en: "Code" }), t({ zh: "金额", en: "Amount" }), t({ zh: "单位", en: "Unit" }), t({ zh: "状态", en: "Status" }), t({ zh: "归属用户", en: "Owner" }), t({ zh: "备注", en: "Note" })],
|
|
78
79
|
rows: items.map((item) => ({
|
|
79
80
|
cells: [
|
|
80
81
|
item.redeem_code_id,
|
|
@@ -86,7 +87,7 @@ export async function manageBalance(a, _baseUrl, runtime) {
|
|
|
86
87
|
item.note,
|
|
87
88
|
],
|
|
88
89
|
})),
|
|
89
|
-
empty_message: "No redeem codes.",
|
|
90
|
+
empty_message: t({ zh: "暂无兑换码。", en: "No redeem codes." }),
|
|
90
91
|
});
|
|
91
92
|
continue;
|
|
92
93
|
}
|
|
@@ -94,60 +95,72 @@ export async function manageBalance(a, _baseUrl, runtime) {
|
|
|
94
95
|
const userId = await runtime.text("user_id");
|
|
95
96
|
if (!userId)
|
|
96
97
|
continue;
|
|
97
|
-
const rawAmount = await runtime.text("amount");
|
|
98
|
+
const rawAmount = await runtime.text(t({ zh: "金额", en: "amount" }));
|
|
98
99
|
if (!rawAmount)
|
|
99
100
|
continue;
|
|
100
101
|
const amount = Number(rawAmount);
|
|
101
102
|
if (!Number.isInteger(amount) || amount <= 0) {
|
|
102
|
-
await runtime.show_message("error", "amount must be a positive integer");
|
|
103
|
+
await runtime.show_message("error", t({ zh: "amount 必须是正整数", en: "amount must be a positive integer" }));
|
|
103
104
|
continue;
|
|
104
105
|
}
|
|
105
|
-
const note = await runtime.text("note (optional)");
|
|
106
|
-
const account = await runtime.with_loading("Update Balance", async () => act === "add"
|
|
106
|
+
const note = await runtime.text(t({ zh: "备注(可选)", en: "note (optional)" }));
|
|
107
|
+
const account = await runtime.with_loading(t({ zh: "更新余额", en: "Update Balance" }), async () => act === "add"
|
|
107
108
|
? await a.balance.add({ user_id: userId, amount, note: note ?? "" })
|
|
108
109
|
: await a.balance.sub({ user_id: userId, amount, note: note ?? "" }));
|
|
109
|
-
await runtime.show_message("success",
|
|
110
|
+
await runtime.show_message("success", t({
|
|
111
|
+
zh: `余额已更新:${account.user_id} -> ${account.balance} ${account.unit}`,
|
|
112
|
+
en: `balance updated: ${account.user_id} -> ${account.balance} ${account.unit}`,
|
|
113
|
+
}));
|
|
110
114
|
continue;
|
|
111
115
|
}
|
|
112
116
|
if (act === "create_redeem_code") {
|
|
113
|
-
const rawAmount = await runtime.text("amount");
|
|
117
|
+
const rawAmount = await runtime.text(t({ zh: "金额", en: "amount" }));
|
|
114
118
|
if (!rawAmount)
|
|
115
119
|
continue;
|
|
116
120
|
const amount = Number(rawAmount);
|
|
117
121
|
if (!Number.isInteger(amount) || amount <= 0) {
|
|
118
|
-
await runtime.show_message("error", "amount must be a positive integer");
|
|
122
|
+
await runtime.show_message("error", t({ zh: "amount 必须是正整数", en: "amount must be a positive integer" }));
|
|
119
123
|
continue;
|
|
120
124
|
}
|
|
121
|
-
const code = await runtime.text("custom redeem_code (optional)");
|
|
122
|
-
const note = await runtime.text("note (optional)");
|
|
123
|
-
const issued = await runtime.with_loading("Create Redeem Code", async () => await a.balance.redeemCodes.create({
|
|
125
|
+
const code = await runtime.text(t({ zh: "自定义 redeem_code(可选)", en: "custom redeem_code (optional)" }));
|
|
126
|
+
const note = await runtime.text(t({ zh: "备注(可选)", en: "note (optional)" }));
|
|
127
|
+
const issued = await runtime.with_loading(t({ zh: "创建兑换码", en: "Create Redeem Code" }), async () => await a.balance.redeemCodes.create({
|
|
124
128
|
amount,
|
|
125
129
|
code: code ?? "",
|
|
126
130
|
note: note ?? "",
|
|
127
131
|
}));
|
|
128
|
-
await runtime.show_text(
|
|
132
|
+
await runtime.show_text(t({ zh: "兑换码已创建", en: "Redeem Code Created" }), t({
|
|
133
|
+
zh: `redeem_code 已创建:${issued.redeem_code_id}\ncode: ${issued.code}\namount: +${issued.amount} ${issued.unit}`,
|
|
134
|
+
en: `redeem_code created: ${issued.redeem_code_id}\ncode: ${issued.code}\namount: +${issued.amount} ${issued.unit}`,
|
|
135
|
+
}));
|
|
129
136
|
continue;
|
|
130
137
|
}
|
|
131
138
|
if (act === "disable_redeem_code") {
|
|
132
139
|
const redeemCodeId = await runtime.text("redeem_code_id");
|
|
133
140
|
if (!redeemCodeId)
|
|
134
141
|
continue;
|
|
135
|
-
const note = await runtime.text("note (optional)");
|
|
136
|
-
const item = await runtime.with_loading("Disable Redeem Code", async () => await a.balance.redeemCodes.disable({
|
|
142
|
+
const note = await runtime.text(t({ zh: "备注(可选)", en: "note (optional)" }));
|
|
143
|
+
const item = await runtime.with_loading(t({ zh: "停用兑换码", en: "Disable Redeem Code" }), async () => await a.balance.redeemCodes.disable({
|
|
137
144
|
redeem_code_id: redeemCodeId,
|
|
138
145
|
note: note ?? "",
|
|
139
146
|
}));
|
|
140
|
-
await runtime.show_message("success",
|
|
147
|
+
await runtime.show_message("success", t({
|
|
148
|
+
zh: `redeem_code 已更新:${item.redeem_code_id} -> ${item.status}`,
|
|
149
|
+
en: `redeem_code updated: ${item.redeem_code_id} -> ${item.status}`,
|
|
150
|
+
}));
|
|
141
151
|
continue;
|
|
142
152
|
}
|
|
143
153
|
const topupId = await runtime.text("topup_id");
|
|
144
154
|
if (!topupId)
|
|
145
155
|
continue;
|
|
146
|
-
const note = await runtime.text("note (optional)");
|
|
147
|
-
const topup = await runtime.with_loading("Update Topup", async () => act === "finish"
|
|
156
|
+
const note = await runtime.text(t({ zh: "备注(可选)", en: "note (optional)" }));
|
|
157
|
+
const topup = await runtime.with_loading(t({ zh: "更新充值单", en: "Update Topup" }), async () => act === "finish"
|
|
148
158
|
? await a.balance.finishTopup({ topup_id: topupId, note: note ?? "" })
|
|
149
159
|
: await a.balance.cancelTopup({ topup_id: topupId, note: note ?? "" }));
|
|
150
|
-
await runtime.show_message("success",
|
|
160
|
+
await runtime.show_message("success", t({
|
|
161
|
+
zh: `充值单已更新:${topup.topup_id} -> ${topup.status}`,
|
|
162
|
+
en: `topup updated: ${topup.topup_id} -> ${topup.status}`,
|
|
163
|
+
}));
|
|
151
164
|
}
|
|
152
165
|
catch (e) {
|
|
153
166
|
rethrowAdminAuthError(e);
|
|
@@ -162,6 +175,9 @@ function normalizeRedeemCodeStatus(value) {
|
|
|
162
175
|
if (normalized === "active" || normalized === "redeemed" || normalized === "disabled") {
|
|
163
176
|
return normalized;
|
|
164
177
|
}
|
|
165
|
-
throw new TypeError(
|
|
178
|
+
throw new TypeError(t({
|
|
179
|
+
zh: "status 必须是 active、redeemed 或 disabled",
|
|
180
|
+
en: "status must be active, redeemed, or disabled",
|
|
181
|
+
}));
|
|
166
182
|
}
|
|
167
183
|
//# sourceMappingURL=balance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../src/admin/commands/balance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../src/admin/commands/balance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/custom.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/custom.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,wBAAsB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCvG"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Admin Custom Service 命令。
|
|
3
3
|
*/
|
|
4
|
+
import { t } from "../../i18n.js";
|
|
4
5
|
import { adminErrorMessage, rethrowAdminAuthError } from "../auth-error.js";
|
|
5
6
|
export async function manageCustom(a, _baseUrl, runtime) {
|
|
6
7
|
while (true) {
|
|
7
|
-
const name = await runtime.text(
|
|
8
|
+
const name = await runtime.text(t({
|
|
9
|
+
zh: "服务名称(留空返回)",
|
|
10
|
+
en: "service name (empty to go back)",
|
|
11
|
+
}));
|
|
8
12
|
if (!name)
|
|
9
13
|
return;
|
|
10
14
|
const act = await runtime.select(name, [
|
|
11
15
|
{ label: "GET", value: "get" },
|
|
12
16
|
{ label: "POST", value: "post" },
|
|
13
|
-
{ label: "Back", value: "back" },
|
|
17
|
+
{ label: t({ zh: "返回", en: "Back" }), value: "back" },
|
|
14
18
|
]);
|
|
15
19
|
if (!act || act === "back")
|
|
16
20
|
return;
|
|
@@ -28,7 +32,10 @@ export async function manageCustom(a, _baseUrl, runtime) {
|
|
|
28
32
|
body = JSON.parse(raw);
|
|
29
33
|
}
|
|
30
34
|
catch {
|
|
31
|
-
await runtime.show_message("error",
|
|
35
|
+
await runtime.show_message("error", t({
|
|
36
|
+
zh: "JSON body 无效",
|
|
37
|
+
en: "Invalid JSON body",
|
|
38
|
+
}));
|
|
32
39
|
continue;
|
|
33
40
|
}
|
|
34
41
|
const result = await runtime.with_loading(`${name} POST`, async () => await svc.action("").invoke(body));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../src/admin/commands/custom.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG5E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,CAAO,EAAE,QAAgB,EAAE,OAA0B;IACtF,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../src/admin/commands/custom.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG5E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,CAAO,EAAE,QAAgB,EAAE,OAA0B;IACtF,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAChC,EAAE,EAAE,YAAY;YAChB,EAAE,EAAE,iCAAiC;SACtC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;YACnC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;YAC9B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAChC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;SACtD,CAAC,CAAC;QACL,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO;QAEnC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1F,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,QAAQ,IAAI,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;gBACtD,IAAI,IAA6B,CAAC;gBAClC,IAAI,CAAC;oBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;wBACpC,EAAE,EAAE,cAAc;wBAClB,EAAE,EAAE,mBAAmB;qBACxB,CAAC,CAAC,CAAC;oBACJ,SAAS;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,OAAO,EAAE,MAAM,CAAC,CAAC;YAClD,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instruction.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/instruction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"instruction.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/instruction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,CAAC,EAAE,IAAI,EACP,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Admin City 说明文档查看命令。
|
|
3
3
|
*/
|
|
4
|
+
import { t } from "../../i18n.js";
|
|
4
5
|
/**
|
|
5
6
|
* 展示当前 City 聚合后的说明文档。
|
|
6
7
|
*/
|
|
7
8
|
export async function manageInstruction(a, _baseUrl, runtime) {
|
|
8
|
-
const
|
|
9
|
-
|
|
9
|
+
const title = t({
|
|
10
|
+
zh: "City 指令",
|
|
11
|
+
en: "City Instruction",
|
|
12
|
+
});
|
|
13
|
+
const content = await runtime.with_loading(title, async () => await a.instruction());
|
|
14
|
+
await runtime.show_text(title, content);
|
|
10
15
|
}
|
|
11
16
|
//# sourceMappingURL=instruction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instruction.js","sourceRoot":"","sources":["../../../src/admin/commands/instruction.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"instruction.js","sourceRoot":"","sources":["../../../src/admin/commands/instruction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,CAAO,EACP,QAAgB,EAChB,OAA0B;IAE1B,MAAM,KAAK,GAAG,CAAC,CAAC;QACd,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,kBAAkB;KACvB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACrF,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEvG"}
|
|
@@ -13,7 +13,8 @@ import { t } from "../../i18n.js";
|
|
|
13
13
|
*/
|
|
14
14
|
export async function manageModels(a, _baseUrl, runtime) {
|
|
15
15
|
try {
|
|
16
|
-
const
|
|
16
|
+
const model_title = t({ zh: "模型", en: "Models" });
|
|
17
|
+
const [modelResp, envCatalog] = await runtime.with_loading(model_title, async () => await Promise.all([
|
|
17
18
|
a.listModels(),
|
|
18
19
|
a.env.catalog(),
|
|
19
20
|
]));
|
|
@@ -28,27 +29,39 @@ export async function manageModels(a, _baseUrl, runtime) {
|
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
30
31
|
await runtime.show_table({
|
|
31
|
-
title: `${items.length} Models
|
|
32
|
-
columns: [
|
|
32
|
+
title: t({ zh: `${items.length} 个模型`, en: `${items.length} Models` }),
|
|
33
|
+
columns: [
|
|
34
|
+
t({ zh: "名称", en: "Name" }),
|
|
35
|
+
t({ zh: "状态", en: "Status" }),
|
|
36
|
+
t({ zh: "模态", en: "Modalities" }),
|
|
37
|
+
t({ zh: "默认值", en: "Defaults" }),
|
|
38
|
+
"Env",
|
|
39
|
+
t({ zh: "说明", en: "Description" }),
|
|
40
|
+
],
|
|
33
41
|
rows: items.map((model) => {
|
|
34
42
|
const requirements = model.env_requirements ?? [];
|
|
35
43
|
const missingEnv = requirements
|
|
36
44
|
.filter((item) => item.required && !envMap.get(item.key))
|
|
37
45
|
.map((item) => item.key);
|
|
38
|
-
const status = missingEnv.length === 0
|
|
46
|
+
const status = missingEnv.length === 0
|
|
47
|
+
? t({ zh: "就绪", en: "READY" })
|
|
48
|
+
: t({ zh: `缺失 ${missingEnv.join(", ")}`, en: `MISSING ${missingEnv.join(", ")}` });
|
|
39
49
|
const defaults = (model.default_modes ?? []).length > 0
|
|
40
|
-
?
|
|
41
|
-
|
|
50
|
+
? t({
|
|
51
|
+
zh: `默认:${(model.default_modes ?? []).join(", ")}`,
|
|
52
|
+
en: `default: ${(model.default_modes ?? []).join(", ")}`,
|
|
53
|
+
})
|
|
54
|
+
: t({ zh: "默认:无", en: "default: none" });
|
|
42
55
|
const envText = requirements.length > 0
|
|
43
56
|
? requirements
|
|
44
57
|
.map((item) => `${item.key}${envMap.get(item.key) ? "✓" : "✗"}`)
|
|
45
58
|
.join(", ")
|
|
46
|
-
: "none";
|
|
59
|
+
: t({ zh: "无", en: "none" });
|
|
47
60
|
return {
|
|
48
61
|
cells: [
|
|
49
62
|
`${model.name} (${model.id})`,
|
|
50
63
|
status,
|
|
51
|
-
model.modalities.join(", ") || "none",
|
|
64
|
+
model.modalities.join(", ") || t({ zh: "无", en: "none" }),
|
|
52
65
|
defaults,
|
|
53
66
|
envText,
|
|
54
67
|
model.description ?? "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/admin/commands/models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,CAAO,EAAE,QAAgB,EAAE,OAA0B;IACtF,IAAI,CAAC;QACH,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/admin/commands/models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,CAAO,EAAE,QAAgB,EAAE,OAA0B;IACtF,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC;YACpG,CAAC,CAAC,UAAU,EAAE;YACd,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE;SAChB,CAAC,CAAC,CAAC;QACJ,MAAM,KAAK,GAAG,SAAS,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnC,EAAE,EAAE,0BAA0B;gBAC9B,EAAE,EAAE,iCAAiC;aACtC,CAAC,CAAC,CAAC;YACJ,OAAO;QACT,CAAC;QAED,MAAM,OAAO,CAAC,UAAU,CAAC;YACvB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,SAAS,EAAE,CAAC;YACrE,OAAO,EAAE;gBACP,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;gBAC3B,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;gBAC7B,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;gBACjC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;gBAChC,KAAK;gBACL,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC;aACnC;YACD,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,MAAM,YAAY,GAAG,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC;gBAClD,MAAM,UAAU,GAAG,YAAY;qBAC5B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACxD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC;oBACpC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;oBAC9B,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrF,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;oBACrD,CAAC,CAAC,CAAC,CAAC;wBACF,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAClD,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACzD,CAAC;oBACF,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;oBACrC,CAAC,CAAC,YAAY;yBACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;yBAC/D,IAAI,CAAC,IAAI,CAAC;oBACb,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC/B,OAAO;oBACL,KAAK,EAAE;wBACL,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,GAAG;wBAC7B,MAAM;wBACN,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;wBACzD,QAAQ;wBACR,OAAO;wBACP,KAAK,CAAC,WAAW,IAAI,EAAE;qBACxB;iBACF,CAAC;YACJ,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpC,EAAE,EAAE,6DAA6D;gBACjE,EAAE,EAAE,2GAA2G;aAChH,CAAC,CAAC,CAAC;YACJ,OAAO;QACT,CAAC;QACD,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/payment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/payment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAItC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAgCjE,wBAAsB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDvG"}
|
|
@@ -2,52 +2,56 @@
|
|
|
2
2
|
* Admin Payment 管理命令。
|
|
3
3
|
*/
|
|
4
4
|
import { buildStripeEndpoints } from "../../core/stripe.js";
|
|
5
|
+
import { t } from "../../i18n.js";
|
|
5
6
|
import { adminErrorMessage, rethrowAdminAuthError } from "../auth-error.js";
|
|
6
7
|
export async function managePayment(a, baseUrl, runtime) {
|
|
7
8
|
const svc = a.service("payment.stripe");
|
|
8
9
|
const endpoints = buildStripeEndpoints(baseUrl);
|
|
9
10
|
while (true) {
|
|
10
11
|
const act = await runtime.select("Payment", [
|
|
11
|
-
{ label: "Show webhook setup", value: "webhook", hint: endpoints.webhook_url },
|
|
12
|
-
{ label: "List payments", value: "payments" },
|
|
13
|
-
{ label: "List webhook events", value: "events" },
|
|
14
|
-
{ label: "Back", value: "back" },
|
|
12
|
+
{ label: t({ zh: "查看 webhook 配置", en: "Show webhook setup" }), value: "webhook", hint: endpoints.webhook_url },
|
|
13
|
+
{ label: t({ zh: "查看支付记录", en: "List payments" }), value: "payments" },
|
|
14
|
+
{ label: t({ zh: "查看 webhook 事件", en: "List webhook events" }), value: "events" },
|
|
15
|
+
{ label: t({ zh: "返回", en: "Back" }), value: "back" },
|
|
15
16
|
]);
|
|
16
17
|
if (!act || act === "back")
|
|
17
18
|
return;
|
|
18
19
|
try {
|
|
19
20
|
if (act === "webhook") {
|
|
20
|
-
await runtime.show_text("Stripe Webhook Setup", [
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"Recommended Stripe events:",
|
|
21
|
+
await runtime.show_text(t({ zh: "Stripe Webhook 配置", en: "Stripe Webhook Setup" }), [
|
|
22
|
+
`${t({ zh: "Server URL", en: "Server URL" })}: ${endpoints.base_url}`,
|
|
23
|
+
`${t({ zh: "Stripe webhook endpoint", en: "Stripe webhook endpoint" })}: ${endpoints.webhook_url}`,
|
|
24
|
+
t({ zh: "推荐 Stripe events:", en: "Recommended Stripe events:" }),
|
|
24
25
|
"- checkout.session.completed",
|
|
25
26
|
"- checkout.session.expired",
|
|
26
27
|
"- payment_intent.payment_failed",
|
|
27
|
-
|
|
28
|
+
t({
|
|
29
|
+
zh: "在 Stripe Dashboard 创建 endpoint 后,将 Signing secret 复制到 STRIPE_WEBHOOK_SECRET。",
|
|
30
|
+
en: "After creating the endpoint in Stripe Dashboard, copy its Signing secret into STRIPE_WEBHOOK_SECRET.",
|
|
31
|
+
}),
|
|
28
32
|
].join("\n"));
|
|
29
33
|
continue;
|
|
30
34
|
}
|
|
31
35
|
if (act === "payments") {
|
|
32
|
-
const result = await runtime.with_loading("Payments", async () => await svc.get("payments"));
|
|
36
|
+
const result = await runtime.with_loading(t({ zh: "支付记录", en: "Payments" }), async () => await svc.get("payments"));
|
|
33
37
|
await runtime.show_table({
|
|
34
|
-
title: `${result.items.length} Payments
|
|
35
|
-
columns: ["Updated", "User", "Amount", "Currency", "Status", "Payment ID"],
|
|
38
|
+
title: t({ zh: `${result.items.length} 条支付记录`, en: `${result.items.length} Payments` }),
|
|
39
|
+
columns: [t({ zh: "更新时间", en: "Updated" }), t({ zh: "用户", en: "User" }), t({ zh: "金额", en: "Amount" }), t({ zh: "币种", en: "Currency" }), t({ zh: "状态", en: "Status" }), "Payment ID"],
|
|
36
40
|
rows: result.items.map((item) => ({
|
|
37
41
|
cells: [item.updated_at.slice(0, 19), item.user_id, String(item.amount), item.currency, item.status, item.payment_id],
|
|
38
42
|
})),
|
|
39
|
-
empty_message: "No payments.",
|
|
43
|
+
empty_message: t({ zh: "暂无支付记录。", en: "No payments." }),
|
|
40
44
|
});
|
|
41
45
|
continue;
|
|
42
46
|
}
|
|
43
|
-
const result = await runtime.with_loading("Webhook Events", async () => await svc.get("events"));
|
|
47
|
+
const result = await runtime.with_loading(t({ zh: "Webhook 事件", en: "Webhook Events" }), async () => await svc.get("events"));
|
|
44
48
|
await runtime.show_table({
|
|
45
|
-
title: `${result.items.length} Webhook Events
|
|
46
|
-
columns: ["Created", "Type", "Status", "Event ID", "Error"],
|
|
49
|
+
title: t({ zh: `${result.items.length} 条 Webhook 事件`, en: `${result.items.length} Webhook Events` }),
|
|
50
|
+
columns: [t({ zh: "创建时间", en: "Created" }), t({ zh: "类型", en: "Type" }), t({ zh: "状态", en: "Status" }), "Event ID", t({ zh: "错误", en: "Error" })],
|
|
47
51
|
rows: result.items.map((item) => ({
|
|
48
52
|
cells: [item.created_at.slice(0, 19), item.type, item.sync_status, item.event_id, item.sync_error || ""],
|
|
49
53
|
})),
|
|
50
|
-
empty_message: "No webhook events.",
|
|
54
|
+
empty_message: t({ zh: "暂无 webhook 事件。", en: "No webhook events." }),
|
|
51
55
|
});
|
|
52
56
|
}
|
|
53
57
|
catch (e) {
|