Files
Oleksandr Bezdieniezhnykh 6b373082c8 [AZ-315] Sync architecture docs after coupling refactor
Phase C of architecture coupling refactor (epic AZ-309). Closes the
last baseline finding (F5 — DataAccess incorrectly documented as
importing Common) and synchronizes the rest of _docs/02_document/
with the post-split project layout from AZ-312/313/314:

- module-layout.md: per-component sections for the three new csprojs
  with explicit ProjectReferences and the no-cross-sibling-reference
  invariant the split enforces.
- architecture.md: components and internal-communication tables
  updated to show calls flow through Common interfaces.
- architecture_compliance_baseline.md: F1..F5 marked Resolved with
  task IDs and commit refs; baseline summary now 0 findings.
- diagrams/components.md, components/03_tile_downloader/description.md,
  modules/{common_interfaces,services_tile_service,
  services_google_maps_downloader,tests_unit}.md updated for the
  split, RateLimitException relocation, and new ITileService methods.

Documentation-only batch — no code, no tests, no build changes.
Epic AZ-309 complete (6 tasks across 3 batches).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-10 07:25:21 +03:00

2.3 KiB

Component Relationship Diagram

graph TD
    subgraph "External"
        Client[HTTP Clients]
        GoogleMaps[Google Maps API]
        PG[(PostgreSQL)]
        FS[File System]
    end

    subgraph "SatelliteProvider"
        WebApi[WebApi<br/>Program.cs endpoints]
        Route[RouteManagement<br/>RouteService + RouteProcessingService]
        Region[RegionProcessing<br/>RegionService + Queue + Workers]
        Tile[TileDownloader<br/>GoogleMapsDownloaderV2 + TileService]
        DA[DataAccess<br/>Repositories + Migrations]
        Common[Common<br/>DTOs + Interfaces + Configs + GeoUtils]
    end

    Client -->|HTTP| WebApi
    WebApi --> Route
    WebApi --> Region
    WebApi --> Tile
    Route --> Region
    Route --> DA
    Region --> Tile
    Region --> DA
    Tile --> DA
    Tile -->|HTTPS| GoogleMaps
    Tile --> FS
    Region --> FS
    Route --> FS
    DA --> PG
    WebApi --> DA
    WebApi --> Common
    Route --> Common
    Region --> Common
    Tile --> Common

Component Summary

# Component Project Responsibility
1 Common SatelliteProvider.Common Shared DTOs, interfaces, configs, GeoUtils, common exceptions
2 DataAccess SatelliteProvider.DataAccess Database entities, Dapper repositories, DbUp migrations
3 TileDownloader SatelliteProvider.Services.TileDownloader Google Maps tile acquisition (GoogleMapsDownloaderV2), tile orchestration with caching (TileService)
4 RegionProcessing SatelliteProvider.Services.RegionProcessing Region request lifecycle (RegionService), in-process queue (RegionRequestQueue), background worker (RegionProcessingService)
5 RouteManagement SatelliteProvider.Services.RouteManagement Route creation + point interpolation + geofencing (RouteService), background worker (RouteProcessingService)
WebApi SatelliteProvider.Api HTTP endpoints, DI configuration, startup

Note: the arrows Region --> Tile and Route --> Region in the diagram represent logical dependencies via interfaces (ITileService, IRegionService, IRegionRequestQueue) defined in SatelliteProvider.Common. There are NO compile-time ProjectReference entries between the three Layer-3 component csprojs — see module-layout.md § Allowed Dependencies.