@@ -47,6 +47,7 @@ type TaskHandler struct {
4747 controlConns * ws.ControlConn
4848 taskSummary * service.TaskSummaryService
4949 idleRefresher vmidle.VMIdleRefresher
50+ activeRepo domain.UserActiveRepo
5051}
5152
5253// NewTaskHandler 创建任务处理器
@@ -76,6 +77,8 @@ func NewTaskHandler(i *do.Injector) (*TaskHandler, error) {
7677 nlsSvc = n
7778 }
7879
80+ activeRepo := do.MustInvoke [domain.UserActiveRepo ](i )
81+
7982 h := & TaskHandler {
8083 cfg : cfg ,
8184 usecase : uc ,
@@ -89,6 +92,7 @@ func NewTaskHandler(i *do.Injector) (*TaskHandler, error) {
8992 controlConns : cc ,
9093 taskSummary : ts ,
9194 idleRefresher : ir ,
95+ activeRepo : activeRepo ,
9296 }
9397
9498 // 注册路由
@@ -583,6 +587,11 @@ func (h *TaskHandler) readClientMessages(ctx context.Context, wsConn *ws.Websock
583587}
584588
585589func (h * TaskHandler ) handleClientMessage (ctx context.Context , logger * slog.Logger , user * domain.User , task * domain.Task , m domain.TaskStream ) {
590+ // 记录用户活跃时间
591+ if err := h .activeRepo .RecordActiveRecord (ctx , consts .UserActiveKey , user .ID .String (), time .Now ()); err != nil {
592+ logger .With ("error" , err ).WarnContext (ctx , "failed to record user active time" )
593+ }
594+
586595 switch m .Type {
587596 case consts .TaskStreamTypeUserInput :
588597 if err := h .usecase .Continue (ctx , user , task .ID , string (m .Data )); err != nil {
0 commit comments