BR 1.17 — Scripts (1c-import)

Статус: not_started

Контекст

Сейчас в импорт-скрипте scripts/1c-import/import-1c-orp-grouped.py 1С-код опции записывается в description как костыль:

description = '1c:00000005477 | Кофе Капучино  макси 300 гр.порц.'

После реализации BR 1.17 (новое поле modifier_options.sku_1c) — мигрировать на явное поле.

Задачи

1. Обновить генератор SQL

  • В import-1c-orp-grouped.py — секция формирования INSERT для modifier_options:
    • sku_1c = код 1С (без префикса 1c:)
    • description = оригинальное имя из 1С (для аудита), без префикса
  • Запустить локально, проверить вывод SQL

2. Бэкфилл существующих данных на test VPS (cifra2)

Однократный SQL-скрипт для миграции уже залитых данных cifra2:

BEGIN;
UPDATE modifier_options
SET
    sku_1c = SUBSTRING(description FROM '^1c:([^ |]+)'),
    description = REGEXP_REPLACE(description, '^1c:[^ |]+ \| ', '')
WHERE description LIKE '1c:%'
  AND modifier_group_id IN (
    SELECT id FROM modifier_groups
    WHERE franchise_id = 'c2f0a000-0000-0000-0000-000000000001'
  );
COMMIT;
 
-- Проверка:
SELECT name, sku_1c, description FROM modifier_options
WHERE modifier_group_id IN (
    SELECT id FROM modifier_groups WHERE franchise_id = 'c2f0a000-0000-0000-0000-000000000001'
);
  • Прогнать на test VPS через docker exec psql
  • Проверить что все 12 опций имеют sku_1c, description содержит только имя

3. Перегенерация cifra2 для верификации end-to-end

  • Запустить import-1c-orp-grouped.py на тех же 13 ОРП с обновлённой логикой
  • Применить SQL на test VPS (clean slate — скрипт идемпотентен, чистит данные по uuid-префиксу)
  • Через SQL убедиться что состояние БД идентично результату бэкфилла

4. Документация

  • Обновить комментарий в import-1c-orp-grouped.py — убрать упоминание костыля description, добавить про прямое использование sku_1c
  • Обновить спеку 1С Общепит — в секции «Импорт каталога» обновить описание

Зависимости

  • Catalog Service миграция должна быть применена на test VPS (031-br-1-17-modifier-options-sku-1c.xml)

Ссылки