Files
radar_system/python_app/docs/architecture_overview.md
T
2026-03-05 14:42:33 +03:00

47 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Архитектурный обзор Python-части
## 1. Верхнеуровневая схема
Python-часть разделена на следующие пакеты:
- `gui`: desktop UI на PyQt6 + pyqtgraph.
- `models`: dataclass-модели runtime-конфига и датасетов.
- `orchestration`: управление runtime-конфигом, процессами и SHM-ридерами.
- `storage`: persistent storage для calibration/reference и runtime snapshots.
- `hardware_full`: Python-обертки над LibreVNA и switch drivers.
- `workflows`: сценарии калибровки/референса/последовательного захвата.
- `scripts`: эксплуатационные и отладочные скрипты.
## 2. Ключевые архитектурные решения
- GUI оставлен единой точкой входа (`AppWindow`), но тяжелая логика вынесена в `sections`, `plotting` и `runtime` helpers.
- Конфиг разделен на schema/codec/validation:
- `run_config_schema.py`
- `run_config_codec.py`
- `run_config_validation.py`
- `run_config_model.py` как фасадный модуль.
- Storage разделен на подпакет `storage/npz/*`:
- `paths.py`
- `serialize.py`
- `snapshot_numpy.py`
- `store.py`
- SHM-декодирование разделено на `orchestration/shm/*`:
- `binary_cursor.py`
- `decoder.py`
- `ring_reader.py`
- `shm_reader.py` как фасад.
- LibreVNA service переведен на backend-подход (`librevna_backends.py`) с orchestration-оберткой `librevna_service.py`.
## 3. Инварианты
- Формат `run_config.json` сохраняется совместимым с C++ pipeline.
- Форматы snapshot (`binary`, `numpy-directory-v1`) сохраняются.
- Сигнатуры ключевых пользовательских входов (`gui/main.py`, scripts) сохраняются.
- Данные в `python_app/data` и runtime-файлы в `python_app/runtime` не реорганизуются автоматически.
## 4. Основные зависимости
- GUI: `PyQt6`, `pyqtgraph`, `numpy`.
- Hardware: `libusb1` через драйвер в `hardware_full/librevna_driver`.
- Storage/processing tools: `numpy`, stdlib JSON/Path/mmap/subprocess.
## 5. Точки расширения
- Новые processing modes: через live-config + GUI section + C++ processor.
- Новые storage backends: реализовать `StoreApi`.
- Новые hardware adapters: добавить backend/driver и подключить в service/factory.