ImportCRM
Каждая партия импорта просчитана до единицы товара — с доставкой, таможней и кэшбэками, — чтобы три совладельца видели реальную маржу до продажи.
- Полная себестоимость единицы
- Заказано / получено
- Ожидаемая прибыль до сохранения
- Журнал действий по совладельцам
- Клиент
- Частный бизнес по импорту электроники
- Год
- 2025–26
- Авторство
- Собственная разработка
- Статус
- Роль
- Единственный разработчик: модель данных, API, интерфейс и деплой.
- Платформы
- Веб-админка · десктоп и телефон
- Языки
- RU
- Стек
- React 18 · Vite · React Router · Node.js · Express · Prisma · PostgreSQL · JWT · Vercel
- Ссылки
- Демонстрация по запросу
Изыскания — контекст и задача.
Задача
Три совладельца, импортирующие электронику, не видели реальную себестоимость единицы товара с учётом доставки, таможни и кэшбэков.
Небольшой бизнес по импорту электроники, которым управляют три совладельца, закупает VR-гарнитуры, смарт-часы, консоли и аксессуары на eBay, Amazon, в официальных магазинах и на Alibaba, а затем продаёт их локально — через Instagram, Telegram, лично и на маркетплейсах. Все расчёты — в долларах США.
До ImportCRM учёт вёлся вручную. Как только к цене закупки добавлялись доставка, таможня и страховка, никто не мог сказать, сколько на самом деле стоит одна единица товара, — и реальная прибыль оставалась догадкой. Недопоставки стирали границу между заказанным, пришедшим и тем, что действительно лежит на складе. Кэшбэки от площадок и производителей приходили через недели и легко терялись. А когда данные одновременно вносят три партнёра, не оставалось следа, кто и что изменил.
Требования зафиксировали в подробном техническом задании (v3.2, декабрь 2025): партия как единица учёта, контроль «заказано / получено», распределение затрат, прибыль по каждой продаже, полный журнал действий и равные права для всех трёх совладельцев.
План — сначала — чертёж системы.
Решение
CRM на основе партий: распределяет полную себестоимость на каждую единицу, показывает ожидаемую прибыль до сохранения продажи и записывает каждое изменение с именем партнёра.
ImportCRM считает единицей учёта партию импорта. Партия содержит товары с ожидаемым количеством и ценой; поступления фиксируют, что пришло на самом деле, с пометками о недостаче, и автоматически меняют статус партии. Доставка, таможня и страховка добавляются как расходы партии, а кэшбэки от площадок и производителей проходят путь от «ожидается» до «применён». Движок полной себестоимости пересчитывается при каждом поступлении, расходе или кэшбэке и записывает базовую и эффективную стоимость каждой единицы. Продажи привязаны к реальному складу: диалог показывает ожидаемую прибыль и маржу до сохранения, сервер фиксирует себестоимость и прибыль на этот момент, а отмена продажи возвращает товар на склад. Каждое создание, изменение, удаление и вход попадают в журнал со старым и новым значением. Одно и то же Express-приложение работает локально и как serverless-функция Vercel поверх Postgres.
Ключ модулей
- Партии импорта с товарами, контролем «заказано / получено» и автоматическим статусом
- Расходы партии (доставка, таможня, страховка) и кэшбэки от «ожидается» до «применён»
- Базовая и эффективная себестоимость единицы, пересчёт при каждом изменении
- Диалог продажи с ожидаемой прибылью и маржой в реальном времени; продать больше остатка нельзя
- Отмена продажи возвращает товар на склад и попадает в журнал
- Дашборд: вложения, выручка, прибыль и ROI, помесячный график выручки и прибыли, показатели склада
- Отчёты за период по категориям товаров и площадкам продаж
- Журнал действий с фильтрами по типу действия и разделу
Ключевые решения
-
Почему единица учёта — партия
Затраты приходят по отгрузке, а не по товару. Равномерное распределение расходов партии на фактически полученные единицы превращает запутанную поставку в понятную, предсказуемую себестоимость, которую легко проверить.
-
Почему продажа фиксирует свою себестоимость
Прибыль и маржа фиксируются в момент продажи, поэтому поздний расход или кэшбэк обновляет себестоимость остатков, но не переписывает вчерашние результаты.
-
Почему каждое изменение хранит старое и новое значение
Трём партнёрам с равными правами нужна подотчётность, а не разграничение прав: журнал фиксирует, кто что изменил, в какой записи и с какого значения на какое.
-
Почему одно Express-приложение работает в двух местах
API отделён от точки запуска сервера, поэтому один и тот же код работает как постоянный процесс при разработке и как одна функция Vercel в продакшене.
Фасады — экраны для компьютера.
Все фасады 05
-
Рис. 4.1 Отчёт за сентябрь: выручка, кэшбэки, расходы, потери, валовая и чистая прибыль, средняя маржа и выручка против прибыли по категориям товаров. -
Рис. 4.2 Диалог обновления поступления: фактически полученное количество по каждому товару против заказанного и пометка о недостаче. -
Рис. 4.3 Склад: в наличии, продано, в ремонте и повреждено, а по каждому товару — сравнение базовой и эффективной себестоимости. -
Рис. 4.4 Журнал действий: кто из совладельцев что создал или изменил, включая автоматические обновления склада после каждой продажи. -
Рис. 4.5 Экран входа: брендовая панель ImportCRM с кратким перечнем возможностей рядом с формой почты и пароля.
Детали — мобильные экраны.
Все мобильные экраны 04
Ведомость материалов — стек и почему он.
| Слой | Материал | Почему |
|---|---|---|
| 01Данные | PostgreSQL · Prisma · 9 models | Реляционная целостность партий, склада и продаж; та же схема запускается на SQLite для локальных демо. |
| 02Логика | Express 4 · landed-cost engine · sale snapshots | Себестоимость пересчитывается при каждом поступлении, расходе или кэшбэке; проданные единицы сохраняют себестоимость на момент продажи. |
| 03Аналитика | Rule-based profit and margin preview | Партнёры видят ожидаемый результат до проведения продажи — простая арифметика вместо догадок. |
| 04Интерфейс | React 18 · Vite · React Router | Одна адаптивная админка: боковое меню на десктопе; выдвижное меню, таб-бар и нижние шторки на телефоне. |
| 05Инфраструктура | Vercel static + serverless function · JWT · bcrypt | Один деплой для интерфейса и API и авторизация без состояния, удобная для serverless. |
Стек
Сдача — итог и ссылки.
Проверенные факты
- REST-эндпоинтов
- 38
- Источник: по данным репозитория, сентябрь 2026
- моделей данных
- 9
- Источник: по данным репозитория, сентябрь 2026
Ссылки
Закрытый
Демонстрация по запросу
Хотите увидеть систему в работе?
Покажу систему вживую на демо-данных и расскажу о решениях, которые за ней стоят.
Запросить демонстрацию





