47 lines
2.7 KiB
Markdown
47 lines
2.7 KiB
Markdown
# Архитектурный обзор 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.
|