# Portability: UNIVERSAL
# Last validated: 2026-05-17
# Next review: 2027-05-17

ИМЯ ОБРАБОТЧИКА
============
db_sync - ProSync: Синхронизация многосистемных баз данных


ОПИСАНИЕ
============
ProSync синхронизирует базы данных BACH между несколькими системами.

Архитектура:
- Каждая система имеет локальную БД (~/.bach/bach.db)
- OneDrive служит транзитным узлом (.SYNC/bach_db_transit/).
- Синхронизация при запуске BACH (тянуть) и выходе (нажимать)
- 137 таблиц динамически распознаются и синхронизируются 

 Интеллектуальное слияние: таблицы со столбцами с отметками времени используют результаты последней записи.
с проверкой конфликтов через контрольный сигнал (5-минутное окно). Схема устойчива к дрейфу
посредством обнаружения общих столбцов и с именем INSERT. Секреты создаются из резервных копий
удален. Стратегия автоматической очистки: сохраняйте последние резервные копии на каждом хосте.
плюс все, что меньше X дней (по умолчанию: 7 дней, 10 на каждый хост).

ProSync не является обязательным. При установке одной системы синхронизация не требуется.
Конфигурация: bach setup prosync --multi-system / --single-system.


ОПЕРАЦИИ
===========
bach db backup
  Создал вручную резервную копию bach.db.
  Формат: bach_HOSTNAME_TIMESTAMP.bachdb (пример: bach_LAPTOP_2026-03-04T14-30-00.bachdb)
  Трегер: Локальный, а не удаленный запрос.

bach db sync
  Выполняет полную синхронизацию: Pull (более новые резервные копии) + Merge + Push (собственная резервная копия).
  Проверка конфликтов: если другие компьютеры активны (пульс < 5 минут), запрашивается подтверждение.
  Флаги: --auto или -y для неинтерактивного режима.
  Стратегия слияния: получение новых строк (метка времени) (ВСТАВКА ИЛИ ЗАМЕНА).

bach db status
  Показывает статус: локальная база данных, папка резервных копий, последние 10 резервных копий (хост, время, размер),
  активные компьютеры и их пульс.

bach db cleanup
  Удаляет старые резервные копии в соответствии с политикой хранения.
  Правило: оставляйте 10 новейших файлов на каждом хосте ИЛИ все, что моложе 7 дней (настраивается).
  Возвращает количество удаленных резервных копий.

bach db enable
  Включает автоматическую синхронизацию при запуске/выходе (устанавливает флаг конфигурации).

bach db disable
  Отключает автосинхронизацию.


ПРИМЕРЫ
=========
# Резервное копирование вручную перед рискованной операцией
bach db backup

# Синхронизация с проверкой конфликтов (интерактивная)
bach db sync

# Автоматическая синхронизация (задание cron/автоматизация)
bach db sync --auto

# Проверка состояния перед синхронизацией (показываются активные компьютеры и резервные копии)
bach db status

# Вручную запускать очистку устаревших резервных копий
bach db cleanup


ФАЙЛЫ
=======
Относительно система/:

hub/db_sync.py
  Основная реализация (DBSyncManager, DBSyncHandler).
  Динамическое распознавание таблиц: 137 синхронизируемых таблиц (вместо жестко запрограммированных).
  Схема защищена от дрейфа через общие столбцы + имя INSERT.

~/.bach/bach.db
  Локальная производственная база данных (основная БД, начиная с ProSync).

data/bach.db
  Резервная база данных OneDrive (больше не описывается напрямую, когда ProSync активен).

OneDrive/.SYNC/bach_db_transit/
  Транзитный концентратор для файлов .bachdb и heartbeat.json.
  Heartbeat: отслеживает активные компьютеры (имя хоста, PID, метка времени) для обнаружения конфликтов.

data/config/db_sync_enabled
  Флаг активации ProSync (созданный «bach setup prosync --multi-system»).


СМОТРИ ТАКЖЕ
==========
- docs/help/setup.txt: bach setup prosync (конфигурация)
- Hub/bach_paths.py: BACH_DB, PROSYNC_TRANSIT_DIR, LOCAL_BACH_DIR
- платформа basehandler/handler: интерфейс см. в base.py.
