|
| 1 | +<p align="center"> |
| 2 | + <img src="NICVDE.svg" width="200"/> |
| 3 | +</p> |
| 4 | + |
| 5 | +# Volkov Data Ecosystem |
| 6 | + |
| 7 | +*[English](README.md) · [Čeština](README_cs.md) · [Русский](README_ru.md)* |
| 8 | + |
| 9 | +Кроссплатформенный двухпанельный файловый менеджер в стиле **Volkov Commander**, |
| 10 | +написанный на Python с использованием **prompt_toolkit**. Просматривает локальную |
| 11 | +файловую систему и умеет *заходить внутрь* контейнеров **NIC-MLA**, показывая |
| 12 | +каждую записанную запись как файл. |
| 13 | + |
| 14 | +> Статус: **1.2** — построено на **NIC-MLA v1.2**. Двухпанельный просмотр, |
| 15 | +> файловые операции, просмотрщик файлов и записей, а также MLA-бэкенд для |
| 16 | +> просмотра записей — с ограниченным редактированием самоописывающих таблиц |
| 17 | +> (это не универсальный редактор записей и не строго «только чтение»). MLA — |
| 18 | +> намеренно *глупый* контейнер, поэтому бэкенд опирается на эти таблицы: |
| 19 | +> **таблица схемы** декодирует каждый упакованный payload в реальные значения + |
| 20 | +> единицы, а **таблица станций** превращает 1-байтовый индекс станции из лога в |
| 21 | +> реальные регион/номер — и то и другое сразу попадает в экспорт CSV/SQL и то и |
| 22 | +> другое можно править на месте редактором таблиц по `F4`. |
| 23 | +> |
| 24 | +> Архитектура повторяет философию самого MLA — **глупые библиотеки + тонкий |
| 25 | +> клей**: внизу переиспользуемые библиотеки (`export` плюс встроенный MLA и его |
| 26 | +> ридер), а бэкенды над ними — лишь тонкие адаптеры. Весь `volkov_core/` не |
| 27 | +> зависит от GUI, поэтому пригоден и для использования без интерфейса. |
| 28 | +
|
| 29 | +## Запуск |
| 30 | + |
| 31 | +```bash |
| 32 | +pip install -r requirements.txt |
| 33 | +python3 volkov_data.py [левый_каталог] [правый_каталог] |
| 34 | +``` |
| 35 | + |
| 36 | +**Клавиши** |
| 37 | + |
| 38 | +| Клавиша | Действие | |
| 39 | +|---|---| |
| 40 | +| `Tab` | переключить панель | |
| 41 | +| `↑/↓ PgUp/PgDn Home/End` | перемещение курсора | |
| 42 | +| `Enter` | открыть каталог / войти в `.mla` / на уровень вверх (`..`) | |
| 43 | +| `F1` | сведения о выбранном элементе / записи | |
| 44 | +| `F2` | проверка контейнера `.mla` — число корректных / мёртвых / повреждённых слотов | |
| 45 | +| `F3` | просмотр содержимого файла или записи (текст/hex) | |
| 46 | +| `F4` | на записи: значения + единицы · на `..` в редактируемой `.mla`: редактор схемы/станций | |
| 47 | +| `F5` | копировать выбранный файл на другую панель | |
| 48 | +| `F6` | переименовать или переместить — внутри `.mla` экспорт всех записей в CSV | |
| 49 | +| `F7` | создать каталог | |
| 50 | +| `F8` | удалить (с подтверждением) | |
| 51 | +| `F9` | выпадающее меню (сортировка, язык, экспорт в SQL, …) | |
| 52 | +| `F10` / `q` / `Ctrl-Q` | выход · `Esc` закрывает любое всплывающее окно | |
| 53 | + |
| 54 | +Нажмите `Enter` на `samples/weather.mla`, чтобы войти внутрь и просмотреть его записи. |
| 55 | + |
| 56 | +## Тесты |
| 57 | + |
| 58 | +Логика в `volkov_core/` не зависит от GUI, поэтому покрыта набором тестов на |
| 59 | +стандартной библиотеке `unittest` (без дополнительных зависимостей): |
| 60 | + |
| 61 | +```bash |
| 62 | +python3 -m unittest discover -s tests |
| 63 | +``` |
| 64 | + |
| 65 | +Тесты создают временные MLA-контейнеры на лету, а также проверяют приложенный |
| 66 | +образец `samples/weather.mla`. |
| 67 | + |
| 68 | +## Структура |
| 69 | + |
| 70 | +``` |
| 71 | +volkov_data.py GUI на prompt_toolkit (тонкая оболочка над volkov_core) |
| 72 | +volkov_core/ логика без GUI — пригодна для самостоятельного использования |
| 73 | + backend.py абстракция бэкенда хранилища (VdeEntry / VdeBackend) |
| 74 | + local.py VdeLocalBackend — файловая система хоста |
| 75 | + mla.py VdeMlaBackend — тонкий адаптер: записи как «файлы», |
| 76 | + декодирование по схеме + разбор станции + экспорт |
| 77 | + export.py глупая библиотека — обобщённые строки → CSV / SQLite |
| 78 | + stations.py клей — индекс станции → реальные регион/номер |
| 79 | +samples/make_sample.py генератор самоописывающего образца метеостанции |
| 80 | +samples/weather.mla приложенный образец (упакованные строки + схема + станции) |
| 81 | +tests/ набор тестов unittest для volkov_core (без GUI) |
| 82 | +third_party/nic_mla/ встроенный NIC-MLA (Python reference) — канонический формат данных |
| 83 | +third_party/nic_dmd/ встроенный NIC-DMD — декодирует сжатые (keyframe/delta) записи |
| 84 | + tools/mla_schema.py host-only сборщики и ридеры схемы/станций (VDE их линкует) |
| 85 | +``` |
| 86 | + |
| 87 | +Приложение читает формат логгера через эталонную Python-реализацию MLA |
| 88 | +(`third_party/nic_mla/nic_mla.py`) и декодирует payload-ы и станции через |
| 89 | +host-only ридер (`tools/mla_schema.py`), оба поддерживаются побайтово |
| 90 | +идентичными ядру на C. Исходники Volkov Commander служат **только образцом |
| 91 | +поведения** — это не портированный код. |
| 92 | + |
| 93 | +--- |
| 94 | + |
| 95 | +## Лицензия |
| 96 | + |
| 97 | +Лицензия MIT — Авторское право (c) 2026 NIC — Native Intellect Community |
| 98 | + |
| 99 | +--- |
| 100 | + |
| 101 | +## Благодарности |
| 102 | + |
| 103 | +Брату за советы при создании этого проекта. |
| 104 | +За техническую помощь при оптимизации кода помощникам ИИ Claude (Anthropic) и Gemini (Google). |
| 105 | + |
| 106 | +★ Viva La Resistánce ★ |
0 commit comments