Гроші не переїжджають без звіту про розбіжності
Грошові поля переносили з CRM у власну систему. Перевірка збігу до перемикання знайшла 13 тис. розбіжностей і ~1,4 млн змін, які тихо змінили б поведінку системи.
до
8 грошових полів у двох системах, розбіжності невідомі
після
звіт до перемикання, рішення по кожній групі розбіжностей
Salesforce PostgreSQL GraphQL
Контекст. Комісії й виплати учасникам платформи жили копією в CRM. Джерелом правди мала стати власна система. Звичайний шлях: переключити поля й виправляти скарги потім.
Що я зробив.
- Розбив міграцію на два кроки. Спочатку звіт про збіг даних лише на читання. Поля переключаються тільки після того, як власник бізнесу його затвердить.
- Звіт рахує не лише різницю в цифрах, а й наслідки: заміни «порожньо» на «0» вмикали автоматичні сценарії й змінювали доступні рівні програми.
- Зафіксував чітку семантику: «немає даних» і «нуль» означають різне, і система це розрізняє.
- Виніс окремі рішення для 13 тис. записів із різними відсотками комісії, рядків, що є лише в CRM, і ~1,4 млн змін в історії.
Результат. Усі розбіжності видно до того, як вони потрапили в продакшен. Рішення про них приймає бізнес, а не міграційний скрипт.