- Dockerfile с PHP 8.3 и необходимыми расширениями
- Конфигурация БД через переменные окружения: DB_HOST, DB_PORT, DB_CHARSET
- .dockerignore для оптимизации сборки
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Backend:
- insertMultipleRows возвращает failedRows с данными и описанием ошибки
- getShortErrorMessage формирует понятные сообщения об ошибках
Frontend:
- Диалог с результатами импорта (успешных/ошибок)
- Группировка ошибок по типу
- Кнопка "Скачать ошибки CSV" - файл с проблемными строками + колонки _ОШИБКА и _СТРОКА
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
shell_exec некорректно работает с бинарными данными.
Теперь mysqldump пишет во временный файл, который потом стримится клиенту.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Кнопка "Бэкап" в toolbar открывает диалог выбора БД
- Можно скачать дамп одной БД или всех сразу
- Дамп создаётся через mysqldump и сразу стримится пользователю (gzip)
- Без сохранения на сервере
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Tabulator отправляет sort как массив [{"field":..., "dir":...}],
а код ожидал объект {"field":..., "dir":...}. Добавлена конвертация.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- В сообщениях об ошибках теперь отображается содержимое проблемной строки
- Добавлена специальная обработка ошибки Data truncated (обрезание данных)
- Показывается конкретное значение поля, вызвавшего ошибку
- Добавлена информация о типе и размере столбца при truncation
- Улучшено форматирование вывода ошибок (JSON для больших данных)
- Номер строки теперь соответствует номеру в исходном CSV файле (+2 для учета заголовка)
- Добавлен batch delete метод на бэкенде (удаление множества строк за один запрос)
- Использование WHERE IN для удаления нескольких строк одним SQL запросом
- Добавлен прогресс-бар при удалении большого количества строк
- Удаление 1000 строк теперь занимает секунды вместо минут
- Добавлена поддержка транзакций для атомарности операций
- Оптимизирован размер батчей для баланса производительности и надежности
- Удалено дублирование метода convertDateFormat в DataService.php
- Метод был объявлен дважды, что вызывало PHP Fatal Error
- Fatal Error приводил к выводу HTML вместо JSON, вызывая ошибку парсинга в Tabulator
- Исправлена ошибка "SyntaxError: The string did not match the expected pattern"
- Удалено детальное логирование каждой строки импорта в PHP (error_log в циклах)
- Убраны console.log при парсинге и обработке CSV на фронтенде
- Оставлено только логирование начала/конца импорта и ошибок
- Значительно улучшена производительность при импорте больших файлов (тысячи строк)
- Добавлена поддержка импорта CSV файлов с отсутствующими столбцами
- Для отсутствующих столбцов устанавливается NULL (если nullable) или значение по умолчанию
- Автоинкрементные поля корректно пропускаются, счетчик увеличивается автоматически
- Улучшена обработка NULL значений ("NULL", "null", "") - конвертируются в реальный NULL
- Добавлена валидация обязательных полей без значений по умолчанию