pmval.ru

Четыре часа на отчёт превратились в четыре секунды

Как отчёт из огромной таблицы Excel, который собирали руками полтора часа, стал кнопкой на защищённой странице.

Четыре часа на отчёт превратились в четыре секунды

Пришла ко мне недавно задача, не по работе. Знакомая, пожалуй, каждому второму. Есть рабочий журнал: ОЧЕНЬ большая таблица в Excel, куда изо дня в день заносят данные. Десятки граф на строку, даты, статусы, исполнители. А есть еженедельный отчёт, который из этой таблицы надо собирать руками.

Полтора часа кропотливого пересчёта, и всё держится на внимании и, дай бог, формулах. Строку проскочил, цифру не туда переписал — отчёт поехал. Всплывает такое, как обычно, в самый неподходящий момент. Запрос звучал коротко: «Хочу загружать таблицу и получать готовый документ. Всё!»

Почему не взять готовое?

  • Задача штучная: отчёт свёрстан по внутреннему образцу, до последней объединённой ячейки. Универсальные конструкторы такое обычно не читают, делают «примерно похоже», а надо один в один.
  • Данные закрытые: Заливать рабочий журнал в чужой онлайн-сервис никто не станет, и правильно сделает.
  • Считать надо по своим правилам: больше сорока показателей, у каждого своя логика. Ни одна коробочная программа про эти правила не знает.

Как это делалось

Разобрал таблицу от и до, по косточкам: что означает каждый столбец, откуда берётся каждая цифра отчёта. На выходе получилось два больших текстовых файла — описание с формулами и алгоритм для Claude. Дальше собрали «калькулятор». Программа научилась читать файл и считать все показатели, упомянутые в таблице. А они лежали не в одном месте: разбросаны по разным листам.

Потом взялся за вёрстку. Вот где пришлось заморочиться, ведь документ должен выглядеть строго по шаблону. Первый вариант я забраковал, второй тоже: Claude не справлялся. Выручил приём — взял сгенерированный файл, поправил в Word руками (колонки, шрифты, объединения) и вернул со словами «зафиксируй именно такой вид». Агент вычитал правки прямо из документа и запомнил их навсегда. После сборки арендовал сервер под эту задачу. Финальный код разместил в репозитории на GitHub, оттуда протянул ветку на сервер, и готовая программа стала доступна к использованию.

Два правила, которые я настроил в первую очередь:

  1. Авторизация в браузере: доступ к программе получает только ограниченный круг людей, у которых есть данные для входа. Поисковые боты Google или Яндекса содержимое внутри не просканируют никогда.
  2. Обработка в оперативной памяти: хранить данные было принципиально нельзя, поэтому вся обработка идёт в оперативке — файлы сгорают сразу после завершения цикла работы.

Что получилось

ПунктБылоСтало
Время на отчёт2-4 часа4 секунды
ОшибкиСлучались частоПолностью исключены
Кто может делатьТот, кто знает правила оформленияЛюбой человек с доступом к программе
Вид документаКак получитсяВсегда одинаковый
ДоступФайл на одном компьютереОнлайн из любой точки мира

Открыл ссылку, ввёл пароль, перетащил файл, указал неделю, нажал кнопку — скачался готовый документ.

Про безопасность отдельно, раз данные чувствительные: соединение защищённое, вход по паролю, а загруженные файлы на сервере не хранятся вовсе. Таблица обрабатывается в памяти и исчезает вместе с ответом. Такие вот дела!

Если у вас в работе есть такая же еженедельная тягомотина, присмотритесь к ней. Возможно, она давно просится на автоматизацию, а делается руками просто по привычке.

Дальше