Import¶
Импорт данных из CSV файлов.
Возможности¶
- Загрузка CSV с предпросмотром
- Автоматическое определение кодировки (UTF-8, Windows-1251)
- Маппинг полей
- Upsert (обновление или создание)
- Импорт товаров по категориям
API¶
Загрузка и предпросмотр¶
POST /api/import/upload
Content-Type: multipart/form-data
file: products.csv
encoding: utf8 // или windows-1251
// Response
{
"fileId": "import-123456-products.csv",
"headers": ["Название", "Артикул", "Цена", "Остаток"],
"rowCount": 150,
"preview": [
{ "Название": "Товар 1", "Артикул": "SKU001", ... },
...
]
}
Выполнение импорта¶
POST /api/import/execute
{
"fileId": "import-123456-products.csv",
"categoryId": 5,
"updateExisting": true,
"mapping": {
"name": "Название",
"sku": "Артикул",
"salePrice": "Цена продажи",
"purchasePrice": "Закупочная цена",
"unit": "Ед.изм.",
"stock": "Остаток",
"parameters": {
"weight": "Вес",
"size": "Размер"
}
}
}
// Response
{
"total": 150,
"created": 120,
"updated": 25,
"skipped": 5,
"errors": [
{ "row": 45, "message": "Duplicate SKU" }
]
}
Отмена импорта¶
Получить шаблон¶
GET /api/import/template/:categoryId
// Response
{
"baseFields": [
{ "key": "name", "label": "Название", "required": true },
{ "key": "sku", "label": "Артикул", "required": false },
...
],
"parameters": [
{ "key": "weight", "label": "Вес", "type": "number", "unit": "кг" }
]
}
Формат CSV¶
- Разделитель:
;(точка с запятой) - Кодировка: UTF-8 или Windows-1251 (автоопределение)
- Первая строка: заголовки
Upsert логика¶
При updateExisting: true:
1. Ищем по SKU
2. Если не найдено — ищем по externalId
3. Если найдено — обновляем
4. Если не найдено — создаём