41 lines
1.6 KiB
Text
41 lines
1.6 KiB
Text
@startuml seq-prediction
|
|
title Запуск прогноза траектории
|
|
autonumber
|
|
|
|
actor "Пользователь" as user
|
|
participant "ControlPanel /\nWorkspacesPanel" as ui
|
|
participant "workspacesStore" as store
|
|
participant "predictionsApi" as predapi
|
|
participant "client.ts" as client
|
|
participant "Backend\n(Django)" as be
|
|
participant "parsePrediction\n(domain)" as parse
|
|
participant "WorkspaceRenderer\n(карта)" as render
|
|
|
|
user -> ui : «Выполнить прогнозирование»
|
|
ui -> store : run(workspaceId)
|
|
activate store
|
|
|
|
store -> predapi : run(params, launchDateTime)
|
|
activate predapi
|
|
predapi -> predapi : buildLaunchDateTime(date, time)\n→ ISO 8601 (UTC, Z)
|
|
predapi -> predapi : getLatestDataset()\n→ актуальный слот GFS
|
|
predapi -> client : post('/predictions/', payload)
|
|
client -> be : POST /api/predictions/\n{FlightParameters, launch_datetime, dataset}
|
|
be --> client : { result: PredictionStage[] }
|
|
client --> predapi : PredictionResponse
|
|
predapi --> store : RawPrediction
|
|
deactivate predapi
|
|
|
|
store -> parse : parsePrediction(stages)
|
|
parse --> store : Prediction\n{flight_path[lat,lng,alt], timestamps[], launch/burst/landing}
|
|
store -> store : setResult(workspaceId, prediction)
|
|
deactivate store
|
|
|
|
store -> render : реактивное обновление
|
|
render -> render : линия трека + маркеры\n(старт, разрыв, приземление)
|
|
|
|
alt ошибка сервера/сети
|
|
store -> store : lastRunError = message
|
|
store --> ui : toast «Ошибка прогнозирования»
|
|
end
|
|
@enduml
|