Отчёты о роялти приходят файлами, а формат и названия колонок могут отличаться. Если каждый файл разбирать вручную, легко потерять источник цифры или дважды учесть одни данные. Я собрал отдельный кабинет импорта и учёта.
Что работает сейчас
Система принимает несколько CSV-файлов, распознаёт устойчивые заголовки, сохраняет исходный файл и создаёт нормализованные строки. Повторные загрузки не стирают историю, а аналитика использует последнюю успешную версию каждого типа данных. В интерфейсе есть показатели, фильтры, таблица, карточка строки, история импорта и предупреждения.
Как устроен рабочий процесс
Пользователь загружает отчёт, система определяет структуру, показывает ошибки и сохраняет как сырой файл, так и разобранные данные. Поэтому любую цифру можно вернуть к конкретной загрузке и проверить, почему она попала в отчёт.
Технический стек
Приложение построено на Node.js, Express и SQLite, использует CSV-парсер и защищённый вход с хешированием пароля через scrypt. Браузерный кеш ускоряет повторную работу с интерфейсом.
Измеримый результат
Вместо перезаписываемой итоговой таблицы сохраняются три проверяемых слоя: оригинальный файл, нормализованные записи и история загрузок. Повторный импорт не уничтожает прежнее состояние.
Что это даёт бизнесу
Главный результат — воспроизводимость. Если итог вызывает вопрос, не нужно вспоминать, из какого файла он взялся: источник и предупреждения остаются в системе.
