perf(monitor): aggregate realtime workspace

This commit is contained in:
lingniu
2026-07-16 03:26:14 +08:00
parent 01150844df
commit cad39d6326
12 changed files with 147 additions and 28 deletions

View File

@@ -488,6 +488,10 @@ func (s *Service) MonitorSummary(ctx context.Context, query url.Values) (Monitor
if err != nil {
return MonitorSummary{}, err
}
return s.buildMonitorSummary(ctx, query, vehicles)
}
func (s *Service) buildMonitorSummary(ctx context.Context, query url.Values, vehicles Page[VehicleRealtimeRow]) (MonitorSummary, error) {
dashboard, err := s.store.DashboardSummary(ctx)
if err != nil {
return MonitorSummary{}, err
@@ -533,6 +537,34 @@ func (s *Service) MonitorSummary(ctx context.Context, query url.Values) (Monitor
return result, nil
}
func (s *Service) MonitorWorkspace(ctx context.Context, query url.Values) (MonitorWorkspaceResponse, error) {
vehicles, err := s.store.VehicleRealtime(ctx, normalizeMonitorQuery(query))
if err != nil {
return MonitorWorkspaceResponse{}, err
}
summary, err := s.buildMonitorSummary(ctx, query, vehicles)
if err != nil {
return MonitorWorkspaceResponse{}, err
}
monitorMap, err := buildMonitorMapResponse(vehicles, query)
if err != nil {
return MonitorWorkspaceResponse{}, err
}
railLimit := parsePositive(query.Get("railLimit"), 200)
if railLimit > 200 {
railLimit = 200
}
if railLimit > len(vehicles.Items) {
railLimit = len(vehicles.Items)
}
railItems := append([]VehicleRealtimeRow(nil), vehicles.Items[:railLimit]...)
return MonitorWorkspaceResponse{
Summary: summary,
Vehicles: Page[VehicleRealtimeRow]{Items: railItems, Total: vehicles.Total, Limit: railLimit, Offset: 0},
Map: monitorMap,
}, nil
}
func (s *Service) MonitorMap(ctx context.Context, query url.Values) (MonitorMapResponse, error) {
vehicles, err := s.store.VehicleRealtime(ctx, normalizeMonitorQuery(query))
if err != nil {