WB API Loader
Небольшое Laravel-приложение для загрузки данных из тестового WB API в MySQL.
Что загружается
Команда wb:sync работает с четырьмя endpoint:
/api/sales/api/orders/api/incomes/api/stocks
Данные сохраняются в таблицы:
wb_saleswb_orderswb_incomeswb_stockswb_sync_logs
Записи сохраняются в отдельные SQL-колонки. Повторный запуск не создаёт дубли: для каждой записи формируется source_uid, по которому выполняется upsert.
Стек
- PHP 8.5
- Laravel 13
- MySQL 8
Настройка
Скопировать пример окружения:
cp .env.example .env
php artisan key:generate
Заполнить параметры API и БД:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_dev
DB_USERNAME=laravel
DB_PASSWORD=laravel
WB_API_BASE_URL=http://109.73.206.144:6969
WB_API_KEY=SECRET_KEY
WB_API_LIMIT=500
Создание базы
mysql < sql/reset_laravel_dev.sql
Скрипт пересоздаёт базу laravel_dev, создаёт пользователя laravel и таблицы проекта.
Запуск
Один endpoint:
php -d memory_limit=1024M artisan wb:sync --endpoint=stocks --stocks-date=2024-01-01
Период для sales/orders/incomes:
php -d memory_limit=1024M artisan wb:sync --endpoint=sales --from=2024-01-01 --to=2024-01-31
Полная загрузка периода:
./scripts/sync_monthly.sh 2024-01-01 2026-06-30
Скрипт загружает sales, orders, incomes по месяцам, затем запускает stocks от начальной даты периода.
Проверка данных
mysql -h 127.0.0.1 -u laravel -p laravel_dev < sql/check_counts.sql
Проверка примеров строк:
mysql -h 127.0.0.1 -u laravel -p laravel_dev < sql/show_samples.sql
Таблицы
wb_sales Основные поля: sale_date, sale_id, g_number, barcode, nm_id, for_pay, finished_price, price_with_disc, region_name.
wb_orders Основные поля: order_date, g_number, odid, warehouse_name, barcode, nm_id, oblast, total_price, discount_percent, is_cancel.
wb_incomes Основные поля: income_id, income_date, date_close, warehouse_name, supplier_article, barcode, nm_id, quantity, total_price.
wb_stocks Основные поля: stock_date, warehouse_name, barcode, nm_id, quantity, quantity_full, price, discount, sc_code.
wb_sync_logs — технический лог загрузки по endpoint и страницам.
Доступ к БД
Host: 185.254.190.37
Port: 3306
Database: laravel_dev
User: wb_reader
Password: tKod9ykc1pXXLb+v3YaPte5G/eHW2m0x