feat: 分组密钥检查增加状态选项 (#86)
This commit is contained in:
@@ -175,14 +175,21 @@ export const keysApi = {
|
||||
},
|
||||
|
||||
// 验证分组密钥
|
||||
async validateGroupKeys(groupId: number): Promise<{
|
||||
async validateGroupKeys(
|
||||
groupId: number,
|
||||
status?: "active" | "invalid"
|
||||
): Promise<{
|
||||
is_running: boolean;
|
||||
group_name: string;
|
||||
processed: number;
|
||||
total: number;
|
||||
started_at: string;
|
||||
}> {
|
||||
const res = await http.post("/keys/validate-group", { group_id: groupId });
|
||||
const payload: { group_id: number; status?: string } = { group_id: groupId };
|
||||
if (status) {
|
||||
payload.status = status;
|
||||
}
|
||||
const res = await http.post("/keys/validate-group", payload);
|
||||
return res.data;
|
||||
},
|
||||
|
||||
|
@@ -49,7 +49,7 @@ async function pollOnce() {
|
||||
let msg = "任务已完成。";
|
||||
if (task.task_type === "KEY_VALIDATION") {
|
||||
const result = task.result as import("@/types/models").KeyValidationResult;
|
||||
msg = `密钥验证完成,处理了 ${result.total_keys} 个密钥,其中 ${result.valid_keys} 个有效,${result.invalid_keys} 个无效。`;
|
||||
msg = `密钥验证完成,处理了 ${result.total_keys} 个密钥,其中 ${result.valid_keys} 个成功,${result.invalid_keys} 个失败。请注意:验证失败并不一定拉黑该密钥,需要失败次数达到阈值才会拉黑。`;
|
||||
} else if (task.task_type === "KEY_IMPORT") {
|
||||
const result = task.result as import("@/types/models").KeyImportResult;
|
||||
msg = `密钥导入完成,成功添加 ${result.added_count} 个密钥,忽略了 ${result.ignored_count} 个。`;
|
||||
|
@@ -67,6 +67,8 @@ const moreOptions = [
|
||||
{ label: "清空所有无效密钥", key: "clearInvalid", props: { style: { color: "#d03050" } } },
|
||||
{ type: "divider" },
|
||||
{ label: "验证所有密钥", key: "validateAll" },
|
||||
{ label: "验证有效密钥", key: "validateActive" },
|
||||
{ label: "验证无效密钥", key: "validateInvalid" },
|
||||
];
|
||||
|
||||
let testingMsg: MessageReactive | null = null;
|
||||
@@ -150,7 +152,13 @@ function handleMoreAction(key: string) {
|
||||
restoreAllInvalid();
|
||||
break;
|
||||
case "validateAll":
|
||||
validateAllKeys();
|
||||
validateKeys("all");
|
||||
break;
|
||||
case "validateActive":
|
||||
validateKeys("active");
|
||||
break;
|
||||
case "validateInvalid":
|
||||
validateKeys("invalid");
|
||||
break;
|
||||
case "clearInvalid":
|
||||
clearAllInvalid();
|
||||
@@ -395,17 +403,24 @@ async function restoreAllInvalid() {
|
||||
});
|
||||
}
|
||||
|
||||
async function validateAllKeys() {
|
||||
async function validateKeys(status: "all" | "active" | "invalid") {
|
||||
if (!props.selectedGroup?.id || testingMsg) {
|
||||
return;
|
||||
}
|
||||
|
||||
testingMsg = window.$message.info("正在验证密钥...", {
|
||||
let statusText = "所有";
|
||||
if (status === "active") {
|
||||
statusText = "有效";
|
||||
} else if (status === "invalid") {
|
||||
statusText = "无效";
|
||||
}
|
||||
|
||||
testingMsg = window.$message.info(`正在验证${statusText}密钥...`, {
|
||||
duration: 0,
|
||||
});
|
||||
|
||||
try {
|
||||
await keysApi.validateGroupKeys(props.selectedGroup.id);
|
||||
await keysApi.validateGroupKeys(props.selectedGroup.id, status === "all" ? undefined : status);
|
||||
localStorage.removeItem("last_closed_task");
|
||||
appState.taskPollingTrigger++;
|
||||
} catch (_error) {
|
||||
|
Reference in New Issue
Block a user