Минас Саркисянwebkoth.com

Внутренняя система · Пилот

Витрины поверх озера данных

Приложение с дашбордами поверх двух источников: общего хранилища сырых данных компании (озера данных) и корпоративного хранилища. На лету оно не считает: фоновые задачи переносят агрегаты в собственную базу, и экран читает витрину, у которой видна дата актуальности.

Болело

Экономику товара считали по отчёту площадки целиком. Себестоимость стоит и на логистических строках, а их в разы больше товарных, поэтому расчёт завышал её на порядок.

Стало

Готовых таблиц (витрин) две. В первой то, что относится к конкретному товару. Во второй хранение, приёмка, штрафы и удержания, которые на товар не разложить, и на экране они стоят отдельным блоком.

Что это даёт бизнесу

  • Дашборд отвечает, даже когда источник недоступен, и всегда показывает, на какой момент данные.
  • Товар без себестоимости не выглядит товаром с отличной маржой: выручка без себестоимости доезжает до экрана отдельным показателем.
  • Расходы, которые не ложатся на позицию, показаны отдельно, а не размазаны по товарам выдуманным правилом.
  • Запрос за период глубже ста дней витрина отклоняет.
  • Приложение не строит свой сбор данных: оно берёт готовое озеро и держит поверх него короткую витрину под скорость экрана.

От источника к результату

  1. Озеро данных
  2. Корпоративное хранилище
  3. Фоновые задачи по расписанию
  4. Свои витрины
  5. Дашборды с датой актуальности

В источники ходит только фоновая задача, и она стоит внутри защищённого контура. Интерфейс и API читают исключительно свою базу, поэтому их размещение от сети источника не зависит.

Как устроено

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

Данные берутся через сохранённый запрос над базовой таблицей (вью): он приводит знаки у возвратов к одному виду и добавляет себестоимость и связку с номенклатурой учётной системы, которых в самой таблице нет.

До начала работы я проверил источник: описание таблиц, свежесть данных, зависимости и расписание. У каждой седьмой непустой таблицы данные оказались старше недели. По каталогу такие от рабочих не отличаются, потому что мониторинг следит за статусом задания, а полноту данных не проверяет.

Очередь задач хранится в той же базе, что и данные приложения. Задача и изменение данных записываются одним неделимым действием: сохраняются оба или ни одно. Поэтому «записали, а задачу потеряли» не бывает. Отдельное хранилище под очередь не понадобилось.

Кто ведёт систему сейчас

Я. Оба источника подключены только на чтение, писать приложение может лишь в свою базу.

Другие кейсы этого шага

Внутренняя система · В проде

Платформа данных

Цифра сверена с первоисточником до единицы товара

Болело
Данные проходили четыре слоя обработки, и никто не сверял результат с тем, что показывает сама площадка. Решение о цене принималось по цифре, которую не с чем сравнить.
Стало
Заказы, отмены и остатки сверены с площадкой до единицы товара, деньги до копейки, и проверку можно повторить в любой день одной командой.
Доверие
Витрины
продажи, остатки, присутствие, прибыль и убытки, сверка

Та же система даёт эффект ещё по 2 шагам

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

Внутренняя система · В проде

Агенты управления рекламой

Ставки меняются по данным, реклама в плане до 10 % выручки

Болело
Ставки крутили по вчерашнему отчёту и на глаз. Но вчерашние цифры ещё не полные, и обвал рынка легко принять за свою ошибку, а потом раскачать всё новыми правками.
Стало
Решение собирается по шагам: что с рынком, как дела у товара, какую долю рекламы в выручке (ДРР) он выдержит, и только потом ставка. Считается по дозалитой статистике, план по ДРР до 10 %.
ДРР
Порядок решения
рынок, товар, целевой ДРР, потом ставка
Окно показателей

Та же система даёт эффект ещё на одном шаге

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

Свой продукт · В проде

Магазины маркетплейсов в Claude

Ответ о магазине словами, без дашборда

Болело
Чтобы понять, что происходит в магазине, продавец обходит кабинеты трёх площадок и сводит отчёты в таблице. Дашборд отвечает только на заранее заложенные вопросы.
Стало
Продавец спрашивает обычными словами: «что заканчивается на складах», «окупается ли реклама», «сколько придёт на счёт». Claude идёт в API площадки его ключом.
Охват
Ключи площадок
Табличный отчёт
скачивается сам и читается строками

на замере в августе 2026 через каталог API доступны 945 операций из 962

Та же система даёт эффект ещё на одном шаге

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

Открытый код · В проде

База знаний маркетплейсов для агентов

Агент отвечает по правилам площадок, а не по памяти

Болело
Когда ИИ-агент проектирует логику под правила площадки, он опирается на память. Тарифы и лимиты меняются, а память модели нет, и ошибку замечают по потерянным деньгам.
Стало
База знаний трёх площадок лежит рядом с проектом обычными текстовыми файлами, по файлу на каждый метод API и статью справки. Агент читает сам первоисточник, со ссылкой и датой.
База
Сборка
Обновление
одна команда, git-diff как отчёт об изменениях
Смотреть кейс
Тип
Внутренняя система
Статус
Пилот
Ритм
витрина обновляется по расписанию
Ведёт
я
Заменило
расчёт по сырому отчёту площадки
Python 3.14uvFastAPISQLAlchemy 2.0AlembicPostgreSQL 18procrastinatepython-tdsReact 19TanStack QueryPlaywright