diff --git a/SatelliteProvider.DataAccess/Repositories/RegionRepository.cs b/SatelliteProvider.DataAccess/Repositories/RegionRepository.cs index af5e21e..c9fc26e 100644 --- a/SatelliteProvider.DataAccess/Repositories/RegionRepository.cs +++ b/SatelliteProvider.DataAccess/Repositories/RegionRepository.cs @@ -30,13 +30,6 @@ public class RegionRepository : IRegionRepository WHERE id = @Id"; var region = await connection.QuerySingleOrDefaultAsync(sql, new { Id = id }); - - if (region != null) - { - _logger.LogInformation("RegionRepository - Read region {RegionId} from DB: Lat={Lat:F12}, Lon={Lon:F12}, Status={Status}", - id, region.Latitude, region.Longitude, region.Status); - } - return region; } @@ -71,9 +64,6 @@ public class RegionRepository : IRegionRepository @CreatedAt, @UpdatedAt) RETURNING id"; - _logger.LogInformation("RegionRepository - Inserting region {RegionId} to DB: Lat={Lat:F12}, Lon={Lon:F12}, Status={Status}", - region.Id, region.Latitude, region.Longitude, region.Status); - return await connection.ExecuteScalarAsync(sql, region); } diff --git a/SatelliteProvider.DataAccess/Repositories/RouteRepository.cs b/SatelliteProvider.DataAccess/Repositories/RouteRepository.cs index 5e113d9..71d0ee6 100644 --- a/SatelliteProvider.DataAccess/Repositories/RouteRepository.cs +++ b/SatelliteProvider.DataAccess/Repositories/RouteRepository.cs @@ -44,14 +44,6 @@ public class RouteRepository : IRouteRepository ORDER BY sequence_number"; var points = (await connection.QueryAsync(sql, new { RouteId = routeId })).ToList(); - - if (points.Any()) - { - _logger.LogInformation("RouteRepository - Read {Count} points from DB for route {RouteId}. First: Lat={Lat:F12}, Lon={Lon:F12}, Last: Lat={LastLat:F12}, Lon={LastLon:F12}", - points.Count, routeId, points[0].Latitude, points[0].Longitude, - points[^1].Latitude, points[^1].Longitude); - } - return points; } @@ -82,13 +74,6 @@ public class RouteRepository : IRouteRepository @PointType, @SegmentIndex, @DistanceFromPrevious, @CreatedAt)"; var pointsList = points.ToList(); - if (pointsList.Any()) - { - _logger.LogInformation("RouteRepository - Inserting {Count} points to DB. First: Lat={Lat:F12}, Lon={Lon:F12}, Last: Lat={LastLat:F12}, Lon={LastLon:F12}", - pointsList.Count, pointsList[0].Latitude, pointsList[0].Longitude, - pointsList[^1].Latitude, pointsList[^1].Longitude); - } - await connection.ExecuteAsync(sql, pointsList); } diff --git a/SatelliteProvider.DataAccess/Repositories/TileRepository.cs b/SatelliteProvider.DataAccess/Repositories/TileRepository.cs index 760ad9b..4645b95 100644 --- a/SatelliteProvider.DataAccess/Repositories/TileRepository.cs +++ b/SatelliteProvider.DataAccess/Repositories/TileRepository.cs @@ -28,13 +28,6 @@ public class TileRepository : ITileRepository WHERE id = @Id"; var tile = await connection.QuerySingleOrDefaultAsync(sql, new { Id = id }); - - if (tile != null) - { - _logger.LogInformation("TileRepository - Read tile {TileId} from DB: Lat={Lat:F12}, Lon={Lon:F12}, Zoom={Zoom}", - id, tile.Latitude, tile.Longitude, tile.ZoomLevel); - } - return tile; } @@ -116,9 +109,6 @@ public class TileRepository : ITileRepository updated_at = EXCLUDED.updated_at RETURNING id"; - _logger.LogInformation("TileRepository - Inserting tile {TileId} to DB: Lat={Lat:F12}, Lon={Lon:F12}, Zoom={Zoom}", - tile.Id, tile.Latitude, tile.Longitude, tile.ZoomLevel); - return await connection.ExecuteScalarAsync(sql, tile); } diff --git a/SatelliteProvider.IntegrationTests/Program.cs b/SatelliteProvider.IntegrationTests/Program.cs index baf92c8..fa015d8 100644 --- a/SatelliteProvider.IntegrationTests/Program.cs +++ b/SatelliteProvider.IntegrationTests/Program.cs @@ -24,21 +24,21 @@ class Program Console.WriteLine("✓ API is ready"); Console.WriteLine(); - // await TileTests.RunGetTileByLatLonTest(httpClient); + await TileTests.RunGetTileByLatLonTest(httpClient); - // await RegionTests.RunRegionProcessingTest_200m_Zoom18(httpClient); + await RegionTests.RunRegionProcessingTest_200m_Zoom18(httpClient); - // await RegionTests.RunRegionProcessingTest_400m_Zoom17(httpClient); + await RegionTests.RunRegionProcessingTest_400m_Zoom17(httpClient); - // await RegionTests.RunRegionProcessingTest_500m_Zoom18(httpClient); + await RegionTests.RunRegionProcessingTest_500m_Zoom18(httpClient); - // await RouteTests.RunSimpleRouteTest(httpClient); + await RouteTests.RunSimpleRouteTest(httpClient); - // await RouteTests.RunRouteWithRegionProcessingAndStitching(httpClient); + await RouteTests.RunRouteWithRegionProcessingAndStitching(httpClient); await RouteTests.RunComplexRouteWithStitching(httpClient); await RouteTests.RunComplexRouteWithStitchingAndGeofences(httpClient); - // await RouteTests.RunExtendedRouteEast(httpClient); + await RouteTests.RunExtendedRouteEast(httpClient); Console.WriteLine(); Console.WriteLine("========================="); diff --git a/SatelliteProvider.Services/RegionProcessingService.cs b/SatelliteProvider.Services/RegionProcessingService.cs index 127d00a..3174732 100644 --- a/SatelliteProvider.Services/RegionProcessingService.cs +++ b/SatelliteProvider.Services/RegionProcessingService.cs @@ -47,13 +47,9 @@ public class RegionProcessingService : BackgroundService if (workerId > 1) { var startupDelay = Random.Shared.Next(100, 500); - _logger.LogInformation("Region worker {WorkerId} starting with {Delay}ms delay to reduce contention", - workerId, startupDelay); await Task.Delay(startupDelay, stoppingToken); } - _logger.LogInformation("Region worker {WorkerId} started", workerId); - while (!stoppingToken.IsCancellationRequested) { try @@ -62,13 +58,7 @@ public class RegionProcessingService : BackgroundService if (request != null) { - _logger.LogInformation("Worker {WorkerId}: Dequeued region request {RegionId}", - workerId, request.Id); - await _regionService.ProcessRegionAsync(request.Id, stoppingToken); - - _logger.LogInformation("Worker {WorkerId}: Completed region {RegionId}", - workerId, request.Id); } } catch (OperationCanceledException) @@ -80,8 +70,6 @@ public class RegionProcessingService : BackgroundService _logger.LogError(ex, "Worker {WorkerId}: Error processing region request", workerId); } } - - _logger.LogInformation("Region worker {WorkerId} stopped", workerId); } } diff --git a/SatelliteProvider.Services/RouteProcessingService.cs b/SatelliteProvider.Services/RouteProcessingService.cs index 110bc8b..81d4c2a 100644 --- a/SatelliteProvider.Services/RouteProcessingService.cs +++ b/SatelliteProvider.Services/RouteProcessingService.cs @@ -318,6 +318,8 @@ public class RouteProcessingService : BackgroundService await _routeRepository.UpdateRouteAsync(route); + await CleanupRegionFilesAsync(regionIds, cancellationToken); + _logger.LogInformation("Route {RouteId} maps processing completed successfully", routeId); } catch (Exception ex) @@ -327,6 +329,53 @@ public class RouteProcessingService : BackgroundService } } + private async Task CleanupRegionFilesAsync(IEnumerable regionIds, CancellationToken cancellationToken) + { + foreach (var regionId in regionIds) + { + var region = await _regionRepository.GetByIdAsync(regionId); + if (region == null) continue; + + if (!string.IsNullOrEmpty(region.CsvFilePath) && File.Exists(region.CsvFilePath)) + { + try + { + File.Delete(region.CsvFilePath); + } + catch (Exception ex) + { + _logger.LogWarning(ex, "Failed to delete region CSV file: {FilePath}", region.CsvFilePath); + } + } + + if (!string.IsNullOrEmpty(region.SummaryFilePath) && File.Exists(region.SummaryFilePath)) + { + try + { + File.Delete(region.SummaryFilePath); + } + catch (Exception ex) + { + _logger.LogWarning(ex, "Failed to delete region summary file: {FilePath}", region.SummaryFilePath); + } + } + + var readyDir = _storageConfig.ReadyDirectory; + var stitchedImagePath = Path.Combine(readyDir, $"region_{regionId}_stitched.jpg"); + if (File.Exists(stitchedImagePath)) + { + try + { + File.Delete(stitchedImagePath); + } + catch (Exception ex) + { + _logger.LogWarning(ex, "Failed to delete region stitched image: {FilePath}", stitchedImagePath); + } + } + } + } + private async Task GenerateRouteCsvAsync( string filePath, IEnumerable tiles,