H
HelixMTS
Загрузка данных и модуля прогнозирования…
{{ pageTitle }}
{{ pageSub }}
{{ alertCount }}
данные на 31.08.2026
{{ k.label }}
{{ k.value }}
{{ k.sub }}
{{ c.label }}{{ c.count }}
Позиция
Направление
Склады
Лаб.
В пути
В заказах
Расход/мес
Запас, мес
Реком. заказ
Статус
{{ r.name }}
{{ r.code }} · {{ r.art }}
{{ r.dir }}
{{ r.stockW }}
{{ r.lab }}
{{ r.transit }}
{{ r.placed }}
{{ r.demand }}
{{ r.cover }}
{{ r.kits }}
{{ b.t }}
Всё под контролем — по выбранному фильтру позиций нет.
Сбросьте фильтр или измените условия поиска.
{{ rowsNote }}
Сортировка: запас в месяцах, по возрастанию
{{ s.n }} {{ s.label }}
Перетащите файл .xlsx или нажмите для выбора
Книга может содержать несколько листов, в том числе большие — до 60 000+ строк. На сервере файл обрабатывается потоково, пакетами по 500–1000 строк.
Читаем «{{ wizFile }}» — определяем листы и размеры…
или
{{ wizFile }}
{{ wizSize }} · выберите лист и укажите, какому набору данных он соответствует
{{ s.name }}
{{ s.dims }}
похоже на: {{ s.suggest }}
большой лист — потоковая обработка
Маппинг: лист «{{ wizSheetName }}» → {{ wizDtypeLabel }}
{{ headerRowNote }} · соответствия предложены по заголовкам с учётом синонимов и регистра
Применён сохранённый шаблон маппинга (от {{ tplSavedAt }}). Соответствия можно переопределить вручную.
Поле системы
Колонка файла
Статус
{{ f.label }}
{{ f.reqMark }} · {{ f.type }}
{{ f.state }}
Строк данных
{{ totalRows }}
Прошли проверку
{{ validCount }}
Строк с ошибками
{{ errCount }}
{{ approxNote }}
Первые 20 строк с применённым маппингом и типами
{{ showErrorsLabel }}
строка
{{ c.label }}
{{ r.no }}
{{ c.v }}
Проблемные строки (первые 12)
{{ e.row }} {{ e.field }} {{ e.msg }} значение: {{ e.raw }}
{{ errMore }} Ошибочные строки не блокируют импорт — они остаются в staging-карантине для исправления.
Подтверждение импорта
{{ wizFile }} · «{{ wizSheetName }}» → {{ wizDtypeLabel }} · {{ batchNote }}
Новых записей
{{ sumNew }}
Обновлений
{{ sumUpd }}
В карантин
{{ sumErr }}
Загрузка в staging и перенос…{{ batchLabel }} · {{ progress }}
Импорт {{ jobId }} выполнен
Данные перенесены из staging в основные таблицы одной транзакцией. Рекомендуемые заказы будут пересчитаны по расписанию или вручную на странице параметров.
Импорт
Тип данных · файл
Пользователь
Строк
Новые / обновл. / ошибки
Статус
Действия
{{ h.id }}
{{ h.ts }}
{{ h.typeName }}
{{ h.file }} → «{{ h.sheet }}»
{{ h.user }}
{{ h.rows }}
{{ h.inserted }} / {{ h.updated }} / {{ h.errors }}
{{ h.bT }}
{{ h.detail }}
{{ histNote }}
{{ k.label }}
{{ k.value }}
{{ k.sub }}
Распределение партий по срокам
просрочено до 90 дней до порога свыше порога
Правило FEFO: резервирование и выдача — с ближайшего срока годности. Партии за порогом попадают в уведомления и в статус позиции на дашборде.
Истечение сроков по месяцам · партий
{{ b.n }}
{{ b.label }}
Позиция
Направление
Годен до
Остаток
До истечения
Горизонт года
Действие
{{ r.name }}
{{ r.code }}
{{ r.dir }}
{{ r.date }}
{{ r.qty }}
{{ r.days }}
{{ r.action }}
{{ expNote }}
{{ k.label }}
{{ k.value }}
{{ k.sub }}
Правила контроля: уведомление за 180 дней до истечения РУ; при истёкшем РУ и статусе «снят с производства» отгрузка блокируется с указанием причины. В текущей выгрузке все РУ бессрочные — календарь истечения заполнится после импорта дат из 1С.
{{ t.label }}{{ t.count }}
Позиция
Направление
Сведения
Остаток
Статус
{{ r.name }}
{{ r.code }}
{{ r.dir }}
{{ r.third }}
{{ r.stock }}
{{ r.bT }}
{{ regNote }}
{{ k.label }}
{{ k.value }}
{{ k.sub }}
{{ fvaSelStats }}
{{ g.label }}
{{ b.label }}
Факт, ед.
{{ b.fact }}
Прогноз, ед.
{{ b.fc }}
Отклонение
{{ b.delta }}
факт — списания 2025 (столбцы) прогноз системы — линия с точками (walk-forward: только данные, известные до месяца)
Наибольшие отклонения за 2025 год
Позиция
Факт, ед.
Прогноз, ед.
MAPE
Отклонение
{{ r.name }}
{{ r.code }}
{{ r.fact }}
{{ r.fc }}
{{ r.mape }}
{{ r.bT }}
Параметры движка
Изменения применяются пересчётом и сохраняются как новая версия
Целевой буфер запаса, мес
складской запас + логистика; норма 2.5–3.5
Надбавка для XYZ-класса Z, мес
страховой запас для нерегулярного спроса
Порог срока годности, дней
уведомление и статус «критичный СГ» (FEFO)
Порог истечения РУ, дней
уведомление регуляторного модуля
Пересчёт по расписанию
и вручную — кнопкой ниже
Веса последних 3 месяцев — выбираются автоматически по тренду услуг
рост → {{ weightsUp }} снижение → {{ weightsDown }} плато → равные
ABC / XYZ-классификация
ABC — доля объёма расхода · XYZ — стабильность спроса
X · стабильный
Y · колеблющийся
Z · нерегулярный
{{ a.label }} {{ a.desc }}
{{ c.v }}
Классы AX — точный прогноз по услугам; класс Z получает надбавку к буферу +{{ parZ }} мес.
Тесты модуля прогнозирования
{{ testsSummary }}
{{ t.icon }}
{{ t.name }}
{{ t.note }}
Версии параметров расчёта
{{ v.v }} {{ v.date }} {{ v.user }} {{ v.note }}
Backend: NestJS (TypeScript) + SheetJS, потоковый парсинг БД: PostgreSQL 16 Frontend: React / Next.js Деплой: Docker Compose · VMware ESXi · CI/CD GitHub Actions
Абстракция источников данных
Бизнес-логика расчёта не знает об источнике: Excel сегодня, 1С (OData) и ЛИС Силаб — позже, без изменения движка
{{ a.name }}{{ a.tag }}
{{ a.note }}
interface DataSourceAdapter
{{ adapterCode }}
import_staging_rows
пакеты по 500–1000 строк, построчная валидация, карантин ошибок
основные таблицы
транзакционный перенос + снимок для отката
Нормализованная схема данных
{{ g.title }}
{{ t.name }}
{{ t.desc }}
{{ c.f }} {{ c.t }} {{ c.n }}
API-контракты модуля импорта и расчёта
{{ e.m }} {{ e.path }} {{ e.desc }}
POST /api/imports/:id/commit — ответ
{{ apiEx1 }}
GET /api/nomenclature/МТ--0006357/recommendation — ответ
{{ apiEx2 }}
Выбрано {{ selCountLabel }} · {{ selKits }} наб.
Сбросить
{{ b.t }}
{{ drawer.name }}
{{ drawer.code }} · арт. {{ drawer.art }} · {{ drawer.pack }}
Расчёт заказа
{{ s.k }}{{ s.v }}
{{ drawer.verdictLabel }} {{ drawer.verdict }}
Динамика за 24 месяца
{{ drawer.trendLabel }}
{{ drawer.legendA }} списания (сверка)
{{ s.k }}
{{ s.v }}
Партии и сроки годности · FEFO
Партии не отслеживаются или остаток нулевой.
{{ b.date }} {{ b.qty }} {{ b.days }}
Регуляторика и снабжение
{{ s.k }}{{ s.v }}
Заказ поставщику
{{ orderSub }}
Позиция
Наборов
Тестов/ед.
{{ l.name }}
{{ l.code }} · кратность {{ l.mult }}{{ l.licNote }}
{{ l.tests }}
В заказе есть позиции с экспортной лицензией — отгрузка после подтверждения лицензий поставщиком.
Итого: {{ orderTotKits }} наб. · {{ orderTotTests }} тестов/ед.
Заказ {{ orderNumber }} размещён
Размещённые количества учтены в «долгах», рекомендации по позициям пересчитаны автоматически.
{{ toast.msg }}