Surface YOLO preflight in Detection Lab
This commit is contained in:
@@ -636,6 +636,52 @@ Returns object-detection model capability descriptors.
|
||||
}
|
||||
```
|
||||
|
||||
### GET `/api/v1/detection/yolo/preflight`
|
||||
|
||||
Returns a canonical envelope with read-only configured-YOLO runtime preflight
|
||||
state. Optional query parameters:
|
||||
|
||||
- `tile_manifest_path`: existing raster tile manifest path to validate.
|
||||
- `check_model_load`: default `false`; when `true`, explicitly loads only the
|
||||
configured local model file for compatibility smoke. It never downloads
|
||||
weights and never runs inference.
|
||||
|
||||
Response data:
|
||||
|
||||
```json
|
||||
{
|
||||
"model_id": "yolo-configured",
|
||||
"model_path": null,
|
||||
"tile_manifest_path": null,
|
||||
"status": "not_configured",
|
||||
"message": "YOLO_MODEL_PATH is not set. GeoIntel will not download model weights automatically.",
|
||||
"checks": {
|
||||
"enabled": true,
|
||||
"dependencies_available": true,
|
||||
"model_path_set": false,
|
||||
"model_file_exists": null,
|
||||
"model_load_requested": false,
|
||||
"model_load_ok": null,
|
||||
"manifest_path_set": null,
|
||||
"manifest_valid": null,
|
||||
"tile_paths_exist": null,
|
||||
"tile_limit_ok": null
|
||||
},
|
||||
"runtime": {
|
||||
"dependencies_assumed": false,
|
||||
"model_directory": null,
|
||||
"yolo_config_dir": "/app/storage/ultralytics",
|
||||
"torch_version": "2.12.1",
|
||||
"ultralytics_version": "8.4.88",
|
||||
"cuda_available": false
|
||||
},
|
||||
"tile_count": 0,
|
||||
"max_tiles": 100,
|
||||
"will_download_models": false,
|
||||
"will_run_inference": false
|
||||
}
|
||||
```
|
||||
|
||||
### POST `/api/v1/detection/run`
|
||||
|
||||
Creates a detection job and detection analysis run. If the requested model is unavailable, the job and analysis run are marked `failed` with `DETECTION_MODEL_UNAVAILABLE` or `DETECTION_DEPENDENCY_UNAVAILABLE`.
|
||||
|
||||
@@ -8,6 +8,7 @@ Changed:
|
||||
- Hardened the AI image path after Tower validation showed `torch` imported but `ultralytics` failed on a missing OpenCV native library. The Dockerfiles now include the required OpenCV runtime shared libraries and YOLO dependency detection performs real imports instead of `find_spec` checks.
|
||||
- Added a writable `YOLO_CONFIG_DIR` default under application storage after Tower validation showed Ultralytics otherwise falls back to `/tmp` because root config is not writable in the container.
|
||||
- Added YOLO preflight runtime diagnostics so operators can see dependency assumption state, model directory, `YOLO_CONFIG_DIR`, installed `torch`/`ultralytics` package versions and CUDA availability without loading a model, running inference or downloading weights.
|
||||
- Added a read-only `GET /api/v1/detection/yolo/preflight` endpoint and Detection Lab YOLO runtime preflight panel so browser operators can inspect live AI runtime readiness without loading a model, running inference or downloading weights.
|
||||
- Updated `.env.example`, `backend/README.md`, `frontend/README.md`, `scripts/README.md`, `docs/AI_PIPELINES.md`, `docs/TODO.md` and `CHANGELOG.md`.
|
||||
- Added regression coverage in `backend/tests/test_sprint116_operational_gis_map_workflow.py`, `backend/tests/test_sprint8b_yolo_foundation.py` and `backend/tests/test_docker_runtime_config.py`.
|
||||
|
||||
@@ -54,6 +55,17 @@ Validation:
|
||||
- Deploy-time live migration smoke passed on Tower; PostGIS reported `3.6 USE_GEOS=1 USE_PROJ=1 USE_STATS=1` and Alembic head was `202606120900`.
|
||||
- Deploy-time browser runtime verification passed for `http://192.168.10.150:1202`, API proxy and icon.
|
||||
- Tower container check passed: remote checkout is `7a29e78`, `geointel` is healthy on `0.0.0.0:1202->80/tcp`, and `scripts/yolo_preflight.py --enabled --json` reports `dependencies_available=true`, `torch_version=2.12.1`, `ultralytics_version=8.4.88`, `cuda_available=false`, `yolo_config_dir=/app/storage/ultralytics`, `status=not_configured`, `will_download_models=false` and `will_run_inference=false`.
|
||||
- RED: `python -m pytest backend\tests\test_sprint13_yolo_preflight.py::test_yolo_preflight_api_returns_canonical_envelope backend\tests\test_sprint118_yolo_preflight_ui.py -q` failed before implementation because `/api/v1/detection/yolo/preflight` returned 404 and the Detection Lab did not surface a YOLO runtime preflight panel.
|
||||
- `python -m pytest backend\tests\test_sprint13_yolo_preflight.py::test_yolo_preflight_api_returns_canonical_envelope backend\tests\test_sprint118_yolo_preflight_ui.py -q` passed: 2 tests.
|
||||
- `cd frontend && npm run typecheck` passed after adding the preflight API client and Detection Lab panel.
|
||||
- `python -m pytest backend\tests\test_sprint13_yolo_preflight.py backend\tests\test_sprint118_yolo_preflight_ui.py backend\tests\test_sprint48_api_contract_audit.py -q` passed: 13 tests.
|
||||
- `python -m compileall backend/app` passed.
|
||||
- `cd backend && python -m pytest -q` passed: 371 tests.
|
||||
- `cd frontend && npm run build` passed.
|
||||
- `bash scripts/run_readiness_check.sh` passed: 371 backend tests plus frontend typecheck/build and API contract audit for 80 documented routes.
|
||||
- `cd backend && python -m alembic heads` passed: `202606120900 (head)`.
|
||||
- `cd backend && python -m alembic upgrade head --sql` passed.
|
||||
- `bash -n scripts/live_migration_smoke.sh` and `bash -n scripts/deploy_tower.sh` passed.
|
||||
|
||||
Limitations:
|
||||
- `GEOINTEL_INSTALL_AI=true` installs optional PyTorch/Ultralytics dependencies but still requires a user-provided local model file; GeoIntel does not download weights.
|
||||
|
||||
@@ -80,6 +80,7 @@ This file now starts with the current implementation status. Older preparation/b
|
||||
- [x] Add basemap policy notice and guided GIS query-to-QA/export workflow in the Map workspace.
|
||||
- [x] Add reusable latest-result mode for repeated Map QA/QC runs without duplicate derived artifacts.
|
||||
- [x] Add opt-in Docker/Unraid AI build/runtime path for local PyTorch/Ultralytics YOLO operation.
|
||||
- [x] Surface configured-YOLO runtime preflight status through the API and Detection Lab UI.
|
||||
- [x] Add one-click full GIS workflow action for query, derived dataset, QA/QC and export handoff.
|
||||
- [x] Add QA/QC workspace result hierarchy and filter density polish.
|
||||
- [x] Add Change Detection panel hierarchy and analysis workspace density polish.
|
||||
|
||||
Reference in New Issue
Block a user