From 39ef1a6b7f173d2d2cb458564a67a9d25be136c0 Mon Sep 17 00:00:00 2001 From: liangxu Date: Fri, 1 May 2026 20:19:08 +0800 Subject: [PATCH] feat(knowledge): add retry endpoint and 20-char text name limit Add POST /api/tenant/knowledge/items/retry/:id to re-queue failed parse tasks, plus a 20-rune cap on text item names with matching frontend validation. Wires the retry button into the knowledge table with a colored status tag for clearer state feedback. Co-Authored-By: Claude Opus 4.7 (1M context) --- apps/admin-web/src/lib/api.ts | 3 + apps/admin-web/src/lib/errors.ts | 1 + apps/admin-web/src/views/KnowledgeView.vue | 90 +++++++++++++-- .../internal/tenant/app/knowledge_service.go | 103 +++++++++++++++++- .../tenant/transport/knowledge_handler.go | 15 +++ server/internal/tenant/transport/router.go | 1 + 6 files changed, 203 insertions(+), 10 deletions(-) diff --git a/apps/admin-web/src/lib/api.ts b/apps/admin-web/src/lib/api.ts index 8fd857e..875f711 100644 --- a/apps/admin-web/src/lib/api.ts +++ b/apps/admin-web/src/lib/api.ts @@ -703,6 +703,9 @@ export const knowledgeApi = { removeItem(id: number) { return apiClient.remove(`/api/tenant/knowledge/items/${id}`); }, + retryItem(id: number) { + return apiClient.post(`/api/tenant/knowledge/items/retry/${id}`, null); + }, }; export const imagesApi = { diff --git a/apps/admin-web/src/lib/errors.ts b/apps/admin-web/src/lib/errors.ts index 97beb01..a641725 100644 --- a/apps/admin-web/src/lib/errors.ts +++ b/apps/admin-web/src/lib/errors.ts @@ -53,6 +53,7 @@ const errorMessageMap: Record = { keyword_exists: "关键词已存在", keyword_limit_reached: "关键词数量已达当前套餐上限", question_limit_reached: "当前关键词下的问题数量已达上限", + knowledge_text_name_too_long: "文本名称不能超过 20 个字", brand_not_found: "品牌不存在或已删除", keyword_not_found: "关键词不存在或已删除", publish_cover_required: "当前选择的平台要求上传封面图,请先上传封面图", diff --git a/apps/admin-web/src/views/KnowledgeView.vue b/apps/admin-web/src/views/KnowledgeView.vue index f8afc04..2f9ceeb 100644 --- a/apps/admin-web/src/views/KnowledgeView.vue +++ b/apps/admin-web/src/views/KnowledgeView.vue @@ -1,5 +1,5 @@