Files
Cursor Agent 4418e09211 docs: создание профессиональных README.md для 6 компонентов монорепозитория
- cooptypes: типы и интерфейсы экосистемы с подробной архитектурой
- sdk: TypeScript SDK с быстрым стартом и описанием классов
- notifications: библиотека уведомлений с таблицей 21 workflow
- contracts: смарт-контракты EOSIO с описанием чистой архитектуры
- migrator: утилита миграций с жизненным циклом
- docs: документация MkDocs Material с инструкцией по синхронизации

Co-authored-by: Alex Ant <dacom-dark-sun@users.noreply.github.com>
2026-02-25 18:30:06 +00:00

83 lines
5.0 KiB
Markdown

# 🔄 migrator
> Утилита миграции данных между версиями платформы «Цифровой Кооператив»
## Описание
`migrator` — система автоматических миграций для данных и смарт-контрактов платформы. Использует паттерн фабрики для динамической загрузки и последовательного выполнения миграционных скриптов. Отслеживает состояние миграций через JSON-файл и гарантирует применение только новых, ещё не выполненных миграций.
Поддерживает несколько окружений (`local`, `test`, `prod`) с раздельной конфигурацией через `.env` файлы.
## Возможности
- **Автоматическое отслеживание** — JSON-файл состояния хранит последнюю выполненную миграцию для каждого окружения
- **Инкрементальное применение** — выполняются только новые миграции, пропуская уже применённые
- **Паттерн Factory** — динамическая загрузка миграционных скриптов через `MigrationFactory`
- **Множество окружений** — раздельные `.env` файлы для `local`, `test` и `prod`
- **Утилиты** — вспомогательные функции для работы с черновиками документов, переводами и блокчейн-операциями
## Установка
```bash
pnpm install --filter migrator
```
## Скрипты
| Скрипт | Описание |
|--------|----------|
| `pnpm run local` | Запуск миграций для локального окружения |
| `pnpm run test` | Запуск миграций для тестового окружения |
| `pnpm run prod` | Запуск миграций для production-окружения |
> Все скрипты запускаются из корня монорепозитория через фильтр: `pnpm --filter migrator run <скрипт>`
## Конфигурация
Создайте `.env` файлы для каждого окружения в корне компонента:
- `local.env` — локальная разработка
- `test.env` — тестовое окружение
- `prod.env` — production
Основные переменные: endpoint блокчейна, приватные ключи для подписи транзакций. Подробности — в примерах `.env` файлов.
## Архитектура
```
├── migrations/ # Миграционные скрипты
│ ├── 043_edit_selected_draft.ts
│ ├── 044_create_drafts.ts
│ └── ... # Нумерованные по порядку
├── src/
│ ├── index.ts # Точка входа — загрузка .env и запуск
│ ├── migrator.ts # Основная логика: загрузка состояния, выполнение миграций
│ ├── factory.ts # Фабрика загрузки миграционных скриптов
│ ├── migration_interface.ts # Интерфейс миграции
│ ├── eos.ts # Утилиты для работы с блокчейном EOSIO
│ └── utils/ # Вспомогательные утилиты
│ ├── createDraft.ts # Создание черновиков документов
│ ├── editDraft.ts # Редактирование черновиков
│ ├── editTranslation.ts # Работа с переводами
│ └── dirname.ts # ESM-совместимый __dirname
└── migration_state.json # Состояние выполненных миграций (per-env)
```
### Жизненный цикл миграции
1. Загружается файл состояния `migration_state.json`
2. Определяется последняя выполненная миграция для текущего окружения
3. Из директории `migrations/` выбираются все скрипты после последней выполненной
4. Каждая миграция загружается через `MigrationFactory` и выполняется последовательно
5. После успешного выполнения состояние обновляется
## Тестирование
```bash
pnpm --filter migrator run test
```
## Лицензия
[BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru)