Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Data-Driven подход для упрощения кода

Data-Driven подход для упрощения кода

* Из-за ограничения по времени выступления количество информации ограничено
* Из-за сокращённого времени подготовки не все вопросы проработаны достаточно глубоко. Должны быть некоторые пересечения с презентацией Моделирование БД, которые никак не развиты

Avatar for Vasilii Gorokhov-Apelsinov

Vasilii Gorokhov-Apelsinov

August 16, 2025

Transcript

  1. Решаемая проблема и основная идея Проблема: Избыточность кода Решение: •

    Оставить один блок • Отличия вынести в параметры/аргументы/настроечную таблицу • Отдать код на поддержку ИИ 3
  2. Реальный пример: Мотивация СКБФ • 120 сотрудников • 10+ ролей

    • ежедневное обновление • ~ 20 млн. значений 4
  3. Структурыданных и техники Data- Driven подхода Доп. атрибуты логических сущностей

    Таблицы условий S2T-таблицы Метаданные (Каталог данных, пр…) DMN – универсальная модель для ветвлений DDT – тестирование 5
  4. Доп. атрибуты сущности «Роль» 6 Роль Уровень ответственности Приоритет Периодичность

    премирования Использовать КНовП … Детализировать ЧПД на новый и старый Функциональный руководитель КМ 1 3 Q … … … … … … … … Дивизионер 2 1 Q … Директор представительства 3 1 Q … Продавец-Директор представительства 3 2 M … Директор отдела продаж 4 1 Q … Консультант 5 3 M … Менеджер развития 5 3 M …
  5. Таблица условий (ограничений) Роль Показатель С даты По дату Заместитель

    коммерческого директора КНовП 01.01.2022 Директор представительства КНовП 01.01.2022 31.12.2023 Директор представительства КО 01.01.2023 7
  6. Метаданные Показатель Детализируется по старый/новый Считается на этапе Округлять до

    знаков после запятой Значение по умолчанию %ОтрабВр 1 6 Y 2 1 КНовП 1 4 1 КВП 1 4 КО 2 КПА 1 Оценка 1 Премия 3 2 ЧПД 1 ЭС 1 8
  7. DMN: Decision Model and Notation First Входы Выход Показатель Роль

    сотрудника Представительство coef_raw coef 0 КО * Саратов * 1.0 1 КНовП Консультант * <=0.5 0 2 КНовП МР * <=0.7 0 … … * … … n-2 КПА Директор [0.7, 0.8) 0.75 n-1 * <1 = coef_raw n * * 1 10
  8. Любая ли параметризация хороша? Возможность включать-выключать алгоритмы с какой-то (одной)

    даты Таблица «настроек» CREATE FUNCTION dbo.fn_get_mart_algorithm_validity_period( @algorithm_setting_key nvarchar(50) ) RETURNS TABLE … DECLARE @new_client_plan_by_consultant_start_dttm datetime, @new_client_plan_by_consultant_end_dttm datetime; SELECT @new_client_plan_by_consultant_start_dttm = start_dttm, @new_client_plan_by_consultant_end_dttm = end_dttm FROM dbo.fn_get_mart_algorithm_validity_period( 'new_client_plan_by_consultant‘ ); … WHERE date BETWEEN @new_client_plan_by_consultant_start_dttm AND @new_client_plan_by_consultant_end_dttm setting_key setting_value description exclude factor 17801РТС-Капитал не включаем в отчёты exclude invoice type -100поставки с указанным типом исключаем из отчёта (3 "Залог", -100 ничего не исключаем) 11
  9. Отличия между «плохим» и «хорошим» использованиями Bad Practice Good Practice

    «Конфигурация» • Техническая модель • Меняет ИТ-поддержка по запросу пользователей • Низкая вероятность изменений «Пользовательские данные» • Бизнес-модель • Пользователи понимают смысл и могут менять самостоятельно • Высокая вероятность изменений (Как правило) Отсутствие темпоральности (Как правило) Темпоральность Полная универсальность (поддержка любой комбинации параметров) Ограниченная универсальность 12
  10. 13 1 процедура, 4 тыс. строк + 10 настроечных таблиц

    Повторяющегося кода почти нет Упрощение отладки и доработок 3 процедуры, ∑ 12 тыс. строк Код слишком сложный даже для ИИ Обнаружено 4 бага Стало Было Результаты применения
  11. Возможные проблемы и альтернативные Data-Driven решения Динамические Статические “Compile time”

    “Runtime” Не меняет систему сборки и процесс разработки Возможно падение производительности Производительность не хуже, чем в обычном решении Усложнение системы сборки и процесса разработки 14
  12. Влияние на управление проектами Задача Время Обычное решение Разработка Тестирование

    Data-Driven решение Разработка Тестирование Активная разработка Тестирование Устранение дефектов Активная разработка Тестирование Устранение дефектов 15