# Audion DevOps Tools

[English](README_EN.md) · [Руководство](USER_GUIDE_RU.md)

**Содержание**

- [Зачем это сделано](#зачем-это-сделано)
- [Принципы](#принципы)
- [Что внутри](#что-внутри)
- [Дальше](#дальше)
- [Техническая часть](#техническая-часть)
  - [Запуск](#запуск)
  - [Обслуживание](#обслуживание)
  - [Проверка](#проверка)
  - [Устройство](#устройство)
  - [Названия в рабочей области](#названия-в-рабочей-области)
  - [Основания в документации Microsoft](#основания-в-документации-microsoft)

Портативная оболочка для точных операций над Windows: подсистема Linux,
виртуализация, драйверы и железо, диски, сеть, ассоциации файлов, ключи и
сертификаты.

## Зачем это сделано

Есть класс задач, для которых нет хорошего инструмента. Не «ускорить Windows» и
не «вырезать лишнее» — а сделать одну точную вещь и знать, что именно ты сделал:
поставить дистрибутив Linux из файла, переключить машину между Hyper-V и сторонним
гипервизором, запретить обновлению подменять драйвер видеокарты, снять слепок
ассоциаций до и после установки программы, выгрузить сертификат вместе с
закрытым ключом.

Каждая такая операция делается разными средствами: где-то `wsl.exe`, где-то
`bcdedit`, где-то политика в реестре, где-то команды PowerShell. Все они
документированы, но разбросаны, и половина требует помнить, что откатить, если
пойдёт не так.

Программа собирает их в одном месте — с явными параметрами, метками риска,
копией перед изменением и живым журналом.

**Это не чистильщик системы и не сборник твиков.** Ассоциации не подделываются
обходом защиты Windows, ключи реестра не правятся напрямую там, где есть
документированный механизм. Программа оборачивает штатные средства
администрирования, а не воюет с системой.

## Принципы

**Оборачиваем документированное.** Подсистема Linux — через `wsl.exe`. Профили
Wi-Fi — через `netsh wlan`. Ассоциации — через механизм развёртывания и политику
для всей машины. Сертификаты — через средства PowerShell поверх системных
хранилищ. Хэши пользовательского выбора и защита от их подмены не обходятся
вручную.

**Копия до изменения.** Загрузчик, ассоциации, файл `hosts`, состояние сети,
хранилище драйверов — всё, что меняется, сначала снимается в `backup\`.

**Метка риска у каждой команды.** Мягкие тона кнопок различают щадящее, обычное
и сильное действие; опасное требует подтверждения. Парные сценарии — резерв и
восстановление, выгрузка и загрузка, запрет и снятие запрета — показаны рамками,
чтобы обратный ход был на виду.

**Интерфейс намеренно технический.** Кнопки короткие, подписи компактные, а
полный контекст — что именно произойдёт, чем рискуете, как откатить — раскрыт в
подсказке. Место экономится на подписи, а не на объяснении.

**Неподдерживаемая редакция — не цель.** Домашние выпуски Windows не гарантируют
работу групповых политик; программа показывает редакцию и по умолчанию запрещает
применение там, где оно не сработает.

**Ничего не тянется из соседних папок.** Все средства лежат внутри проекта.
Исторические папки читаются только для сравнения или восстановления — и только
по прямой просьбе.

## Что внутри

| раздел | о чём |
|---|---|
| Подсистема Linux | возможности и обновление, установка из сети и из файла, состояние, резерв, клонирование, перенос, удаление, регистрация дисков |
| Виртуализация | состояние и диагностика без изменений, режим Hyper-V или сторонних машин, совместимость, переключатели с копией загрузчика и предупреждением о перезагрузке |
| Сеть | диагностика, резерв и восстановление состояния, прокси, адаптеры, вход в общие папки, профили Wi-Fi, быстрые режимы |
| Узлы и Bitrix | подмена адреса на локальный, определение точки, состояние службы имён и портов, побитовое возвращение файла `hosts` из копии |
| Ассоциации | слепок и сверка умолчаний, защита политикой, встроенные приложения Microsoft — убрать, вернуть, держать удалёнными, запрет переустановки, отслеживание смены |
| Железо и драйверы | запрет драйверов из обновлений, ограничения для видеокарты, резерв хранилища драйверов, звук по HDMI и DisplayPort, опись дисков, среда восстановления, мастер SSD |
| Ключи | выгрузка и загрузка ключей SSH и сертификатов, сборка всех доступов в одну папку с описью, переезд на новую машину |
| Обслуживание | резерв памяти командных помощников, выгрузка документации, ярлыки, встроенный поиск по файлам |

## Дальше

* [Руководство](USER_GUIDE_RU.md) — работа по разделам, порядок действий для
  опасных подсистем.

---

## Техническая часть

### Запуск

```bat
launcher_gui.cmd
```

Обычный запуск поднимает всё окно от имени администратора — это нужно для
развёртывания, файла `hosts`, сетевых адаптеров, работы с дисками и настройки
подсистемы Linux.

Отдельные входы для одного раздела:

```bat
cli\launcher_wsl.cmd
cli\launcher_bitrix.cmd
cli\launcher_default_apps.cmd
cli\launcher_association_defense.cmd
cli\launcher_hardware.cmd
cli\launcher_docs_pdf.cmd
```

Они идут через тот же слой описаний и служб, что и окно, — поведение совпадает.

Только чтение, без запроса прав:

```bat
set AUDION_GUI_NO_ELEVATE=1
launcher_gui.cmd
```

### Обслуживание

```bat
init_folders.cmd                  создать недостающие рабочие папки
cleanup_project.cmd               деликатная очистка
cleanup_project.cmd /DRYRUN /Y    показать план, ничего не удаляя
```

Очистка оставляет скрипты, настройки, документацию, лицензии и сами папки.
Удаляет порождённое и скачанное: рантайм, склад пакетов, сборки, загрузки,
журналы, отчёты, содержимое рабочих папок и кэши.

### Проверка

```bat
runtime\python.exe -m py_compile system_core\ui_nicegui\app.py system_core\services\devops_tools.py system_core\core\jobs.py
runtime\python.exe system_core\ui_nicegui\app.py --smoke
runtime\python.exe system_core\doctor.py
```

### Устройство

```
config\tool_manifest.yaml      дерево команд, поля, метки риска
config\gui_settings.yaml       настройки окна при запуске
config\ui_colors.yaml          темы оформления
system_core\ui_nicegui\        окно
system_core\core\jobs.py       запуск операций, разбор вывода
system_core\services\          системные действия
system_core\cli_operation.py   запуск операции из командной строки
tools\                         средства проекта
backup\                        слепки и данные для отката
logs\                          журналы операций
```

**Граница ответственности.** Окно не содержит системной логики: оно собирает
параметры, показывает риск и подтверждение, вызывает операцию через слой
описаний и служб. Системные действия живут в службах, модулях и скриптах
проекта, а описания операций — в `tool_manifest.yaml`.

### Названия в рабочей области

Единый словарь для всех проектов Audion. Кнопки везде называются одинаково:
**Источник**, **Добавить файл…**, **Назначение**, **Сбросить**, **Удалить**,
**Список**. По-английски: **Source**, **Add file…**, **Target**, **Reset**,
**Delete**, **List**.

`Сбросить` возвращает проектные папки и файлов не трогает. `Удалить` очищает
текущие источник и назначение только после подтверждения. Слова «Цель»,
«Очистить», `Destination` и `Clear` для этих кнопок не используются.

### Основания в документации Microsoft

* [Политика умолчаний приложений](https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-applicationdefaults)
* [Ассоциации через развёртывание](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism-default-application-association-servicing-command-line-options?view=windows-11)
* [Профили Wi-Fi](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/netsh-wlan)
* [Команды подсистемы Linux](https://learn.microsoft.com/en-us/windows/wsl/basic-commands)

Выгрузки ключей SSH, сертификатов с закрытой частью и паролей Wi-Fi — сведения
чувствительные: полученные архивы хранятся как секреты.
