К содержимому

Data Engineering · Фармдистрибуция

W-Connection — автоматизация бизнес-процессов

30 форматов Excel превращаются в одну чистую базу. Корпоративная система автоматизации отчётности и бизнес-процессов: продажи, дистрибуция, план-факт, KPI и ИИ-консультант по данным компании.

Автоматизация30 сетей · 18 парсеров2,1 млн строк фактовИИ пишет код, не данные
wires-connection.app
Страница импорта: загрузка месяца, KPI и санити-проверки по сетям

Смотреть кейс

С чем приходится работать

Устаревший формат .xls1С-файлы без sharedStringsИерархия в отступах строкНепостоянные имена листовСлужебные файлы в папкахСмешанные типы в ключахОбъединённые ячейкиПромежуточные итоги в таблицахРасхождения в названиях сетейДубликаты исходных файлов
Отрасль
Корпоративный сектор
Статус
В продакшене
Сетей в реестре
30
Парсеров
18
Месяцев в базе
7
Таблиц в схеме
14
PythonpandasStreamlitSQLiteClaude API

Задача

Сотрудники компаний тратили дни на ручную сборку отчётов по продажам и дистрибуции из разных систем и таблиц, план-факт и KPI считались с ошибками и задержками, а ответы на вопросы о состоянии бизнеса приходилось искать по отделам.

Решение

Построили W-Connection — единый контур бизнес-процессов компании: отчёты по продажам, нумерическая дистрибуция, разнарядка, план-факт продаж и KPI сотрудников собираются автоматически, дашборды обновляются в реальном времени, а встроенный ИИ-консультант отвечает на вопросы сотрудников, опираясь на все данные компании.

Конвейер

Месяц импортируется в один клик

Аналитик кладёт папку месяца и жмёт кнопку. Дальше система сама: парсеры разбирают каждую сеть, справочники обогащают строки, санити-проверки ловят подозрительное. Запустите импорт:

  • Неман·
  • Фармамир·
  • АМТ·
  • Саян·
  • Эрай·
  • Лекарь·
  • Медсервис·
  • Линь·
  • Бимед·
  • Заман·

0

строк в базе

Главный принцип

ИИ пишет код. Код обрабатывает данные

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

Только при смене формата

Файл сетиДамп структурыClaudeparser.py

В промпт уходит структура листа, не цифры

Каждый месяц

Файлы месяцаparser.pyclean + enrichСанитиSQLite

Детерминированно, бесплатно, с контрольной сверкой

01

Отпечаток структуры

Каждый файл хэшируется по структуре. Сеть прислала отчёт по-новому - система ловит это до импорта и предлагает сгенерировать парсер.

02

Парсер пишется один раз

Дальше он разбирает файлы месяцами без токенов и без сюрпризов. ИИ подключается только к новым форматам и матчингу названий.

03

Числа только из ячеек

Правило проекта: никаких «умных» догадок в парсерах. Каждое значение читается из конкретной ячейки и проверяется контрольными суммами.

Качество данных

Качество данных подтверждается сверкой

Критерий готовности парсера жёсткий: сойтись с ручным итогом аналитика до последней единицы. Все 18 парсеров эту сверку проходят.

9 637

непривязанных строк до справочника унификации

252

осталось после внедрения: привязка 99,9%

Сверка в ноль

Парсер без контрольной сверки с эталоном не считается готовым. Это правило проекта, а не пожелание.

Санити до записи

Объёмы сверяются с прошлым месяцем, доля чужих препаратов и новые структуры подсвечиваются до того, как данные лягут в базу.

Ретро-улучшения

Поздняя правка парсера задним числом чистит уже импортированные месяцы: одно исправление срезало около 5 тысяч мусорных строк в трёх прошлых месяцах.

wires-connection.app
Страница данных: сырые строки после разбора с фильтрами и экспортом
Страница данных: сырые строки после разбора с фильтрами и экспортом
wires-connection.app
Справочники: привязка названий сетей к канону и очередь на разбор
Справочники: привязка названий сетей к канону и очередь на разбор

Отчёты

Сводная аналитика по всем сетям

Сводные отчёты по всем подключённым сетям строятся из чистой базы за секунды: продажи, динамика месяц к месяцу, остатки, сроки годности и план-факт.

ПродажиДинамикаОстаткиСроки годностиПлан-факт
wires-connection.app
Сводные отчёты: продажи, динамика, остатки, сроки годности и план-факт

Система в цифрах

2 087 027

строк фактов в базе

30

сетей в реестре

18

парсеров со сверкой

3912

аптек в справочнике

1749

наименований препаратов

3025

обработанных файлов

Под капотом

Инженерные решения

Три движка Excel

openpyxl, xlrd и calamine: реальные файлы бывают повреждёнными, и 1С-xlsx без sharedStrings приводит к сбою стандартной библиотеки чтения.

18 тестов против эталона

По тесту на каждый парсер: агрегаты сверяются с ручным итогом аналитика. Любая правка парсеров прогоняется через все тесты.

Одна база-файл

SQLite на 763 МБ держит 2,1 млн строк и все справочники. Пользователь запускает систему на Windows в два клика, без серверов.

Продуктовый UI поверх Streamlit

Тёмный сайдбар, KPI-карточки со спарклайнами, чипы статусов. Скриншоты интерфейса проверяются автоматически через Playwright.

Python 3.11pandasStreamlitSQLiteClaude APIcalaminerapidfuzzuvPlaywright

Результат

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

Следующий проект

W-CRM — CRM для медицинских представителей