Commit Graph

24 Commits

Author SHA1 Message Date
e03c0b2208 Добавлен Dockerfile на базе Alpine Linux
- Dockerfile с PHP 8.3 и необходимыми расширениями
- Конфигурация БД через переменные окружения: DB_HOST, DB_PORT, DB_CHARSET
- .dockerignore для оптимизации сборки

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 03:43:29 +03:00
cc75ba85e3 Добавлен экспорт неимпортированных строк в CSV при ошибках
Backend:
- insertMultipleRows возвращает failedRows с данными и описанием ошибки
- getShortErrorMessage формирует понятные сообщения об ошибках

Frontend:
- Диалог с результатами импорта (успешных/ошибок)
- Группировка ошибок по типу
- Кнопка "Скачать ошибки CSV" - файл с проблемными строками + колонки _ОШИБКА и _СТРОКА

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:39:06 +03:00
666a24c971 Исправлено подключение mysqldump - убраны --host/--port
mysqldump теперь использует Unix сокет по умолчанию вместо TCP.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:25:51 +03:00
978f6b3cd8 Исправлен битый архив бэкапа - использование временного файла
shell_exec некорректно работает с бинарными данными.
Теперь mysqldump пишет во временный файл, который потом стримится клиенту.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:24:11 +03:00
b76402694a Добавлен функционал резервного копирования баз данных
- Кнопка "Бэкап" в toolbar открывает диалог выбора БД
- Можно скачать дамп одной БД или всех сразу
- Дамп создаётся через mysqldump и сразу стримится пользователю (gzip)
- Без сохранения на сервере

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:20:32 +03:00
Mikhail Chusavitin
9ac52afb8b Удалена ошибочная ссылка на $logFile 2026-01-22 11:21:47 +03:00
Mikhail Chusavitin
fcfd785b04 Исправлена сортировка: обработка массива sort от Tabulator
Tabulator отправляет sort как массив [{"field":..., "dir":...}],
а код ожидал объект {"field":..., "dir":...}. Добавлена конвертация.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 11:18:16 +03:00
Mikhail Chusavitin
d5602ae398 Логирование в файл debug.log 2026-01-22 11:17:06 +03:00
Mikhail Chusavitin
1d4bb980c0 Добавлено логирование сортировки для отладки 2026-01-22 11:14:46 +03:00
Mikhail Chusavitin
cce71a095c SQL comments for rows used now in tolltips 2026-01-21 18:52:17 +03:00
Mikhail Chusavitin
2f7a180543 add dropdown menu for FK values 2026-01-21 18:32:53 +03:00
Mikhail Chusavitin
f93bfebd5a updatetable with logs 2026-01-21 17:52:19 +03:00
Mikhail Chusavitin
ee02d4cc28 add csv analysis option 2026-01-21 12:42:28 +03:00
Mikhail Chusavitin
d21da6d49e add isNumericType() и convertNumericFormat() 2026-01-21 12:36:37 +03:00
Mikhail Chusavitin
4573a8c56f fix for required fields in new line creation 2026-01-21 12:33:41 +03:00
Mikhail Chusavitin
4b9cae2312 fix float point import problem 2026-01-21 11:36:55 +03:00
2189805015 feat: улучшена информативность ошибок при импорте CSV
- В сообщениях об ошибках теперь отображается содержимое проблемной строки
- Добавлена специальная обработка ошибки Data truncated (обрезание данных)
- Показывается конкретное значение поля, вызвавшего ошибку
- Добавлена информация о типе и размере столбца при truncation
- Улучшено форматирование вывода ошибок (JSON для больших данных)
- Номер строки теперь соответствует номеру в исходном CSV файле (+2 для учета заголовка)
2026-01-21 04:29:56 +03:00
23c9c04a87 perf: оптимизировано массовое удаление строк
- Добавлен batch delete метод на бэкенде (удаление множества строк за один запрос)
- Использование WHERE IN для удаления нескольких строк одним SQL запросом
- Добавлен прогресс-бар при удалении большого количества строк
- Удаление 1000 строк теперь занимает секунды вместо минут
- Добавлена поддержка транзакций для атомарности операций
- Оптимизирован размер батчей для баланса производительности и надежности
2026-01-21 04:17:26 +03:00
de5266f98f fix: исправлена критическая ошибка дублирования метода convertDateFormat
- Удалено дублирование метода convertDateFormat в DataService.php
- Метод был объявлен дважды, что вызывало PHP Fatal Error
- Fatal Error приводил к выводу HTML вместо JSON, вызывая ошибку парсинга в Tabulator
- Исправлена ошибка "SyntaxError: The string did not match the expected pattern"
2026-01-21 04:08:13 +03:00
130f63f6b2 perf: убрано избыточное логирование при импорте для повышения производительности
- Удалено детальное логирование каждой строки импорта в PHP (error_log в циклах)
- Убраны console.log при парсинге и обработке CSV на фронтенде
- Оставлено только логирование начала/конца импорта и ошибок
- Значительно улучшена производительность при импорте больших файлов (тысячи строк)
2026-01-21 04:04:56 +03:00
a5e046e194 fix: исправлена обработка nullable полей и форматов дат при импорте CSV
- Исправлено определение nullable полей (IS_NULLABLE как boolean)
- Добавлена автоматическая конвертация форматов дат (DD.MM.YYYY → YYYY-MM-DD)
- Улучшена обработка пустых значений в CSV
- Добавлена поддержка различных форматов дат (DD.MM.YYYY, DD/MM/YYYY, DD-MM-YYYY)
- Исправлена логика проверки обязательных полей
2026-01-21 03:48:28 +03:00
66804814f1 debug: добавлена детальная отладка импорта CSV
- Добавлено логирование парсинга CSV на фронтенде
- Добавлено логирование отправляемых данных
- Добавлено детальное логирование в PHP бэкенде (каждая строка импорта)
- Улучшена обработка ошибок с выводом подробной информации
- Добавлен вывод SQL запросов при ошибках
2026-01-21 03:40:17 +03:00
fff4e80ffd fix: исправлен импорт CSV с неполным набором столбцов
- Добавлена поддержка импорта CSV файлов с отсутствующими столбцами
- Для отсутствующих столбцов устанавливается NULL (если nullable) или значение по умолчанию
- Автоинкрементные поля корректно пропускаются, счетчик увеличивается автоматически
- Улучшена обработка NULL значений ("NULL", "null", "") - конвертируются в реальный NULL
- Добавлена валидация обязательных полей без значений по умолчанию
2026-01-21 03:31:26 +03:00
df33488ad7 Add exact application files 2026-01-21 02:10:12 +03:00