Files
Oleksandr Bezdieniezhnykh b0fffa6d42 [AZ-284] Autodev baseline + testability refactor
Phase A baseline outputs from /autodev (Steps 1-5):
- Problem & solution docs (_docs/00_problem, _docs/01_solution)
- Codebase documentation (_docs/02_document) incl. architecture,
  module-layout, glossary, system-flows, baseline compliance scan
- Test specs (blackbox, performance, resilience, security, resource,
  traceability matrix)
- Test task decomposition (_docs/02_tasks/todo): AZ-285..AZ-290
- Testability refactor (_docs/04_refactoring/01-testability-refactoring):
  - TC-01 Move DownloadedTileInfoV2 + new ExistingTileInfo to Common.DTO
  - TC-02 Replace dead ISatelliteDownloader API with real signatures
  - TC-03 GoogleMapsDownloaderV2 implements ISatelliteDownloader
  - TC-04 TileService depends on ISatelliteDownloader (mockable)
  - TC-05 DI + endpoints use ISatelliteDownloader
- Test runner scripts (scripts/run-tests.sh, run-performance-tests.sh)
- Autodev state pointer (_docs/_autodev_state.md)

Prepares the codebase for AZ-285..AZ-290 unit/integration test work.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-10 04:44:08 +03:00

41 lines
1.9 KiB
Markdown

# Restrictions
## Software Constraints
| Constraint | Value | Source |
|-----------|-------|--------|
| Runtime | .NET 8.0 (LTS) | global.json, Dockerfile |
| Database | PostgreSQL 16 | docker-compose.yml |
| Container runtime | Docker | Dockerfile, docker-compose.yml |
| Image processing | SixLabors.ImageSharp 3.1.11 | SatelliteProvider.Services.csproj |
| CI platform | Woodpecker CI | .woodpecker/*.yml |
| Target architecture | ARM64 (primary), AMD64 (prepared) | .woodpecker/02-build-push.yml |
## Operational Constraints
| Constraint | Value | Source |
|-----------|-------|--------|
| Deployment model | Single instance (no horizontal scaling) | In-process Channel queue, no distributed state |
| Max concurrent tile downloads | 4 (configurable) | ProcessingConfig |
| Max concurrent region processing | 20 (configurable) | ProcessingConfig |
| Queue capacity | 1000 requests | ProcessingConfig |
| Max ZIP archive size | 50 MB | RouteProcessingService |
| Tile versioning | Year-based integer (e.g., 2025) | Migration 004 |
## Environment Constraints
| Constraint | Value | Source |
|-----------|-------|--------|
| Storage | Local filesystem (./tiles, ./ready, ./logs) | docker-compose.yml volumes |
| Network | Outbound HTTPS to Google Maps required | GoogleMapsDownloaderV2 |
| Authentication | None (internal/trusted network only) | Program.cs (no auth middleware) |
| Database persistence | Docker volume (postgres_data) | docker-compose.yml |
## Dependencies on External Services
| Service | Criticality | Failure Impact |
|---------|-------------|----------------|
| Satellite imagery provider (provider-agnostic via `ISatelliteDownloader`; e.g., Google Maps) | High | No new tiles can be downloaded; cached tiles still served |
| PostgreSQL | Critical | Service cannot start; all state operations fail |
| File system | Critical | Cannot store tiles or produce output artifacts |