Integrated AI translation

This commit is contained in:
Mazyar
2026-05-08 16:17:33 +03:30
parent 65a19d1514
commit b480ed2371
9 changed files with 357 additions and 24 deletions
+74
View File
@@ -421,6 +421,43 @@ func (h *TenderHandler) TriggerAISummarize(c echo.Context) error {
return response.Success(c, result, "AI summarization completed successfully")
}
// TriggerAITranslate triggers on-demand AI translation for a tender
// @Summary Trigger AI translation
// @Description Trigger on-demand AI translation for tender title and description and store it in MongoDB
// @Tags Admin-Tenders
// @Accept json
// @Produce json
// @Param id path string true "Tender ID"
// @Param request body AITranslateRequest false "Translation language request (defaults to en)"
// @Success 200 {object} response.APIResponse{data=AITranslateResponse}
// @Failure 400 {object} response.APIResponse
// @Failure 500 {object} response.APIResponse
// @Router /admin/v1/tenders/{id}/ai-translate [post]
// @Security BearerAuth
func (h *TenderHandler) TriggerAITranslate(c echo.Context) error {
id := c.Param("id")
if id == "" {
return response.BadRequest(c, "Tender ID is required", "ID parameter cannot be empty")
}
req := AITranslateRequest{Language: "en"}
_ = c.Bind(&req)
if req.Language == "" {
req.Language = "en"
}
if _, err := govalidator.ValidateStruct(req); err != nil {
return response.ValidationError(c, "Validation failed", err.Error())
}
result, err := h.service.TriggerAITranslate(c.Request().Context(), id, req.Language)
if err != nil {
return response.InternalServerError(c, err.Error())
}
return response.Success(c, result, "AI translation completed successfully")
}
// GetPublicAISummary retrieves the AI-generated overall summary for a tender (public endpoint)
// @Summary Get AI-generated tender summary (public)
// @Description Retrieve the AI-generated overall summary for a tender from the AI pipeline storage
@@ -451,6 +488,43 @@ func (h *TenderHandler) GetPublicAISummary(c echo.Context) error {
return response.Success(c, summary, "AI summary retrieved successfully")
}
// TriggerPublicAITranslate triggers on-demand AI translation for a tender (public endpoint)
// @Summary Trigger AI translation (public)
// @Description Trigger on-demand AI translation for tender title and description and store it in MongoDB
// @Tags Tenders
// @Accept json
// @Produce json
// @Param id path string true "Tender ID"
// @Param request body AITranslateRequest false "Translation language request (defaults to en)"
// @Success 200 {object} response.APIResponse{data=AITranslateResponse}
// @Failure 400 {object} response.APIResponse
// @Failure 500 {object} response.APIResponse
// @Router /api/v1/tenders/{id}/ai-translate [post]
// @Security BearerAuth
func (h *TenderHandler) TriggerPublicAITranslate(c echo.Context) error {
id := c.Param("id")
if id == "" {
return response.BadRequest(c, "Tender ID is required", "ID parameter cannot be empty")
}
req := AITranslateRequest{Language: "en"}
_ = c.Bind(&req)
if req.Language == "" {
req.Language = "en"
}
if _, err := govalidator.ValidateStruct(req); err != nil {
return response.ValidationError(c, "Validation failed", err.Error())
}
result, err := h.service.TriggerAITranslate(c.Request().Context(), id, req.Language)
if err != nil {
return response.InternalServerError(c, err.Error())
}
return response.Success(c, result, "AI translation completed successfully")
}
// GetAllAISummaries retrieves all AI-generated summaries from storage
// @Summary Get all AI-generated tender summaries
// @Description Retrieve all AI-generated summaries from the AI pipeline storage, including pending and completed ones