62 lines
3.1 KiB
Text
62 lines
3.1 KiB
Text
@startuml dfd-telemetry
|
||
title Диаграмма потоков данных (DFD) подсистемы слежения (телеметрия)
|
||
|
||
skinparam shadowing false
|
||
skinparam defaultFontName Helvetica
|
||
skinparam rectangle {
|
||
BorderColor black
|
||
BackgroundColor #F5F5F5
|
||
}
|
||
skinparam usecase {
|
||
BorderColor #2C5AA0
|
||
BackgroundColor #E8F0FE
|
||
}
|
||
skinparam database {
|
||
BorderColor #6B6B6B
|
||
BackgroundColor #FFFFFF
|
||
}
|
||
|
||
' ── Внешние сущности ───────────────────────────────────────────────
|
||
rectangle "Стратосферный зонд\n(тестовый клиент)" as sat
|
||
rectangle "Оператор\n(браузер)" as op
|
||
|
||
' ── Процессы ──────────────────────────────────────────────────────
|
||
usecase "1.0\nПриём телеметрии\n(WebSocket onmessage)" as p1
|
||
usecase "2.0\nЗагрузка истории\n(REST fetchHistory)" as p2
|
||
usecase "3.0\nНормализация\nparseTelemetry" as p3
|
||
usecase "4.0\nОтрисовка на карте\n(MapLibre $effect)" as p4
|
||
usecase "5.0\nАнализ отклонений\ncomputeDeviations" as p5
|
||
|
||
' ── Хранилища данных ──────────────────────────────────────────────
|
||
database "D1 | БД телеметрии\n(Backend)" as d1
|
||
database "D2 | points[]\n(TelemetryStore, in-memory)" as d2
|
||
database "D3 | result\n(прогноз рабочей области)" as d3
|
||
|
||
' ── Потоки данных ─────────────────────────────────────────────────
|
||
sat --> p1 : пакет телеметрии\n(JSON: lat, lon, alt, ts)
|
||
p1 --> d1 : сохранение пакета
|
||
p1 --> d2 : TelemetryPoint\n(unix-сек → ISO 8601)
|
||
|
||
op --> p2 : UUID спутника
|
||
d1 --> p2 : RawTelemetryPacket[]\n(новые первыми)
|
||
p2 --> d2 : история (reverse → хронология)
|
||
|
||
d2 --> p3 : points[]
|
||
p3 --> p4 : Telemetry\n{flight_path[lat,lng,alt], launch}
|
||
p4 --> op : трек + маркеры + анимированный\nмаркер текущего положения
|
||
|
||
d2 --> p5 : фактические точки
|
||
d3 --> p5 : прогнозная траектория
|
||
p5 --> op : профиль высоты,\nгоризонтальное отклонение (Хаверсин),\nΔh, макс./текущее отклонение
|
||
|
||
' ── Текущие показатели (геттер latest) ────────────────────────────
|
||
d2 --> op : широта, долгота, высота,\nсчётчик пакетов
|
||
|
||
legend left
|
||
Нотация DFD (Йордан/ДеМарко):
|
||
▢ прямоугольник — внешняя сущность
|
||
◯ овал — процесс
|
||
▭ database — хранилище данных
|
||
→ — поток данных
|
||
endlegend
|
||
@enduml
|