mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-21 23:41:14 +00:00
6b373082c8
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>
54 lines
2.3 KiB
Markdown
54 lines
2.3 KiB
Markdown
# Component Relationship Diagram
|
|
|
|
```mermaid
|
|
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.
|