# Production storage

Gateway хранит control-plane данные в каталоге `.data` (или `ONEC_MCP_DATA_DIR`).

## Компоненты

- **JsonDocumentStore** — атомарная запись JSON (temp + rename) и in-process lock на путь файла.
- **StoreMigrationRunner** — версионирование схемы в `.data/store-meta.json`.
- **DataBackupManager** — snapshot всех `*.json` и `*.jsonl` в `.data/backups/<timestamp>/`.

## Bootstrap

При старте `server.ts` и `http.ts` вызывают `runDefaultStorageBootstrap(dataDir)`:

1. v1 — добавляет `tokenPrefix` legacy HTTP MCP tokens.
2. v2 — гарантирует структуру `identity.json`.

## Web Console API

| Method | Path | Описание |
|--------|------|----------|
| GET | `/api/system/storage-meta` | Текущая версия схемы |
| GET | `/api/system/backups` | Список backup |
| POST | `/api/system/backups` | Создать backup |
| POST | `/api/system/backups/:backupId/restore` | Восстановить из backup |

События backup/restore пишутся в audit log: `storage.backup.created`, `storage.backup.restored`.

## Рекомендации для production

- Укажите отдельный том или NFS для `ONEC_MCP_DATA_DIR`.
- Делайте backup перед миграциями и обновлениями gateway.
- Restore перезаписывает JSON/JSONL в data dir; каталог `backups/` не затрагивается.
