mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-21 16:31:15 +00:00
9a53bff92e
Batch 24 of 03-code-quality-refactoring run; closes the run. AZ-375 (C22): GoogleMapsDownloaderV2.DownloadTilesGridAsync now builds a HashSet<(int X, int Y, int Z)> once from existingTiles and tests Contains((x, y, zoomLevel)) per cell. Removes the per-cell FirstOrDefault tolerance scan and the unused _processingConfig .LatLonTolerance reference at this site. AZ-377 (C24): promote Earth + tile-pixel constants to a single home. GeoUtils now exposes EarthRadiusMeters, EarthEquatorial CircumferenceMeters, MetersPerDegreeLatitude as public const. MapConfig adds DefaultTileSizePixels (const) wired as the TileSizePixels property default. TileRepository and Google MapsDownloaderV2 read those constants instead of duplicating the literals 6378137, 40075016.686, 111000.0, and 256. Tests: +6 new (DownloaderRefactorTests, extended GeoUtils RefactorTests). 200/200 unit tests pass. Cumulative K=3 review (batches 22-24): PASS_WITH_WARNINGS, 4 Low findings only — see _docs/03_implementation/reviews/cumulative_review_22-24.md. Tooling fix: scripts/run-tests.sh --unit-only path now restores before testing (was failing on SixLabors resolution in clean container). Stripped stray BOM from MapConfig.cs to satisfy the .editorconfig charset gate. Updates _dependencies_table.md to reflect all 27 03-code-quality- refactoring tasks done; updates _autodev_state.md to refactor phase 5 (test-sync). Co-authored-by: Cursor <cursoragent@cursor.com>
96 lines
5.3 KiB
Markdown
96 lines
5.3 KiB
Markdown
# Task Dependencies
|
|
|
|
## Dependency Graph
|
|
|
|
### Step 6 — Implement Tests (AZ-285..AZ-290)
|
|
|
|
| Task | Depends On | Points | Status |
|
|
|------|-----------|--------|--------|
|
|
| AZ-285 Test Infrastructure | — | 3 | Done |
|
|
| AZ-286 TileService Tests | AZ-285 | 3 | Done |
|
|
| AZ-287 RegionService Tests | AZ-285 | 3 | Done |
|
|
| AZ-288 RouteService Tests | AZ-285 | 3 | Done |
|
|
| AZ-289 Integration Route Maps | AZ-285 | 2 | Done |
|
|
| AZ-290 Non-Functional Tests | AZ-285 | 3 | Done |
|
|
|
|
### Step 8 — Refactor 02-coupling-refactoring (AZ-309 epic)
|
|
|
|
| Task | Depends On | Points | Status |
|
|
|------|-----------|--------|--------|
|
|
| AZ-310 ServeTile via ITileService | — | 3 | Done (In Testing) |
|
|
| AZ-311 GetTileByLatLon via ITileService | AZ-310 | 2 | Done (In Testing) |
|
|
| AZ-312 Split Services into 3 csprojs | AZ-311 | 5 | Done (In Testing) |
|
|
| AZ-313 Update consumers (Api/Tests) | AZ-312 | 3 | Done (In Testing) |
|
|
| AZ-314 DI registration split | AZ-313 | 2 | Done (In Testing) |
|
|
| AZ-315 Documentation sync | AZ-314 | 2 | In Progress |
|
|
|
|
### Step 8 — Refactor 03-code-quality-refactoring (AZ-350 epic)
|
|
|
|
Roadmap: `_docs/04_refactoring/03-code-quality-refactoring/analysis/refactoring_roadmap.md` (4 execution phases).
|
|
|
|
| Task | C-ID | Title | Phase | Depends On | Points | Status |
|
|
|------|------|-------|-------|-----------|--------|--------|
|
|
| AZ-351 | C01 | Fix null logger to DatabaseMigrator | 1 | — | 2 | Done (In Testing) |
|
|
| AZ-352 | C02 | Replace empty catch in ExtractTileCoordinatesFromFilename | 1 | — | 2 | Done (In Testing) |
|
|
| AZ-363 | C10 | Delete write-only counters in RegionRequestQueue | 1 | — | 1 | Done (In Testing) |
|
|
| AZ-356 | C05 | Stub endpoints return 501 | 1 | — | 2 | Done (In Testing) |
|
|
| AZ-354 | C04 | Strict CORS by default | 1 | — | 2 | Done (In Testing) |
|
|
| AZ-353 | C03 | Sanitize 5xx responses via IExceptionHandler | 1 | — | 3 | Done (In Testing) |
|
|
| AZ-359 | C07 | Consolidate RegionService catch ladder | 2 | — | 3 | Done (In Testing) |
|
|
| AZ-357 | C06 | Drop tile Version concept; new migration | 2 | — | 5 | Done (In Testing) |
|
|
| AZ-362 | C09 | Idempotent POST contract | 2 | AZ-353 | 3 | Done (In Testing) |
|
|
| AZ-366 | C13 | Consolidate Haversine + filename parser | 3 | — | 2 | Done (In Testing) |
|
|
| AZ-377 | C24 | Consolidate Earth constants + 111000 | 3 | AZ-371 | 2 | Done (In Testing) |
|
|
| AZ-368 | C15 | Shared TileCsvWriter | 3 | — | 2 | Done (In Testing) |
|
|
| AZ-367 | C14 | Shared TileGridStitcher | 3 | AZ-364 | 3 | Done (In Testing) |
|
|
| AZ-369 | C16 | Move inline DTOs out of Program.cs | 3 | — | 2 | Done (In Testing) |
|
|
| AZ-365 | C12 | Decompose RouteService.CreateRouteAsync | 3 | — | 5 | Done (In Testing) |
|
|
| AZ-364 | C11 | Decompose RouteProcessingService god-class | 3 | AZ-366, AZ-367 (folds in AZ-360) | 5 | Done (In Testing) |
|
|
| AZ-360 | C08 | Replace IServiceProvider in RouteProcessingService | 3 | AZ-364 (folded) | 2 | Done (In Testing) |
|
|
| AZ-371 | C18 | Magic numbers → ProcessingConfig/MapConfig | 4 | — | 3 | Done (In Testing) |
|
|
| AZ-370 | C17 | Status / point-type enums + AC RT2 update | 4 | — | 3 | Done (In Testing) |
|
|
| AZ-373 | C20 | Clarify / drop MapsVersion | 4 | AZ-357 | 2 | Done (In Testing) |
|
|
| AZ-374 | C21 | Typed HttpClient for Google Maps | 4 | — | 2 | Done (In Testing) |
|
|
| AZ-375 | C22 | O(N) existing-tile lookup (HashSet) | 4 | AZ-371 | 2 | Done (In Testing) |
|
|
| AZ-376 | C23 | Delete unused FindExistingTileAsync | 4 | — | 1 | Done (In Testing) |
|
|
| AZ-378 | C25 | Repo `_logger` fields: delete or use | 4 | — | 1 | Done (In Testing) |
|
|
| AZ-379 | C26 | Extract repo SELECT column-list constants | 4 | — | 2 | Done (In Testing) |
|
|
| AZ-380 | C27 | Delete CalculatePolygonDiagonalDistance | 4 | — | 1 | Done (In Testing) |
|
|
| AZ-372 | C19 | dotnet format + NetAnalyzers + Coverlet | 4 | — | 3 | Done (In Testing) |
|
|
|
|
## Execution Order
|
|
|
|
### Step 6
|
|
1. AZ-285 (test infrastructure — all others depend on this)
|
|
2. AZ-286, AZ-287, AZ-288 (unit tests — can run in parallel)
|
|
3. AZ-289 (integration tests — depends on infra only)
|
|
4. AZ-290 (non-functional tests — depends on infra only)
|
|
|
|
### Step 8 (02-coupling-refactoring)
|
|
1. AZ-310 → AZ-311 (Phase A: route tile endpoints through ITileService)
|
|
2. AZ-312 → AZ-313 → AZ-314 (Phase B: physical split + consumer + DI rewire)
|
|
3. AZ-315 (Phase C: docs sync, must be last)
|
|
|
|
### Step 8 (03-code-quality-refactoring)
|
|
Phase 1 (Critical fixes): AZ-351 → AZ-352 → AZ-363 → AZ-356 → AZ-354 → AZ-353
|
|
Phase 2 (Correctness): AZ-359 → AZ-357 → AZ-362 (AZ-362 needs AZ-353)
|
|
Phase 3 (Structural cleanup): AZ-366 → AZ-377 → AZ-368 → AZ-367 → AZ-369 → AZ-365 → AZ-364 (folds AZ-360) — AZ-377 needs AZ-371
|
|
Phase 4 (Typing/config/tooling/polish): AZ-371 → AZ-370 → AZ-373 → AZ-374 → AZ-375 → AZ-376 → AZ-378 → AZ-379 → AZ-380 → AZ-372
|
|
|
|
## Total Effort
|
|
|
|
Step 6: 6 tasks, 17 story points
|
|
Step 8 (02-coupling-refactoring): 6 tasks, 17 story points
|
|
Step 8 (03-code-quality-refactoring): 27 tasks, ~66 story points
|
|
|
|
## Coverage Verification
|
|
|
|
| Test Spec Category | Covered By |
|
|
|-------------------|------------|
|
|
| blackbox-tests.md (BT-01..BT-12, BT-N01..BT-N05) | AZ-286, AZ-287, AZ-288, AZ-289 |
|
|
| performance-tests.md (PT-01..PT-06) | AZ-290 |
|
|
| resilience-tests.md (RS-01..RS-06) | AZ-290 |
|
|
| security-tests.md (SEC-01..SEC-04) | AZ-290 |
|
|
| resource-limit-tests.md (RL-01..RL-04) | AZ-290 |
|
|
| traceability-matrix.md (100% AC coverage) | All tasks combined |
|