Integrated AI summary
This commit is contained in:
@@ -360,3 +360,114 @@ func (h *TenderHandler) GetDocumentSummaries(c echo.Context) error {
|
||||
|
||||
return response.Success(c, summaries, "Document summaries retrieved successfully")
|
||||
}
|
||||
|
||||
// GetAISummary retrieves the AI-generated overall summary for a tender
|
||||
// @Summary Get AI-generated tender summary
|
||||
// @Description Retrieve the AI-generated overall summary for a tender from the AI pipeline storage
|
||||
// @Tags Admin-Tenders
|
||||
// @Produce json
|
||||
// @Param id path string true "Tender ID"
|
||||
// @Success 200 {object} response.APIResponse{data=AISummaryResponse}
|
||||
// @Failure 400 {object} response.APIResponse
|
||||
// @Failure 404 {object} response.APIResponse
|
||||
// @Failure 500 {object} response.APIResponse
|
||||
// @Router /admin/v1/tenders/{id}/ai-summary [get]
|
||||
// @Security BearerAuth
|
||||
func (h *TenderHandler) GetAISummary(c echo.Context) error {
|
||||
id := c.Param("id")
|
||||
if id == "" {
|
||||
return response.BadRequest(c, "Tender ID is required", "ID parameter cannot be empty")
|
||||
}
|
||||
|
||||
summary, err := h.service.GetAISummary(c.Request().Context(), id)
|
||||
if err != nil {
|
||||
h.logger.Error("Failed to get AI summary", map[string]interface{}{
|
||||
"tender_id": id,
|
||||
"error": err.Error(),
|
||||
})
|
||||
return response.NotFound(c, err.Error())
|
||||
}
|
||||
|
||||
return response.Success(c, summary, "AI summary retrieved successfully")
|
||||
}
|
||||
|
||||
// TriggerAISummarize triggers on-demand AI summarization for a tender
|
||||
// @Summary Trigger AI summarization
|
||||
// @Description Trigger on-demand AI summarization for a tender by calling the external AI service
|
||||
// @Tags Admin-Tenders
|
||||
// @Produce json
|
||||
// @Param id path string true "Tender ID"
|
||||
// @Success 200 {object} response.APIResponse{data=AISummarizeResponse}
|
||||
// @Failure 400 {object} response.APIResponse
|
||||
// @Failure 404 {object} response.APIResponse
|
||||
// @Failure 500 {object} response.APIResponse
|
||||
// @Router /admin/v1/tenders/{id}/ai-summarize [post]
|
||||
// @Security BearerAuth
|
||||
func (h *TenderHandler) TriggerAISummarize(c echo.Context) error {
|
||||
id := c.Param("id")
|
||||
if id == "" {
|
||||
return response.BadRequest(c, "Tender ID is required", "ID parameter cannot be empty")
|
||||
}
|
||||
|
||||
result, err := h.service.TriggerAISummarize(c.Request().Context(), id)
|
||||
if err != nil {
|
||||
h.logger.Error("Failed to trigger AI summarization", map[string]interface{}{
|
||||
"tender_id": id,
|
||||
"error": err.Error(),
|
||||
})
|
||||
return response.InternalServerError(c, err.Error())
|
||||
}
|
||||
|
||||
return response.Success(c, result, "AI summarization 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
|
||||
// @Tags Tenders
|
||||
// @Produce json
|
||||
// @Param id path string true "Tender ID"
|
||||
// @Success 200 {object} response.APIResponse{data=AISummaryResponse}
|
||||
// @Failure 400 {object} response.APIResponse
|
||||
// @Failure 404 {object} response.APIResponse
|
||||
// @Failure 500 {object} response.APIResponse
|
||||
// @Router /api/v1/tenders/{id}/ai-summary [get]
|
||||
// @Security BearerAuth
|
||||
func (h *TenderHandler) GetPublicAISummary(c echo.Context) error {
|
||||
id := c.Param("id")
|
||||
if id == "" {
|
||||
return response.BadRequest(c, "Tender ID is required", "ID parameter cannot be empty")
|
||||
}
|
||||
|
||||
summary, err := h.service.GetAISummary(c.Request().Context(), id)
|
||||
if err != nil {
|
||||
h.logger.Error("Failed to get AI summary", map[string]interface{}{
|
||||
"tender_id": id,
|
||||
"error": err.Error(),
|
||||
})
|
||||
return response.NotFound(c, err.Error())
|
||||
}
|
||||
|
||||
return response.Success(c, summary, "AI summary retrieved 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
|
||||
// @Tags Admin-Tenders
|
||||
// @Produce json
|
||||
// @Success 200 {object} response.APIResponse{data=[]ai_summarizer.TenderSummaryItem}
|
||||
// @Failure 500 {object} response.APIResponse
|
||||
// @Router /admin/v1/tenders/ai-summaries [get]
|
||||
// @Security BearerAuth
|
||||
func (h *TenderHandler) GetAllAISummaries(c echo.Context) error {
|
||||
summaries, err := h.service.GetAllAISummaries(c.Request().Context())
|
||||
if err != nil {
|
||||
h.logger.Error("Failed to get all AI summaries", map[string]interface{}{
|
||||
"error": err.Error(),
|
||||
})
|
||||
return response.InternalServerError(c, err.Error())
|
||||
}
|
||||
|
||||
return response.Success(c, summaries, "AI summaries retrieved successfully")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user