Интеграция ibp: импорт данных и настройка модели
Общие принципы
- Интеграция реализована через загрузку CSV-файлов с фиксированными именами и структурой.
- Для каждого справочника/данных есть отдельная функция импорта, помеченная декоратором
@pq_script.
- Все функции импорта можно запускать как отдельные рутины или через универсальную функцию
import_master_data.
- Для чтения файлов используется функция
get_df, для записи — import_data и import_hierarchy_items.
Основные CSV-файлы-интерфейсы и функции импорта
1. Справочники и иерархии
| CSV-файл |
Функция импорта |
Описание |
| IMP_Unit.csv |
import_unit |
Единицы измерения (UOM) |
| IMP_Client.csv |
import_client |
Клиенты, уровни клиентской иерархии |
| IMP_Product.csv |
import_product |
Продукты, статусы, иерархия продуктов |
| IMP_ProductStatus.csv |
import_product_status |
Статусы продуктов |
| IMP_SalesPoint.csv |
import_product |
Торговые точки (используется внутри import_product) |
| IMP_ProductSalesPoint.csv |
import_product |
Связи продукт–торговая точка |
| IMP_ProductAnalogous.csv |
import_product |
Аналоги продуктов (опционально) |
| IMP_ProductUnitConversion.csv |
import_product |
Конвертации единиц для продуктов |
| IMP_Location.csv |
import_location |
Локации (склады, точки доставки) |
| IMP_Wh.csv |
import_wh |
Склады |
| IMP_TransportVehicleParam.csv |
import_transport |
Параметры транспорта (типы, вместимость) |
2. Матрицы и связи
| CSV-файл |
Функция импорта |
Описание |
| IMP_ProductLocation.csv |
import_product_location |
Связи продукт–локация |
| IMP_SalesToDemandMatrix.csv |
import_sales_to_demand_matrix |
Матрица соответствия продаж и спроса |
3. Исторические и плановые данные
| CSV-файл |
Функция импорта |
Описание |
| IMP_SalesHistory.csv |
import_sales_history_data |
История продаж (основной файл) |
| IMP_SalesHistorySkip.csv |
import_sales_history_skip |
История продаж (skip, для пропусков) |
| IMP_SalesHistoryCorrection.csv |
import_sales_history_correction |
Корректировки истории продаж |
| IMP_Stock.csv |
import_stock |
Остатки на складах |
| IMP_Prices.csv |
import_prices |
Цены |
4. Параметры для расчётов
| CSV-файл |
Функция импорта |
Описание |
| IMP_TargetStockParams.csv |
import_target_stock_params |
Параметры целевых запасов (уровень сервиса, ошибка прогноза и др.) |
| IMP_Supply.csv |
import_supply |
Параметры поставок |
Универсальный импорт данных и настройка модели (import_master_data)
Для интеграции и первичной загрузки всех необходимых справочников и параметров в ibp рекомендуется использовать универсальную функцию:
from planiqum.apps.ibp.scripts.integration import import_master_data
import_master_data(template_groups=None, demand=True, supply=True)
- import_master_data автоматически вызывает все основные функции импорта (справочники, параметры, связи, историю, цены, остатки и т.д.)
- Для полной сборки и настройки модели рекомендуется использовать специальный вариант этого скрипта — project
- Вариант project импортирует все справочники, параметры, связи и выполняет все необходимые действия для подготовки модели к расчетам
- Это best practice для начальной инициализации и интеграции ibp
Рекомендация по запуску
- Для быстрой и корректной интеграции используйте:
import_master_data(template_groups=None, demand=True, supply=True) # вариант project
- Такой запуск гарантирует, что все справочники, параметры и связи будут корректно загружены и синхронизированы
- Не требуется запускать отдельные функции импорта вручную — всё делается автоматически
Важные моменты
- Формат CSV: Разделитель —
;, десятичный разделитель — , (можно переопределить через read_options).
- Обработка wildcards: В некоторых файлах поддерживается символ
* для массового сопоставления (например, все продукты, все локации).
- Логирование: Все операции логируются, ошибки выводятся в лог и не блокируют остальные загрузки (кроме FileNotFoundError).
- Параметры: Для большинства функций можно передавать дополнительные параметры (например, дата-формат, опции чтения, фильтры).
Если нужно добавить примеры структуры конкретных CSV-файлов или описать процесс интеграции для внешних систем — уточните, что важно для вашей задачи!