[AZ-312] [AZ-313] [AZ-314] Split Services into per-component csprojs

Phase B of architecture coupling refactor (epic AZ-309). Replaces
the monolithic SatelliteProvider.Services with three per-component
csprojs to add a compiler-enforced module boundary (resolves F4):

- SatelliteProvider.Services.TileDownloader
- SatelliteProvider.Services.RegionProcessing
- SatelliteProvider.Services.RouteManagement

DI registrations relocated into per-component AddTileDownloader /
AddRegionProcessing / AddRouteManagement extension methods called
from Program.cs. RateLimitException moved to Common/Exceptions/ to
keep the three new csprojs as siblings (no Region->TileDownloader
ProjectReference). Dockerfiles and consumer csprojs (Api, Tests)
rewired to the new project paths. No DI lifetime or hosted-service
order changes.

Build: 0 warn, 0 err. Unit tests: 40/40. Smoke integration: green.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-05-10 07:15:44 +03:00
parent 12b582deac
commit 8b0ddae075
30 changed files with 330 additions and 46 deletions
+17 -5
View File
@@ -5,7 +5,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SatelliteProvider.Api", "Sa
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SatelliteProvider.Common", "SatelliteProvider.Common\SatelliteProvider.Common.csproj", "{5499248E-F025-4091-9103-6AA02C6CB613}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SatelliteProvider.Services", "SatelliteProvider.Services\SatelliteProvider.Services.csproj", "{452166A0-28C3-429F-B2BD-39041FB7B5A5}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SatelliteProvider.Services.TileDownloader", "SatelliteProvider.Services.TileDownloader\SatelliteProvider.Services.TileDownloader.csproj", "{B7E1A001-1111-4111-9111-111111111111}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SatelliteProvider.Services.RegionProcessing", "SatelliteProvider.Services.RegionProcessing\SatelliteProvider.Services.RegionProcessing.csproj", "{B7E1A002-2222-4222-9222-222222222222}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SatelliteProvider.Services.RouteManagement", "SatelliteProvider.Services.RouteManagement\SatelliteProvider.Services.RouteManagement.csproj", "{B7E1A003-3333-4333-9333-333333333333}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SatelliteProvider.Tests", "SatelliteProvider.Tests\SatelliteProvider.Tests.csproj", "{A44A2E49-9270-4938-9D34-A31CE63E636C}"
EndProject
@@ -27,10 +31,18 @@ Global
{5499248E-F025-4091-9103-6AA02C6CB613}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5499248E-F025-4091-9103-6AA02C6CB613}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5499248E-F025-4091-9103-6AA02C6CB613}.Release|Any CPU.Build.0 = Release|Any CPU
{452166A0-28C3-429F-B2BD-39041FB7B5A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{452166A0-28C3-429F-B2BD-39041FB7B5A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{452166A0-28C3-429F-B2BD-39041FB7B5A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{452166A0-28C3-429F-B2BD-39041FB7B5A5}.Release|Any CPU.Build.0 = Release|Any CPU
{B7E1A001-1111-4111-9111-111111111111}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B7E1A001-1111-4111-9111-111111111111}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B7E1A001-1111-4111-9111-111111111111}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B7E1A001-1111-4111-9111-111111111111}.Release|Any CPU.Build.0 = Release|Any CPU
{B7E1A002-2222-4222-9222-222222222222}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B7E1A002-2222-4222-9222-222222222222}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B7E1A002-2222-4222-9222-222222222222}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B7E1A002-2222-4222-9222-222222222222}.Release|Any CPU.Build.0 = Release|Any CPU
{B7E1A003-3333-4333-9333-333333333333}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B7E1A003-3333-4333-9333-333333333333}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B7E1A003-3333-4333-9333-333333333333}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B7E1A003-3333-4333-9333-333333333333}.Release|Any CPU.Build.0 = Release|Any CPU
{A44A2E49-9270-4938-9D34-A31CE63E636C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A44A2E49-9270-4938-9D34-A31CE63E636C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A44A2E49-9270-4938-9D34-A31CE63E636C}.Release|Any CPU.ActiveCfg = Release|Any CPU