docs: require verified migration before production release
CI / test (pull_request) Successful in 9m26s
CI / Fingerprint diagnostics (production deployment temporarily disabled) (pull_request) Has been skipped

This commit is contained in:
codex committed 2026-10-08 19:49:52 +03:00
1 parent 33f5a61865
commit 2484bad0fa
2 files changed
+19

No files matched your search

+2
View File
@@ -2,6 +2,8 @@
## 0.16.5
- Закреплён обязательный перенос недостающих данных перед будущим production-выпуском: резервная копия, предварительная сверка, сохранение заполненных значений, отдельная обработка конфликтов и проверка полноты до обновления приложения.
- Источники публикаций названы «Данные ВШЭ» и «ЛК сотрудника ВШЭ» на странице совета и в XLSX. Счётчик личного кабинета не включает записи, полученные только из выгрузки ВШЭ.
- Из выгрузки ВШЭ удалены 797 строк, однозначно найденных у всех указанных авторов в локальной БД workers; метаданные сохранены в 1226 существующих записях, резервные копии созданы. Неоднозначные совпадения и неполные связи авторов оставлены.
+17
View File
@@ -214,6 +214,23 @@ HTTP-запросах. В интерфейсе и XLSX используются
При сверке 08.10.2026 с локальной БД workers из исходной выгрузки удалены 797 строк, однозначно найденных у всех указанных авторов. Их метаданные перенесены в `raw_data.csv_enrichment` 1226 существующих публикаций; парсер сохраняет это обогащение при обновлении записи. Выгрузка теперь содержит 1000 строк и 776 ФИО. Резервные копии исходной выгрузки, JSON и записей БД сохранены в `.impeccable/review/hse-source-backup/` и `.impeccable/review/workers-enrichment-backup.json` (не публикуются в Git). Строки с конфликтами или неполными связями авторов сохранены. Для другого экземпляра БД перенос метаданных из исходной выгрузки необходимо выполнить до использования сокращённого файла: сам Git-коммит данные БД не переносит.
### Обязательный перенос данных перед выпуском в production
Production пока остаётся на текущей стабильной версии; локальная БД может продолжать обогащаться. Перед будущим обновлением production до версии из этого PR **обязательно перенести недостающие данные из локальной БД, актуальной на момент выпуска**. Наличие самой публикации в production не заменяет перенос её метаданных, включая квартильные сведения в `raw_data.csv_enrichment`. Обновление Git эти данные не переносит. Полная замена production-БД локальной копией недопустима.
Порядок выпуска:
1. Зафиксировать актуальный снимок локальных данных и создать проверенную резервную копию production с возможностью восстановления. Сверку и перенос проводить с учётом параллельных изменений: перед записью повторно проверить значения назначения в транзакции.
2. Выполнить предварительное сравнение без записи. Сотрудников сопоставлять по устойчивому идентификатору профиля; публикации — внутри соответствующего сотрудника по идентификатору источника или нормализованному DOI. Сопоставление по названию и году разрешено только при однозначном совпадении без конфликтующих идентификаторов. Одного совпадения ФИО недостаточно. Сформировать перечни новых записей, недостающих значений и конфликтов.
3. Добавлять только отсутствующие записи и значения полей. Заполненные значения production не перезаписывать и не удалять. В JSON-объектах добавлять недостающие ключи, включая вложенные ключи `raw_data.csv_enrichment`, сохраняя остальные данные. Не заменять целиком заполненные JSON-объекты или массивы локальными значениями.
4. Считать отсутствующим значением SQL `NULL`, отсутствующий JSON-ключ или JSON `null`; для текстовых полей также пустую строку либо строку только из пробельных символов. Числа `0`, логическое `false`, пустые массивы `[]` и объекты `{}` не считать отсутствующими значениями. В существующем объекте `{}` можно добавлять недостающие ключи без замены самого объекта. Некорректное заполненное значение — конфликт для отдельной проверки, а не разрешение на автоматическую перезапись.
5. Неоднозначные совпадения и различия заполненных значений фиксировать в отдельном отчёте и рассматривать вручную. Повторный перенос того же снимка должен быть безопасным: не создавать дубли и не изменять уже перенесённые значения. Проверять уникальность связей публикации с сотрудником и повторять сопоставление перед добавлением записи.
6. После переноса сверить запланированные и фактически перенесённые записи и значения, проверить метаданные и показатели страницы/XLSX. Убедиться, что удалённые из справочника публикации доступны в production со всеми необходимыми данными и что счётчики не снизились из-за пропущенного переноса. Конфликты, мешающие подтвердить полноту переноса, разрешить до выпуска. **Обновлять приложение и использовать сокращённый справочник только после успешной проверки миграции.**
Миграция относится к будущему production-выпуску; в рамках исправления этого PR она не выполняется.
### Пересоздание справочника публикаций
После обновления выгрузки ВШЭ пересоздайте JSON до сборки/развёртывания сервиса:
```sh