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) <noreply@anthropic.com>
This commit is contained in:
2026-05-01 20:19:08 +08:00
parent c1f07bfb65
commit 39ef1a6b7f
6 changed files with 203 additions and 10 deletions
@@ -190,6 +190,21 @@ func (h *KnowledgeHandler) CreateFileItem(c *gin.Context) {
response.SuccessWithStatus(c, http.StatusCreated, data)
}
func (h *KnowledgeHandler) RetryItem(c *gin.Context) {
itemID, err := strconv.ParseInt(c.Param("id"), 10, 64)
if err != nil {
response.Error(c, response.ErrBadRequest(40001, "invalid_id", "knowledge item id must be a number"))
return
}
data, err := h.svc.RetryItem(c.Request.Context(), itemID)
if err != nil {
response.Error(c, err)
return
}
response.Success(c, data)
}
func (h *KnowledgeHandler) DeleteItem(c *gin.Context) {
itemID, err := strconv.ParseInt(c.Param("id"), 10, 64)
if err != nil {
@@ -199,6 +199,7 @@ func RegisterRoutes(app *bootstrap.App) {
knowledge.POST("/items/text", knowledgeHandler.CreateTextItem)
knowledge.POST("/items/url", knowledgeHandler.CreateURLItem)
knowledge.POST("/items/file", knowledgeHandler.CreateFileItem)
knowledge.POST("/items/retry/:id", knowledgeHandler.RetryItem)
knowledge.DELETE("/items/:id", knowledgeHandler.DeleteItem)
// Prompt Rules