Перейти к содержимому

Дашборд складских остатков

Рабочий экран для закупщиков, руководителей складов и операционного директора. Он показывает, каких товаров становится мало, на каком складе и когда ждать пополнения.

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

  • Сводит остатки из всех источников. Количество по каждой позиции и складу видно в одном месте вместе с временем последней синхронизации.
  • Предупреждает о дефиците. Когда остаток опускается ниже точки дозаказа, позиция помечается и попадает в очередь закупщика.
  • Показывает точку дозаказа по каждой позиции. Закупщик видит порог, текущий остаток и средний расход и действует до того, как товар закончится.
  • Разделяет склады. Каждый склад работает со своими позициями, руководство видит сводку по всем.
  • Следит за поставщиками. Ожидаемая и фактическая дата поставки хранятся рядом с остатком, поэтому задержка видна до того, как товар закончится.
  • Учётную систему дашборд не заменяет. Остатки ведут МойСклад, 1С:УНФ, 1С:УТ или складская система, и для многих команд их штатных отчётов достаточно. Отдельное приложение оправдано, когда складов и источников несколько, нужны свои правила дозаказа или единый экран поверх разных систем. Данные забирают через API или read-only подключение к базе, без миграции.
  • Свежесть данных на виду. Синхронизацию запускают по расписанию, не реже раза в час, и показывают время последней загрузки. Если источник не отвечает, дашборд честно говорит об этом, а не показывает вчерашние цифры как сегодняшние.
  • Остаток — это журнал, а не число. Если приложение само меняет остатки, каждое движение записывают с причиной и источником, а не правят количество вручную.
  • Точки дозаказа устаревают. Порог, заданный полгода назад, может не соответствовать текущим продажам. Пороги пересматривают раз в квартал по фактическому расходу, а значения выносят в настройки позиции.
  • Склад — с первого дня. Колонку склада или места хранения закладывают сразу. Ограничение по складу действует на сервере: в таблицах, виджетах и выгрузках.
  • Номенклатура бывает грязной. Артикулы называются по-разному, у одного товара бывает несколько кодов. Сопоставление полей и справочник соответствий делают на этапе подключения источника.
  • Теневые таблицы исчезают только при доверии. Руководитель склада перестанет вести свою таблицу, когда отфильтрованный экран станет точнее её. Поэтому на первом этапе полезно регулярно сверять дашборд с инвентаризацией и открыто показывать найденные расхождения, а не прятать их.

Промпты рассчитаны на AI-агента (Claude Code, Cursor и аналоги) в Laravel-проекте с установленным Filament 4.x. Отправляйте их по одному: каждый шаг даёт результат, который можно проверить до перехода к следующему.

Создай модели и миграции для дашборда остатков: Warehouse (название,
код), Product (артикул, внешние коды, название, единица измерения),
StockLevel (товар, склад, количество, точка дозаказа, средний дневной
расход, время синхронизации), Supplier, Replenishment (товар, склад,
поставщик, количество, ожидаемая дата, фактическая дата), SyncRun
(источник, время, статус, ошибка). Добавь фабрики с демо-данными
для трёх складов.

Проверьте, что у одного товара может быть несколько внешних кодов.

Сгенерируй Filament-ресурс для StockLevel. В таблице покажи товар,
склад, остаток, точку дозаказа, дни до исчерпания по среднему расходу
и отметку дефицита. Добавь вкладки «Ниже точки дозаказа», «Закончился»,
«Данные устарели» и фильтры по складу, поставщику и категории.
Сделай ресурс для Product с relation managers остатков по складам
и ожидаемых поставок. Отмечай поставки, у которых ожидаемая дата
прошла, а фактической нет. Добавь действие «Изменить точку дозаказа»
с обязательным комментарием и журналом изменений.
Сделай фоновую задачу по расписанию раз в час: загружай остатки
из API учётной системы, сопоставляй артикулы через справочник внешних
кодов, пиши журнал SyncRun. Когда остаток опускается ниже точки
дозаказа, отправляй уведомление закупщику один раз до восстановления
остатка. Позиции без сопоставления выводи в отдельный список.
Настрой доступ: руководитель склада видит только свой склад, закупщик
и директор — все. Примени ограничение к таблицам, виджетам и экспорту.
Добавь виджеты числа позиций в дефиците по складам и просроченных
поставок по поставщикам, экспорт списка к дозаказу.

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