Commit Graph

62 Commits

Author SHA1 Message Date
Oleksandr Bezdieniezhnykh d1624e6d54 [AZ-AUTODEV] Step 6 (Implement Tests) complete; advance to Step 7
Final implementation report for the test step. All six test tasks
(AZ-285..AZ-290) completed across three batches. Code review verdicts:
all PASS_WITH_WARNINGS. Run-Tests handoff recorded for Step 7 per
implement skill Step 16.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-10 05:12:38 +03:00
Oleksandr Bezdieniezhnykh 7822841587 [AZ-289] [AZ-290] Batch 3 tests: integration ZIP cap, perf, security, queue
AZ-289 — RL-01 50MB ZIP cap added to RunRouteWithTilesZipTest;
existing integration tests already cover BT-08/BT-09 + AC-1/AC-2.

AZ-290:
- scripts/run-performance-tests.sh extended with PT-01/03/04/05
- SatelliteProvider.IntegrationTests/SecurityTests.cs (SEC-01..SEC-04),
  wired into Program.cs
- SatelliteProvider.Tests/RegionRequestQueueTests.cs covering RS-04 /
  RL-02 queue capacity behavior

Notes:
- RS-04 spec wording ("rejects overflow") drifts from the channel's
  BoundedChannelFullMode.Wait back-pressure semantics. Tests assert
  the actual behavior; spec to be reconciled in Step 12 (Test-Spec
  Sync). Tracked as Low/Spec-Gap in batch_03_review.md.
- Unit tests: 35/35 passed (Docker .NET 8 SDK).
- Integration test project builds clean (0 warnings, 0 errors).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-10 05:10:30 +03:00
Oleksandr Bezdieniezhnykh dea0b8b4c0 [AZ-286] [AZ-287] [AZ-288] Service-level unit tests (mocked deps)
Batch 2: 27 new tests, 31/31 total passing.

AZ-286 TileService (9 tests):
- BT-01 download stores tiles via repository
- BT-02 cache reuse passes existing tiles to downloader
- BT-02b stale-version cached tiles are NOT treated as still-valid
- BT-N02 GoogleMapsDownloaderV2 rejects zoom levels not in {15..19}
- GetTileAsync known/unknown id

AZ-287 RegionService (6 tests):
- AC-1 RequestRegionAsync inserts entity and queues request
- AC-2/AC-3 ProcessRegionAsync transitions queued→processing→completed
  and writes CSV + summary files
- AC-4 stitch path is set when stitchTiles=true
- ProcessRegionAsync handles RateLimitException by writing failed
  summary with the error message preserved
- GetRegionStatusAsync mapping
- Missing region id is logged and short-circuits without DB writes

AZ-288 RouteService (12 tests):
- AC-1 every consecutive pair is ≤200m apart on 2-point route
- AC-2 first/last user points keep their roles; middles are interpolated
- BT-10 10pt route → 1 start, 1 end, 8 action, plus intermediates
- BT-12 20pt route → 1 start, 1 end, 18 action
- AC-3 TotalDistanceMeters == Σ Haversine(point[i-1], point[i])
- BT-N03 < 2 points throws ArgumentException
- regionSize <100 / >10000 throws ArgumentException
- BT-N04 (0,0) corner throws
- BT-N05 inverted NW.lat <= SE.lat throws
- BT-11 valid geofence creates region requests + links them with
  isGeofence=true
- BT-07 GetRouteAsync returns route + points
- GetRouteAsync unknown id returns null

Code review: PASS_WITH_WARNINGS — 3 Low Spec-Gap findings:
  1. BT-N01 (invalid coords) deferred to AZ-289 integration tests
     (TileService doesn't validate coordinates — API-layer concern)
  2. Point-type label drift between blackbox-tests.md ("original")
     and code ("start"/"action"/"end")
  3. Region status drift: spec "pending" vs code "queued" — initial
     state on insert

Verification: docker dotnet test — 31/31 pass in 0.83s.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-10 05:02:00 +03:00
Oleksandr Bezdieniezhnykh 3d112c0f47 [AZ-285] Add batch 1 implementation report
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-10 04:56:11 +03:00
Oleksandr Bezdieniezhnykh 853b0a63df [AZ-285] Test infrastructure: scaffold unit test project + fixtures
- Add SatelliteProvider.DataAccess project reference to test csproj
  (enables mocking ITileRepository / IRegionRepository / IRouteRepository)
- Replace DummyTest placeholder with InfrastructureTests covering:
  * All mockable interfaces (ISatelliteDownloader, repos, queue, services)
    can be mocked via Moq
  * TileService can be constructed with mocked dependencies
  * Test coordinate fixtures load with expected values
- Add Fixtures/TestCoordinates.cs with REG-01..REG-03 + ROUTE-01/04/06
  shared test data
- Archive AZ-285 to _docs/02_tasks/done/
- Batch 1 review report: PASS_WITH_WARNINGS (Low/Spec-Gap deferred AC-2,
  Low/Maintainability pre-existing FluentAssertions 8.x license note)

Verification: docker dotnet test run — 4/4 tests pass in 2.35s.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-10 04:55:28 +03:00
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
Oleksandr Bezdieniezhnykh 25a644a9bf chore: sync .cursor from suite
ci/woodpecker/push/01-test Pipeline was successful
ci/woodpecker/push/02-build-push Pipeline was successful
2026-05-09 05:18:10 +03:00
Oleksandr Bezdieniezhnykh 9148a1def4 chore: sync .cursor from suite
ci/woodpecker/push/01-test Pipeline was successful
ci/woodpecker/push/02-build-push Pipeline was successful
2026-05-05 01:08:49 +03:00
Oleksandr Bezdieniezhnykh 191cdb80a6 chore: sync .cursor skills from suite
ci/woodpecker/push/01-test Pipeline was successful
ci/woodpecker/push/02-build-push Pipeline was successful
2026-05-03 17:43:27 +03:00
Oleksandr Bezdieniezhnykh 59244c1d24 chore: sync .cursor skills from suite
ci/woodpecker/push/01-test Pipeline was successful
ci/woodpecker/push/02-build-push Pipeline was successful
2026-04-29 17:03:57 +03:00
Oleksandr Bezdieniezhnykh 6dadb13198 chore: sync .cursor from suite
ci/woodpecker/push/01-test Pipeline was successful
ci/woodpecker/push/02-build-push Pipeline was successful
Made-with: Cursor
2026-04-25 19:45:03 +03:00
Oleksandr Bezdieniezhnykh ed84af8797 Remove obsolete Woodpecker CI configuration for ARM builds. This deletion streamlines the pipeline by eliminating unused build steps and settings related to ARM architecture, which are no longer necessary.
ci/woodpecker/push/01-test Pipeline was successful
ci/woodpecker/push/02-build-push Pipeline was successful
2026-04-25 06:53:03 +03:00
Oleksandr Bezdieniezhnykh fc10d5f120 Update Woodpecker CI configuration for Docker registry authentication
ci/woodpecker/manual/build-arm Pipeline was successful
Replaced HARBOR_USER and HARBOR_TOKEN with REGISTRY_USER and REGISTRY_TOKEN for improved clarity and consistency. Adjusted Docker login command and updated image tagging to reflect the new registry path under 'azaion'. This change enhances the pipeline's ability to authenticate and push images to the correct registry.
2026-04-21 20:37:38 +03:00
Oleksandr Bezdieniezhnykh c2bde44da0 [AZ-205] Authenticate to Harbor before pushing build images
Add HARBOR_USER/HARBOR_TOKEN from Woodpecker secrets and a docker login
step before the existing build/push, so pipelines can push to the new
TLS-authenticated Harbor registry.
2026-04-20 04:10:43 +03:00
Oleksandr Bezdieniezhnykh 950073d703 [AZ-204] OCI revision labels + AZAION_REVISION env
Made-with: Cursor
2026-04-20 03:58:47 +03:00
Oleksandr Bezdieniezhnykh 1baa649540 [AZ-203] Parameterize registry host via REGISTRY_HOST secret
Pipeline reads $REGISTRY_HOST from the Woodpecker global secret
'registry_host' instead of hardcoding 'localhost:5000'. The full
host:port lives in the secret, so Harbor migration (AZ-205) becomes
one secret edit rather than editing every submodule pipeline.

Made-with: Cursor
2026-04-20 03:49:21 +03:00
Oleksandr Bezdieniezhnykh 1334eba63c Sync .cursor from suite (autodev orchestrator + monorepo skills) 2026-04-18 22:04:27 +03:00
Oleksandr Bezdieniezhnykh 3418e1fcde Refine coding standards and testing guidelines
- Updated coding rule descriptions for clarity and emphasis on readability, meaningful comments, and test verification.
- Adjusted thresholds for test coverage on business logic from 80% to 75%, aligning with the canonical reference in `cursor-meta.mdc`.
- Enhanced guidelines for handling skipped tests, emphasizing the need for investigation and classification.
- Introduced completeness audit requirements for research decomposition to ensure thoroughness in addressing problem dimensions.
2026-04-17 20:28:37 +03:00
Oleksandr Bezdieniezhnykh 6ca317e830 Allow manual CI builds
ci/woodpecker/manual/build-arm Pipeline failed
Made-with: Cursor
2026-04-12 05:41:33 +03:00
Oleksandr Bezdieniezhnykh badc5fa862 Update Woodpecker CI configuration to trigger on push events 2026-04-12 05:10:44 +03:00
Oleksandr Bezdieniezhnykh 09117f90b5 Sync .cursor from detections 2026-04-12 05:05:11 +03:00
Oleksandr Bezdieniezhnykh fddf1b8706 CI: main tag without prefix
Made-with: Cursor
2026-04-12 04:12:07 +03:00
Oleksandr Bezdieniezhnykh 8229396426 Remove Woodpecker CI configuration file 2026-04-12 04:00:02 +03:00
Oleksandr Bezdieniezhnykh 1163612e85 update woodpecker add dev branch
Made-with: Cursor
2026-04-11 20:40:33 +03:00
Oleksandr Bezdieniezhnykh f9621e99e2 Refactor tile handling and enhance CORS settings 2026-04-09 13:27:59 +03:00
Oleksandr Bezdieniezhnykh f08058ea9c Add CORS configuration and tile handling improvements 2026-03-26 00:34:42 +02:00
Anton Martynenko 604f0e070d documentation 2025-11-20 12:41:07 +01:00
Anton Martynenko bf2030e3c6 improved zip file 2025-11-20 12:32:56 +01:00
Anton Martynenko bc7998eaf7 folders inside zip file 2025-11-20 12:28:27 +01:00
Anton Martynenko 05f6934ca6 tests cleanup 2025-11-20 12:23:26 +01:00
Anton Martynenko 661396554f zip file for tiles 2025-11-20 12:17:57 +01:00
Anton Martynenko 9048a7b3ec cleanup 2025-11-19 18:27:35 +01:00
Anton Martynenko 48ebad0609 less logs 2025-11-19 18:18:19 +01:00
Anton Martynenko eff7ca4dba better geo fences and points on the map 2025-11-19 17:59:52 +01:00
Anton Martynenko a148df1697 fix warnings 2025-11-19 17:40:12 +01:00
Anton Martynenko d122497b50 geo fences - wip 2025-11-19 17:26:23 +01:00
Anton Martynenko 5974b0c589 api /api/satellite/tiles/latlon 2025-11-19 13:12:26 +01:00
Anton Martynenko b66d3a0277 parallel processing for routes and regions 2025-11-19 13:01:30 +01:00
Anton Martynenko 7f33567632 change how tiles are stored 2025-11-19 12:17:27 +01:00
Anton Martynenko 7a32ed5110 more tests 2025-11-18 19:14:12 +01:00
Anton Martynenko f8798cd3d3 more complex route 2025-11-01 17:24:59 +01:00
Anton Martynenko 11395ec913 route stitching 2025-11-01 16:54:46 +01:00
Anton Martynenko 8714a4817d route in progress, region stitching is disabled by default 2025-11-01 15:55:41 +01:00
Anton Martynenko b532f1335e updated plan - routes 2025-11-01 15:32:52 +01:00
Anton Martynenko 96ab109277 add route description 2025-11-01 15:25:44 +01:00
Anton Martynenko f13f3eea6b improve retries 2025-10-29 15:07:20 +01:00
Anton Martynenko 250d13c62e add test for zoom 18 and 500x500 meters image 2025-10-29 14:54:33 +01:00
Anton Martynenko afd83ba8ae tiles are cached and reused properly 2025-10-29 14:42:54 +01:00
Anton Martynenko caa30e5017 tiels are cached and reused properly 2025-10-29 11:57:50 +01:00
Anton Martynenko 72eea71507 added stitching 2025-10-29 11:21:59 +01:00