2.7 KiB
2.7 KiB
Архитектурный обзор 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иruntimehelpers. - Конфиг разделен на schema/codec/validation:
run_config_schema.pyrun_config_codec.pyrun_config_validation.pyrun_config_model.pyкак фасадный модуль.
- Storage разделен на подпакет
storage/npz/*:paths.pyserialize.pysnapshot_numpy.pystore.py
- SHM-декодирование разделено на
orchestration/shm/*:binary_cursor.pydecoder.pyring_reader.pyshm_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.