视频会议保存

This commit is contained in:
duoaohui
2026-05-18 21:23:00 +08:00
parent fb965cc8c4
commit 5a5706c236
20 changed files with 1211 additions and 1 deletions

View File

@@ -17,6 +17,7 @@ import (
notifyController "github.com/echochat/backend/app/notify/controller"
notifyService "github.com/echochat/backend/app/notify/service"
notifyTask "github.com/echochat/backend/app/notify/task"
transcribeController "github.com/echochat/backend/app/transcribe/controller"
wsApp "github.com/echochat/backend/app/ws"
"github.com/echochat/backend/config"
"github.com/echochat/backend/pkg/db"
@@ -64,6 +65,8 @@ type App struct {
MeetingRecordingService *meetingService.MeetingRecordingService // 会议录制业务服务Phase B 新增)
MeetingWSHandler *meetingController.MeetingWSHandler // 会议 WS 事件 Handler构造时自动注册路由到 Hub
MeetingCleanupTask *meetingTask.MeetingCleanupTask // 会议生命周期兜底定时任务Task 8 落地)
TranscribeController *transcribeController.TranscribeController // 语音转写控制器Phase B 新增)
LLMSourceDB *db.LLMSourceDB // 外部 LLM 配置 MySQL 连接句柄Phase B 新增)
}
// NewApp 创建应用实例
@@ -102,6 +105,8 @@ func NewApp(
meetingRecordingSvc *meetingService.MeetingRecordingService,
meetingWSHandler *meetingController.MeetingWSHandler,
meetingCleanup *meetingTask.MeetingCleanupTask,
transcribeCtrl *transcribeController.TranscribeController,
llmSourceDB *db.LLMSourceDB,
) *App {
wsHandler.SetOfflinePusher(offlinePusher)
wsHandler.SetNotifyConnectHook(notifySvc)
@@ -144,6 +149,8 @@ func NewApp(
MeetingRecordingService: meetingRecordingSvc,
MeetingWSHandler: meetingWSHandler,
MeetingCleanupTask: meetingCleanup,
TranscribeController: transcribeCtrl,
LLMSourceDB: llmSourceDB,
}
}
@@ -173,6 +180,11 @@ func provideServerConfig(cfg *config.Config) *config.ServerConfig {
return &cfg.Server
}
// provideLLMSourceConfig 从全局 Config 中提取 LLMSourceConfigPhase B 语音转写)
func provideLLMSourceConfig(cfg *config.Config) *config.LLMSourceConfig {
return &cfg.LLMSource
}
// InfraSet 基础设施层 Provider Set
var InfraSet = wire.NewSet(
provideDBConfig,
@@ -180,8 +192,10 @@ var InfraSet = wire.NewSet(
provideJWTConfig,
provideMinioConfig,
provideServerConfig,
provideLLMSourceConfig,
db.NewPostgres,
db.NewRedis,
db.NewLLMSourceDB,
storage.NewMinioClient,
NewApp,
)

View File

@@ -21,6 +21,7 @@ import (
meetingService "github.com/echochat/backend/app/meeting/service"
notifyApp "github.com/echochat/backend/app/notify"
notifyService "github.com/echochat/backend/app/notify/service"
transcribeApp "github.com/echochat/backend/app/transcribe"
wsApp "github.com/echochat/backend/app/ws"
"github.com/echochat/backend/config"
"github.com/google/wire"
@@ -39,6 +40,7 @@ func InitializeApp(cfg *config.Config) (*App, error) {
groupApp.GroupSet,
notifyApp.NotifySet,
meetingApp.MeetingSet,
transcribeApp.TranscribeSet,
wire.Bind(new(wsApp.FriendIDsGetter), new(*contactDAO.FriendshipDAO)),
wire.Bind(new(groupService.UserInfoProvider), new(*contactDAO.FriendshipDAO)),
wire.Bind(new(imService.GroupInfoGetter), new(*groupDAO.GroupDAO)),

View File

@@ -30,6 +30,9 @@ import (
dao5 "github.com/echochat/backend/app/notify/dao"
service3 "github.com/echochat/backend/app/notify/service"
"github.com/echochat/backend/app/notify/task"
controller8 "github.com/echochat/backend/app/transcribe/controller"
dao7 "github.com/echochat/backend/app/transcribe/dao"
service8 "github.com/echochat/backend/app/transcribe/service"
"github.com/echochat/backend/app/ws"
"github.com/echochat/backend/config"
"github.com/echochat/backend/pkg/db"
@@ -117,6 +120,16 @@ func InitializeApp(cfg *config.Config) (*App, error) {
meetingRecordingController := controller7.NewMeetingRecordingController(meetingRecordingService)
meetingWSHandler := controller7.NewMeetingWSHandler(meetingSignalService, hub)
meetingCleanupTask := task2.NewMeetingCleanupTask(meetingLifecycleService, meetingRoomDAO, meetingChatDAO)
app := NewApp(cfg, gormDB, client, minioClient, authService, authController, adminAuthController, userManageController, onlineController, contactManageController, groupManageController, messageManageController, meetingManageController, handler, hub, pubSub, onlineService, contactController, imController, eventHandler, offlinePusher, fileController, groupController, notifyService, notificationController, cleanupTask, meetingService, meetingSignalService, meetingLifecycleService, meetingController, meetingRecordingController, meetingRecordingService, meetingWSHandler, meetingCleanupTask)
llmSourceConfig := provideLLMSourceConfig(cfg)
llmSourceDB, err := db.NewLLMSourceDB(llmSourceConfig)
if err != nil {
return nil, err
}
transcriptDAO := dao7.NewTranscriptDAO(gormDB)
llmConfigDAO := dao7.NewLLMConfigDAO(llmSourceDB)
sttClient := service8.NewOpenAICompatibleClient()
transcribeService := service8.NewTranscribeService(gormDB, transcriptDAO, llmConfigDAO, sttClient)
transcribeController := controller8.NewTranscribeController(transcribeService)
app := NewApp(cfg, gormDB, client, minioClient, authService, authController, adminAuthController, userManageController, onlineController, contactManageController, groupManageController, messageManageController, meetingManageController, handler, hub, pubSub, onlineService, contactController, imController, eventHandler, offlinePusher, fileController, groupController, notifyService, notificationController, cleanupTask, meetingService, meetingSignalService, meetingLifecycleService, meetingController, meetingRecordingController, meetingRecordingService, meetingWSHandler, meetingCleanupTask, transcribeController, llmSourceDB)
return app, nil
}