feat(help-center): queue article translations

This commit is contained in:
2026-06-06 05:15:48 +08:00
parent 76604353f8
commit 5a3da22a21
7 changed files with 604 additions and 10 deletions
+23 -1
View File
@@ -386,7 +386,25 @@ func (h *ArticleHandler) BulkDelete(c *gin.Context) {
}
func (h *ArticleHandler) BulkTranslate(c *gin.Context) {
c.Status(http.StatusNotImplemented)
portal, ok := h.resolvePortalForRequest(c)
if !ok {
return
}
var req service.BulkTranslateRequest
if err := c.ShouldBindJSON(&req); err != nil {
response.AbortWithStatusError(c, http.StatusBadRequest, response.ErrValidation, err.Error())
return
}
if err := h.svc.BulkTranslate(c.Request.Context(), portal.AccountID, portal, currentUserID(c), req); err != nil {
var conflict *service.ArticleTranslationConflictError
if errors.As(err, &conflict) {
c.JSON(http.StatusConflict, gin.H{"duplicate_articles": conflict.Duplicates})
return
}
renderArticleBulkError(c, err)
return
}
c.Status(http.StatusOK)
}
// BulkActions performs a bulk operation (publish/archive/delete) on multiple articles.
@@ -595,6 +613,10 @@ func renderArticleBulkError(c *gin.Context, err error) {
message = "Invalid status"
case errors.Is(err, service.ErrArticleBulkCategoryNotFound):
message = "Category not found"
case errors.Is(err, service.ErrArticleBulkCaptainNotAvailable):
message = "Captain is not available"
case errors.Is(err, service.ErrArticleBulkLocaleNotAvailable):
message = "Locale is not available"
default:
message = err.Error()
}