TP-47360 : Created service for uploading slack conversations to s3 and send request to maverick for generating RCA (#290)

* TP-47360| created services to upload slack conversation to cloud and send urls to generate RCA

* created rca input repository

* TP-47360| enabled generating rca service on resolution

* resolved merge conflicts

* TP-47360| added migration script for creating rca input table

* changed json response structure according to contract

* added unit tests

* removed api to make gen ai call

* made changes in message format posted in slack

* changed entity struct and adding flag to enable rca generation

* attaching title, description and replies related to incident status block

* made design changes in message format
This commit is contained in:
Gullipalli Chetan Kumar
2023-11-24 14:39:34 +05:30
committed by GitHub
parent a1d3d0dc39
commit 2dd4d710e5
17 changed files with 741 additions and 50 deletions

View File

@@ -14,8 +14,13 @@ import (
"houston/model/tag"
"houston/model/team"
"houston/model/user"
"houston/pkg/rest"
"houston/pkg/slackbot"
rcaRepository "houston/repository/rca/impl"
"houston/repository/rcaInput"
"houston/service/documentService"
incidentServiceV2 "houston/service/incident"
"houston/service/rca"
slack2 "houston/service/slack"
"github.com/slack-go/slack"
@@ -52,6 +57,12 @@ func NewSlackHandler(gormClient *gorm.DB, socketModeClient *socketmode.Client) *
diagnosticCommandProcessor := processor.NewDiagnosticCommandProcessor(socketModeClient, grafanaRepository)
incidentServiceV2 := incidentServiceV2.NewIncidentServiceV2(gormClient)
slackService := slack2.NewSlackService()
// new services
rcaRepository := rcaRepository.NewRcaRepository(gormClient)
rcaInputRepository := rcaInput.NewRcaInputRepository(gormClient)
restClient := rest.NewClientActionsImpl()
documentService := documentService.NewActionsImpl(restClient)
rcaService := rca.NewRcaService(incidentServiceV2, slackService, restClient, documentService, rcaRepository, rcaInputRepository, userService)
cron.RunJob(
socketModeClient,
@@ -73,7 +84,7 @@ func NewSlackHandler(gormClient *gorm.DB, socketModeClient *socketmode.Client) *
socketModeClient, incidentService, teamService, severityService,
),
blockActionProcessor: processor.NewBlockActionProcessor(
socketModeClient, incidentService, teamService, severityService, tagService, slackbotClient, incidentServiceV2, slackService,
socketModeClient, incidentService, teamService, severityService, tagService, slackbotClient, incidentServiceV2, slackService, rcaService,
),
viewSubmissionProcessor: processor.NewViewSubmissionProcessor(
socketModeClient, incidentService, teamService, severityService, tagService, teamService, slackbotClient, gormClient,

View File

@@ -11,9 +11,13 @@ import (
"houston/internal/metrics"
"houston/logger"
"houston/model/ingester"
"houston/model/user"
"houston/pkg/rest"
"houston/pkg/slackbot"
rcaRepository "houston/repository/rca/impl"
"houston/repository/rcaInput"
"houston/service"
"houston/service/documentService"
"houston/service/incident"
"houston/service/rca"
"houston/service/slack"
@@ -158,7 +162,11 @@ func (s *Server) rcaHandler(houstonGroup *gin.RouterGroup) {
slackService := slack.NewSlackService()
incidentServiceV2 := incident.NewIncidentServiceV2(s.db)
rcaRepository := rcaRepository.NewRcaRepository(s.db)
rcaService := rca.NewRcaService(incidentServiceV2, slackService, rcaRepository)
rcaInputRepository := rcaInput.NewRcaInputRepository(s.db)
restClient := rest.NewClientActionsImpl()
documentService := documentService.NewActionsImpl(restClient)
userRepository := user.NewUserRepository(s.db)
rcaService := rca.NewRcaService(incidentServiceV2, slackService, restClient, documentService, rcaRepository, rcaInputRepository, userRepository)
rcaHandler := handler.NewRcaHandler(s.gin, rcaService)
houstonGroup.POST("/rca", rcaHandler.HandlePostRca)