Enhance hit and vote retrieval logic in API
- Implemented error handling for uninitialized knowledge base in GetHit and GetVote functions. - Added detailed error responses for cases where hits or votes are not found. - Updated response structures to return the retrieved hit and vote data along with associated identifiers.
This commit is contained in:
parent
82b11caa42
commit
9587cbf981
2 changed files with 62 additions and 10 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
package kb
|
package kb
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
|
@ -206,10 +205,37 @@ func GetHit(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Implement document permission validation for docID
|
// Check if kb.Instance is available
|
||||||
// TODO: Implement get hit detail logic
|
if kb.Instance == nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
errorResp := &response.ErrorResponse{
|
||||||
"hit": nil,
|
Code: response.ErrServerError.Code,
|
||||||
|
ErrorDescription: "Knowledge base not initialized",
|
||||||
|
}
|
||||||
|
response.RespondWithError(c, response.StatusInternalServerError, errorResp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Call GraphRag GetHit method
|
||||||
|
hit, err := kb.Instance.GetHit(c.Request.Context(), docID, segmentID, hitID)
|
||||||
|
if err != nil {
|
||||||
|
if err.Error() == "hit not found" {
|
||||||
|
errorResp := &response.ErrorResponse{
|
||||||
|
Code: response.ErrInvalidRequest.Code,
|
||||||
|
ErrorDescription: "Hit not found",
|
||||||
|
}
|
||||||
|
response.RespondWithError(c, response.StatusNotFound, errorResp)
|
||||||
|
} else {
|
||||||
|
errorResp := &response.ErrorResponse{
|
||||||
|
Code: response.ErrServerError.Code,
|
||||||
|
ErrorDescription: "Failed to get hit: " + err.Error(),
|
||||||
|
}
|
||||||
|
response.RespondWithError(c, response.StatusInternalServerError, errorResp)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response.RespondWithSuccess(c, response.StatusOK, gin.H{
|
||||||
|
"hit": hit,
|
||||||
"doc_id": docID,
|
"doc_id": docID,
|
||||||
"segment_id": segmentID,
|
"segment_id": segmentID,
|
||||||
"hit_id": hitID,
|
"hit_id": hitID,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package kb
|
package kb
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
|
@ -203,10 +202,37 @@ func GetVote(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Implement document permission validation for docID
|
// Check if kb.Instance is available
|
||||||
// TODO: Implement get vote detail logic
|
if kb.Instance == nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
errorResp := &response.ErrorResponse{
|
||||||
"vote": nil,
|
Code: response.ErrServerError.Code,
|
||||||
|
ErrorDescription: "Knowledge base not initialized",
|
||||||
|
}
|
||||||
|
response.RespondWithError(c, response.StatusInternalServerError, errorResp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Call GraphRag GetVote method
|
||||||
|
vote, err := kb.Instance.GetVote(c.Request.Context(), docID, segmentID, voteID)
|
||||||
|
if err != nil {
|
||||||
|
if err.Error() == "vote not found" {
|
||||||
|
errorResp := &response.ErrorResponse{
|
||||||
|
Code: response.ErrInvalidRequest.Code,
|
||||||
|
ErrorDescription: "Vote not found",
|
||||||
|
}
|
||||||
|
response.RespondWithError(c, response.StatusNotFound, errorResp)
|
||||||
|
} else {
|
||||||
|
errorResp := &response.ErrorResponse{
|
||||||
|
Code: response.ErrServerError.Code,
|
||||||
|
ErrorDescription: "Failed to get vote: " + err.Error(),
|
||||||
|
}
|
||||||
|
response.RespondWithError(c, response.StatusInternalServerError, errorResp)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response.RespondWithSuccess(c, response.StatusOK, gin.H{
|
||||||
|
"vote": vote,
|
||||||
"doc_id": docID,
|
"doc_id": docID,
|
||||||
"segment_id": segmentID,
|
"segment_id": segmentID,
|
||||||
"vote_id": voteID,
|
"vote_id": voteID,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue