feat: add workbench AI integration
This commit is contained in:
+18
-2
@@ -12,6 +12,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.118im.com/im_team/im_workbench/internal/ai"
|
||||
"git.118im.com/im_team/im_workbench/internal/auth"
|
||||
"git.118im.com/im_team/im_workbench/internal/config"
|
||||
"git.118im.com/im_team/im_workbench/internal/events"
|
||||
@@ -23,6 +24,7 @@ type API struct {
|
||||
auth *auth.Authenticator
|
||||
events events.Publisher
|
||||
authCfg config.AuthConfig
|
||||
ai *ai.Service
|
||||
}
|
||||
|
||||
const workbenchEventPublishTimeout = 15 * time.Second
|
||||
@@ -32,15 +34,27 @@ const (
|
||||
maxMailboxContentLength = 5000
|
||||
)
|
||||
|
||||
func New(st *store.Store, authenticator *auth.Authenticator, publisher events.Publisher, authCfg config.AuthConfig) *API {
|
||||
func New(st *store.Store, authenticator *auth.Authenticator, publisher events.Publisher, authCfg config.AuthConfig, aiService *ai.Service) *API {
|
||||
if publisher == nil {
|
||||
publisher = events.NoopPublisher{}
|
||||
}
|
||||
return &API{store: st, auth: authenticator, events: publisher, authCfg: authCfg}
|
||||
return &API{store: st, auth: authenticator, events: publisher, authCfg: authCfg, ai: aiService}
|
||||
}
|
||||
|
||||
func (a *API) Register(mux *http.ServeMux) {
|
||||
mux.HandleFunc("/v1/workbench", a.withAuth(a.workbench))
|
||||
mux.HandleFunc("/v1/workbench/apps", a.withAuth(a.workbenchApps))
|
||||
mux.HandleFunc("/v1/workbench/apps/search", a.withAuth(a.workbenchAppsSearch))
|
||||
mux.HandleFunc("/v1/workbench/ai/capabilities", a.withAuth(a.aiCapabilities))
|
||||
mux.HandleFunc("/v1/workbench/ai/text/polish", a.withAuth(a.aiTextPolish))
|
||||
mux.HandleFunc("/v1/workbench/ai/documents/generate", a.withAuth(a.aiDocumentGenerate))
|
||||
mux.HandleFunc("/v1/workbench/ai/documents", a.withAuth(a.aiDocuments))
|
||||
mux.HandleFunc("/v1/workbench/ai/documents/", a.withAuth(a.aiDocumentResource))
|
||||
mux.HandleFunc("/v1/workbench/ai/table-analyses", a.withAuth(a.aiTableAnalyses))
|
||||
mux.HandleFunc("/v1/workbench/ai/table-analyses/", a.withAuth(a.aiTableAnalysisResource))
|
||||
mux.HandleFunc("/v1/workbench/ai/records", a.withAuth(a.aiRecords))
|
||||
mux.HandleFunc("/v1/workbench/ai/records/", a.withAuth(a.aiRecordResource))
|
||||
mux.HandleFunc("/v1/workbench/ai/tasks/", a.withAuth(a.aiTaskResource))
|
||||
mux.HandleFunc("/v1/workbench/organization/departments", a.withAuth(a.organizationDepartments))
|
||||
mux.HandleFunc("/v1/workbench/organization/departments/", a.withAuth(a.organizationDepartmentResource))
|
||||
mux.HandleFunc("/v1/workbench/organization/members", a.withAuth(a.organizationMembers))
|
||||
@@ -518,6 +532,8 @@ func (a *API) meetingResource(w http.ResponseWriter, r *http.Request, p *auth.Pr
|
||||
writeSuccess(w, r, meetingPayload(*meeting, p.UserID))
|
||||
case tail == "notes" && r.Method == http.MethodGet:
|
||||
a.meetingNotesDetail(w, r, p, st, meetingID)
|
||||
case tail == "ai-summary":
|
||||
a.aiMeetingSummary(w, r, p, st, meetingID)
|
||||
case tail == "notes/files" && r.Method == http.MethodPost:
|
||||
a.meetingNoteFiles(w, r, p, st, meetingID)
|
||||
case strings.HasPrefix(tail, "notes/files/"):
|
||||
|
||||
Reference in New Issue
Block a user