Commit Graph

74 Commits

Author SHA1 Message Date
emelianov 69f2d6ad4f ПУУД с постоянной ориентацией 2026-06-08 18:43:05 +03:00
emelianov b62a7cf8ef ПУУД 2026-06-04 13:22:48 +03:00
emelianov faedd21f43 расчет ПУУД 2026-06-04 09:39:27 +03:00
emelianov 78887dd63a fix requests 2026-06-01 14:22:36 +03:00
Дмитрий Соловьев e5fd2a4586 chore: ignore pcp tgu ops ui local artifacts 2026-06-01 12:10:23 +03:00
Дмитрий Соловьев 02e172479f Merge branch 'route-processing' into 'dev'
Новый сервис (веб-интерфейс) + рефакторинг

See merge request 2-6/2-6-4/missionis/observatio-terrae!1
2026-06-01 07:55:23 +00:00
Дмитрий Соловьев 34c988c2d0 Конфигурация как в dev 2026-06-01 10:27:05 +03:00
Дмитрий Соловьев bc3dd8f0b8 Конфигурация как в dev 2026-06-01 10:16:41 +03:00
Дмитрий Соловьев ed33c3c834 fix(config): align all infrastructure addresses with dev branch
Replace 192.168.1.8 (local dev machine) with addresses from dev branch:
- Test application.yaml files: kafka/postgres → 192.168.60.68, service URLs → localhost
- pcp-complex-mission main: local profile postgres host → localhost, dev profile → 192.168.100.160:35400
- config-repo/pcp-tgu-service.yaml: camunda grpc-address → camunda.k8s.265.nstart.local:30901
- CorsFilterComponent.kt: allowed origins → 192.168.60.68
- CoverageSchemeProperties.kt: service URLs → localhost
- KafkaProducerConfig.kt: bootstrap servers fallback → 192.168.100.160:19092

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 10:15:39 +03:00
Дмитрий Соловьев 0ec8c304b4 fix(config): restore parametric datasource URLs after merge from dev
Dev branch had changed datasource URLs to env vars (SPRING_DATASOURCE_URL etc.)
for k8s deployments, but route-processing uses parametric config-server URLs
for local development.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 09:54:23 +03:00
Дмитрий Соловьев 58d067c36f Merge branch 'dev' into route-processing
Conflict resolution:
- build.gradle.kts: dev version (keep nstart.cloud repo + jacoco/asm mavenCentral)
- settings.gradle.kts: project name from route-processing (observatio-terrae), rest from dev
- config addresses (application-local, pcp-mission-planing-service, pcp-dynamic-plan application.yaml): dev versions
- menu.html: merged both branches (TGU planning + bookings items)
- CatalogControllerTest.kt: merged both mocks (TguPlanningService + BallisticsService)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 09:19:29 +03:00
Дмитрий Соловьев da753b4ca9 fix(tgu-ops-ui): fix antimeridian wrapping for request and swath polygons on 2D map
Polygons crossing the antimeridian were rendered with a large visual jump.
Now each polygon is drawn three times (dx = 0, ±worldSize) after unwrapping
X-coordinates, with viewport culling to skip invisible copies.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 08:41:49 +03:00
Дмитрий Соловьев d7dda1e2f5 feat(tgu-ops-ui): add pass selector styles and update architecture docs
tgu-editor.css: add .map-pass-selector styles — floating panel with
semi-transparent background, range slider track, fill, tick marks, draggable
thumbs, and per-handle labels showing orbit number + UTC time.

docs: update PCP_ARCHITECTURE.md to reflect pcp-tgu-ops-ui is now a real SPA
(not a placeholder); add PCP_TGU_OPS_UI_CAPABILITY_MAP.md describing feature
areas and data sources for the TGU ops frontend.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 16:08:30 +03:00
Дмитрий Соловьев 6d1b8e7cde fix(tgu-ops-ui): fix track antimeridian wrap and polygon culling on 2D map
drawTracks: detect antimeridian crossing by comparing consecutive screen X
positions against worldSize/2; use moveTo instead of lineTo on large jumps
so tracks don't draw a horizontal line across the globe.

Tgu2DMapView: replace the heuristic lon-range check (> 300°) with an exact
condition — skip bbox culling when the canvas is wider than the world tile
(entire globe visible) or when topLeft.lon >= bottomRight.lon (viewport
straddles the antimeridian). Both cases previously produced a nonsensical
bbox that hid polygons near ±180°.

drawRequests: remove per-polygon screen-space culling; viewport filtering is
already handled upstream by visiblePolygons, so the redundant check was
incorrectly hiding requests at high zoom levels near canvas edges.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 16:08:20 +03:00
Дмитрий Соловьев 4ab765b0ee feat(tgu-ops-ui): display real ground track and swath from ballistics service
Replace synthetic orbit calculation (Kepler + spacecraft ID hash) with real
data from pcp-ballistics-service via a new proxy endpoint in pcp-ui-service.

Backend:
- TguPlanningController: add GET /api/tgu-planning/spacecraft/{noradId}/flight-line
  that proxies FlightLineDTO[] from BallisticsService for a given time interval

Frontend:
- Fetch FlightLineDTO[] (revolution, time, lat/long, swath boundaries) using
  the spacecraft's noradId for the current 24h map window
- Group points by real revolution number to build OrbitPassInfo[] with actual
  orbit numbers and UTC times instead of synthetic Kepler-based estimates
- Build ground track MapLines and swath MapPolygons from real coordinates;
  swath polygon = outer-left edge forward + outer-right edge reversed
- Enable swath layer in the editor map; draw with teal fill/stroke matching
  the track colour
- MapPassSelector now shows real revolution numbers in header and handle labels

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 16:05:41 +03:00
Дмитрий Соловьев 637a5e8848 feat(tgu-ops-ui): display plan works and new shoots on editor map
На вкладке Редактор 2D-карта теперь показывает включения выбранного плана
и новые съёмки, добавленные в текущей сессии.

- editorApi: типы PlanSurveyMode/PlanDropMode/PlanMode и fetchPlanModes —
  вызывает GET /api/current-plans/missions/{planId}/modes на pcp-mission-planing-service,
  где planId TGU совпадает с missionId (выяснено по Camunda-процессу)
- TguEditorTab: загружает включения при выборе плана, строит MapPolygon[]
  из SURVEY-режимов через parseWktPolygon(contourWkt), включён слой planWorks
- Tgu2DMapView: разделены pending-маркер (оранжевый, выбор точки)
  и confirmed-маркеры (бирюзовые, подтверждённые съёмки из драфта);
  клик на маркер съёмки открывает WorkInspector

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 09:18:53 +03:00
Дмитрий Соловьев 42708450bb feat(tgu-ops-ui): display request polygons on 2D map
Добавлен слой заявок (КНС) на 2D карту ТГУ:
- requestApi.ts — загрузка заявок постранично через GET /v1/requests/map
  с прогресс-коллбэком; автоматически собирает все страницы
- wktParser.ts — парсинг WKT POLYGON/MULTIPOLYGON в массив координат
- drawRequests.ts — Canvas-рендеринг полигонов заявок
- Tgu2DMapLayers.ts — buildTgu2DMapScene строит MapPolygon[] из RequestMapItem[]
- Tgu2DMapTab.tsx — состояние requestsState, кнопка «Загрузить», фильтры по дате
- Tgu2DMapSidebar.tsx — панель слоя заявок: счётчик, ошибки, truncated-предупреждение
- requestTypes.ts — RequestMapItem, RequestMapPage модели
- Поддержка выбора заявки на карте (mapSelectionTypes, mapTypes)
- nginx.conf, vite.config.ts — проксирование /v1 на pcp-request-service в dev

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 23:28:58 +03:00
Дмитрий Соловьев bb84844674 refactor(pcp-request-service): rename REST endpoints and DTOs for clarity
- GET /v1/requests/with-geometry → /v1/requests/map
- GET /v1/requests/{id}/with-cells → /v1/requests/{id}/cells
- GET /v1/cells/with-requests → /v1/cells/priority-map
- CreateRequestRequestDto → CreateRequestDto
- ListRequestsQueryDto → RequestListFilter
- RequestWithGeometry* → RequestMap* (RequestMapItemDto, RequestMapPageDto)
- CellsWithRequestsResponseDto → CellPriorityMapResponseDto
- DeleteRequestStatusDto removed; status field removed from DeleteRequestResponseDto

Updated all consumers (pcp-complex-mission-service, pcp-ui-service, slots-service),
tests, and OpenAPI YAML.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 23:28:45 +03:00
Дмитрий Соловьев 3d508b6be9 Update TGU 2D map spacecraft visibility controls
Switch the 2D map sidebar from single-spacecraft selection to per-spacecraft visibility toggles, add a show-all action, and update map tab labels and styles for the all-spacecraft view.
2026-05-30 21:13:50 +03:00
Дмитрий Соловьев 39f108e496 Handle Ordinis outage in TGU service
Classify Ordinis classifier transport failures and empty responses as unavailable, keep stale platform cache when possible, and expose Prometheus metrics/alerting for the outage signal.
2026-05-30 21:04:57 +03:00
Дмитрий Соловьев 82eddedc92 feat(tgu-ops-ui): OSM tiles, editor layout fixes, map resizer
Карта:
- Заменить схематичные контуры континентов на тайлы CartoDB Dark
  (dark_nolabels, CC BY 3.0, без API-ключа) через модульный кеш
  tileLoader.ts + отрисовщик drawTiles.ts на существующей Web Mercator
  проекции — без новых зависимостей
- Сохранить сетку lat/lon 30° поверх тайлов (полезна для орбитального
  анализа), убрать нарисованные контуры и градиент океана
- Обновить атрибуцию: © OpenStreetMap contributors · © CARTO

Вкладка Редактор — раскладка:
- Исправить цепочку высот: workspace переведён с display:grid на
  display:flex + flex-direction:column; layout получает flex:1 — единственный
  надёжный способ пробросить definite height через несколько вложенных
  grid-контейнеров в Chrome
- Обернуть условные notice/applyError в постоянный div.tgu-editor-notices,
  чтобы .tgu-editor-layout всегда был третьим flex-ребёнком (раньше при
  отсутствии уведомлений попадал во вторую auto-строку grid и схлопывался)

Вкладка Редактор — карта:
- Добавить перетаскиваемый разделитель между картой и таймлайном:
  mapRatio state (по умолчанию 50/50), drag-хендлер через document events,
  ограничение 15–80%, визуальный индикатор .tgu-editor-map-resizer
- Ограничить окно наземной трассы 24ч (720 точек, шаг 2 мин) независимо
  от зума таймлайна — при широком диапазоне (7 суток) шаг был 38 мин,
  трасса выглядела как хаотическая сетка через весь глобус

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 16:30:53 +03:00
Дмитрий Соловьев f084775cbb feat(tgu-ops-ui): add spacecraft work editor tab
Port the TGU editor prototype into pcp-tgu-ops-ui as a new editor tab, add draft/conflict/pass logic with tests, extend the 2D map picking API, and include editor styles/theme aliases and task/prototype docs.

Validation: npm run test; npm run build in services/pcp-tgu-ops-ui.
2026-05-30 15:28:34 +03:00
Дмитрий Соловьев c3a1a8b4a1 Add PCP architecture docs and TGU ops updates
Capture current PCP architecture notes, service-map prototypes, TGU operations UI/map work, local configuration updates, database helper scripts, and request/sample JSON artifacts.
2026-05-30 14:18:19 +03:00
Дмитрий Соловьев 9fca4d4051 pcp-tgu интерфейс 2026-05-29 16:09:36 +03:00
emelianov 24af140213 БД для stations dev 2026-05-29 15:47:49 +03:00
emelianov 651c85d64c БД для requests dev 2026-05-29 15:24:58 +03:00
emelianov 723ceead32 БД для requests dev 2026-05-29 15:18:57 +03:00
Дмитрий Соловьев 913b3d7c9b pcp-tgu интерфейс 2026-05-29 15:18:21 +03:00
Дмитрий Соловьев 4556592e63 pcp-tgu интерфейс 2026-05-29 15:15:02 +03:00
emelianov eff24a254d БД для requests dev 2026-05-29 14:55:29 +03:00
emelianov 366ed8f451 БД для slots dev 2026-05-29 14:50:27 +03:00
emelianov 2d100fdd54 БД для complex-missions dev 2026-05-29 14:45:24 +03:00
emelianov 41c3539b17 БД для ballistics dev 2026-05-29 14:30:03 +03:00
emelianov a6f179550c БД для ballistics dev 2026-05-29 14:07:15 +03:00
Дмитрий Соловьев e7c2060e2e pcp-tgu 2026-05-29 13:35:32 +03:00
emelianov 3fd702ca47 Задание НУ из ui 2026-05-29 12:41:32 +03:00
emelianov d693bf799d Задание НУ из ui 2026-05-29 10:52:36 +03:00
emelianov 7dfa1163e9 Расчет средних ЗРВ 2026-05-28 16:47:43 +03:00
emelianov 2c65f412cf Расчет средних ЗРВ 2026-05-28 13:49:35 +03:00
emelianov 6e62a0bd19 -sonar 2026-05-27 17:55:03 +03:00
emelianov 7dc786362c -sonar 2026-05-27 17:09:47 +03:00
emelianov 5c3f145267 -sonar 2026-05-27 15:58:30 +03:00
emelianov b4dda51460 -sonar 2026-05-27 15:52:14 +03:00
emelianov c7f3a77ff1 анализ TLE 2026-05-27 15:34:34 +03:00
emelianov c95d5239ec анализ TLE 2026-05-27 15:33:12 +03:00
emelianov bfb9d5b01f анализ TLE 2026-05-27 15:30:24 +03:00
emelianov a7e950a131 сравнение TLE 2026-05-27 13:03:31 +03:00
emelianov da1217cbe8 сравнение TLE 2026-05-27 12:53:07 +03:00
emelianov db9e995d46 сравнение TLE 2026-05-27 12:50:37 +03:00
emelianov b846317f47 сравнение TLE 2026-05-27 12:45:26 +03:00