Перечень известных ограничений (R-DOC-6)
Честные границы продукта на 17.09.2026. Каждая строка: ограничение → почему → подтверждение → что нужно, чтобы снять.
1. ТТХ парка и нагрузок
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
Числа бортов и камер берутся только из fleet.yaml и payloads.yaml; правка YAML без перезапуска сервиса может не подхватиться |
Единый машиночитаемый источник правды для planner/gateway |
docs/task5/10-hardware/fleet.yaml, payloads.yaml; загрузка в planner |
Hot-reload справочников + тест «изменение YAML меняет расчёт» |
| Часть параметров сенсоров оценочные (тепловизор 801, EO 801, Sony RX1RM2); Riebo без геометрии |
В первоисточниках нет полных матриц/фокусных |
10-hardware/05-payloads.md (../10-hardware/05-payloads.md), раздел «Допущения» |
Данные от производителя + бейдж «оценка» в UI и строка в отчёте валидатора |
| LiDAR и геофизика в выданном парке отсутствуют |
Матрица совместимости пуста для этих типов |
05-payloads.md (../10-hardware/05-payloads.md); canCarry / G5-01 |
Носители в каталоге + модель ширины захвата не-камерных типов |
2. Воздушное пространство
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
| Зоны задаются статической геометрией сценария; нет NOTAM/СППИ |
ТЗ даёт полигоны на вход, не интеграцию с ЕС ОрВД |
30-domain/06-airspace-ru.md (../30-domain/06-airspace-ru.md); проверки G1-01…G1-04 |
Импорт зон из внешнего источника + дата актуальности |
| Порог 150 м AGL (ФП-138) учтён как предупреждение G1-05, не как автоматический отказ API |
GSD может требовать > 150 м (PF1B, 3 см → ~153 м) |
validator/checks/g1_airspace.py (check_ivp_threshold); README task5 факт №9 |
Явная политика: блокировать vs предупреждать; согласование с заказчиком |
| Буфер от НФЗ и «разрешённое ВП» — геометрия без юридической валидации |
Сервис не юрист и не диспетчер |
G1-02, G1-04 |
Режим «только для планирования», не для подачи в СППИ |
3. Модель ветра
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
Учитываются постоянный вектор ветра, путевая скорость по треугольнику скоростей, wind_max борта |
Упрощение из доменной модели |
30-domain/05-energy-and-wind.md; G4-01…G4-03; planner/geometry/wind.py |
Порывы, сдвиг ветра по высоте, турбулентность |
| Нет температуры, плотности воздуха, влияния на тягу |
В ТТХ нет полной аэродинамики |
05-energy-and-wind.md |
Расширенная энергомодель по типу БВС |
| Посадка «против ветра» заложена концептуально, не как отдельный оптимизатор посадочной схемы |
Наследие требований Planner |
05-energy-and-wind.md § посадка |
Явные фазы захода на посадку в плане |
4. Модель энергии и вылетов
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
| Запас хода — аналитическая модель (время, резерв, оборот на ВПП), не телеметрия АКБ |
Нет данных реальных полётов |
G3-01…G3-03; planner нарезка sorties |
Калибровка по логам полётов |
Сверка energy_used_frac (G3-04) чувствительна к округлению sorties |
Строгая сверка долей энергии |
На s01 после выравнивания модели: validator check 17.09.2026 → допущен |
Регрессия на s07/s10 и краевые sorties |
endurance в fleet.yaml в минутах, в API — согласованные секунды; путаница единиц опасна |
Разные слои контракта |
fleet.yaml; API-CONTRACT |
Единый слой единиц в UI |
5. Оптимизация и «VRP»
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
| Назначение галсов — не полноценный multi-depot VRP |
Упрощение волны M1 |
balance_assign_transects для MAKESPAN и TOTAL_FLIGHT_TIME; MIP только для прочих Criterion |
OR-Tools VRP как в 30-domain/04-fleet-routing.md (../30-domain/04-fleet-routing.md) |
| Геометрия галсов (угол, нарезка, НФЗ) — отдельный этап pipeline, не «магия VRP» |
Декомпозиция CPP + assignment |
planner/pipeline.py; 92-code/05-python-core.md (../92-code/05-python-core.md) |
Документировать как фактическую архитектуру (R-DOC-2) |
Лимит времени решателя → solver_time_limit и неполный план |
time_limit_s в API |
UnassignedReason.SOLVER_TIME_LIMIT |
Увеличение лимита + индикация в UI |
Фронт в dev считает другим жадным решателем (@geoscan/domain) |
Исторический мок до API |
src/frontend/README.md § «мок»; domain/src/store.ts compute() |
Единый backend-only расчёт через POST /api/plans |
6. LiDAR, геофизика, ЛАФС
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
| Типы съёмки LiDAR/геофизика принимаются в схеме, борт не подбирается |
Нет носителя в парке |
R-IN-4 / R-X-4 в чеклисте; матрица в 05-payloads |
Носитель + формулы swath для не-камер |
| ЛАФС (линейная съёмка) в UI/ядре ориентированы на ПАФС-полигоны |
Приоритет хакатона — площадная съёмка |
02-survey-types.md (../30-domain/02-survey-types.md) |
Полноценный corridor planner |
7. Отказ борта и replan
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
В UI: локальный replan (replanWithout) — исключение борта из набора и пересчёт в браузере |
Мок до POST /api/plans/{id}/replan |
PlanScreen.tsx; store.ts replanWithout |
Реализация replan в gateway + planner |
| Нет учёта частично выполненных галсов с борта в полёте |
Нет телеметрии |
API-CONTRACT keep_completed? — контракт есть |
Состояние миссии с борта |
| Сценарии s09/s10 в таблице — ветки «отказ» для тестов, не продакшен-SLA |
Тестовый набор |
70-plan/02-test-scenarios.md (../70-plan/02-test-scenarios.md) |
E2E replan на стенде |
8. Масштабируемость и сценарии
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
Регрессия завязана на s01–s10 в src/backend/scenarios/ |
Validator-first метод |
uv run pytest -q --ignore=tests/integration (~196 тестов ядра); CLI s01 |
Нагрузочные тесты: N бортов, M км², время и память |
| s04-mixed-fleet: покрытие ~34 %, план формально допускается |
G6-01 — предупреждение, не блокер; много unassigned по endurance |
uv run python -m validator run --plans /tmp/plan-s04.json --scenario scenarios/s04-mixed-fleet.json → cover 0.340 |
Политика вердикта: fail при недоборе; доработка назначения смешанного парка |
| Время расчёта больших полигонов не гарантировано |
OR-Tools и нарезка зависят от числа галсов |
Нет SLA в коде |
Бенчмарки + time_limit_s в UI |
| Параллельные расчёты нескольких планов — ограничены очередью gateway |
QUEUE_FULL |
shared/src/errors/codes.ts |
Масштабирование planner, персистентная очередь |
9. Рельеф, карта и офлайн
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
В UI dev рельеф — аналитическая функция terrain.ts, не DEM |
Нет PMTiles в контуре |
src/frontend/README.md |
Офлайн DEM (см. docs/task5/TODO.md, MAP-08) |
| Подложка карты в dev — упрощённая; без интернета демо карты ограничено |
Закрытый контур хакатона |
92-code/03-map-and-3d.md (../92-code/03-map-and-3d.md) |
Вендорённые PMTiles в compose-образе |
| G2-04 (запас над рельефом) на бэкенде зависит от модели высот в сценарии |
Нет глобального DEM в ядре |
validator/checks/g2_altitude.py |
Единый DEM pipeline с фронтом |
10. Хранение, API и безопасность
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
| Планы в gateway могут храниться в памяти при наличии SQL-миграций |
Незавершённый пакет persistence |
93-review/00-checklist.md |
Postgres repository + тесты |
Идемпотентность Idempotency-Key — в схеме/SQL, не в коде plans |
Волна M1 |
93-review |
Реализация в gateway-data |
| Нет аутентификации; любой в tailnet/локально может считать планы |
Демо-контур |
Нет login в App.tsx; NFR-25 |
Auth + NetworkPolicy (см. 92-code/09-security.md) |
Часть маршрутов API из контракта ещё не в gateway (/api/scenarios, SSE, export, replan) |
Состояние 16.09 |
93-review R-DOC-4; API-CONTRACT |
Пакеты gateway-api, frontend-api |
docker compose up end-to-end не гарантирован с первого раза |
Зависимость от готовности Postgres, пути каталогов в образе |
02-quickstart.md § Docker; приёмка 96-acceptance/ |
Стабильный smoke + health gating |
11. Сверка с реальным полётом
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
| План не сравнивался с фактическими траекториями БВС Геоскан |
Нет лётных данных в репозитории |
Метод validator-first: геометрия + контрольные числа s01–s10 |
Пилотные полёты, PPK-треки |
| Экспорт KML/GeoJSON не проходил полный цикл загрузки в Planner на всех сценариях |
Ручная приёмка не завершена |
40-formats/01-kml-geojson.md (../40-formats/01-kml-geojson.md) приёмочный тест |
Чеклист импорта на стенде заказчика |
12. Документация и UI-валидатор
| Ограничение |
Почему |
Подтверждение |
Чтобы снять |
Отчёт на /validator в браузере — 24 проверки в другой группировке, не клон G1–G6 |
Два независимых счётчика (мок vs Python) |
domain/validation.ts vs validator/checks/g*.py |
Один источник: POST /api/validate |
npm run verify на фронте может расходиться с контрольным By @ GSD 3 см |
Регресс формулы в tools |
Вывод 16.09.2026 в quickstart |
Починить tools/verify или обновить эталон |
Документ дополняется по мере закрытия пунктов волны M1; не дублирует зафиксированные аудиты в docs/task5/93-review/.