@nocodb.app — База данных MVP Marketplace
Версия: 3.0.0
Дата: 2025-12-18
URL: https://data.0kt.ru:8443
Статус: Работает (HTTP/2 + Brotli + Optimized)
Доступ
| Параметр |
Значение |
| URL |
https://data.0kt.ru:8443 |
| Email |
admin@0kt.ru |
| Base ID |
pt7k98pv0fwi1el |
Password: см. infra/SECRETS.md
Таблицы MVP (Marketplace)
| Таблица |
ID |
Назначение |
| Users |
mjn9vbjh6w2u70y |
Пользователи системы |
| LegalEntity |
m89pxa9yd7jnm9q |
Юридические лица |
| Channel |
mk9pdznl2v56jyz |
Каналы продаж (Ozon, WB, YM) |
| Warehouse |
mghfe5vq5dlyklz |
Склады |
| DeliveryService |
mxrcrlcx1to5f5m |
Службы доставки |
| ArticleMapping |
m6f7osauinwbbq0 |
Сопоставление артикулов |
| ArticleMappingItem |
m6nolo6edicut6u |
Состав сопоставления |
| Order |
mfuzn6vrx8qd8kq |
Заказы |
| OrderItem |
mr3zpqii2o6a86h |
Позиции заказов |
| OrderAnalytics |
m5fh9o7v6r16ohn |
Аналитика заказов |
| ProductAverages |
m3ze9hs62n76plg |
Средние показатели |
Таблицы PIM (Товары)
| Таблица |
ID |
Назначение |
| Products |
mvgzjcg9tpanapf |
Мастер товаров с ценами |
| SKU_Mappings |
mraly3huoxim3rk |
Связь артикул → маркетплейс SKU |
| Suppliers |
m0mtzqqaitsfi2t |
Поставщики |
| PIM_Catalog |
ma24gsd6kh0qt5s |
Характеристики пиротехники |
| Prices_History |
ml7h9pchiiosbqm |
История цен от поставщиков |
| Categories |
mfvfy5g9ybn0jpe |
Категории с наценками |
| Bundles |
ma8sbzap2q9euq1 |
Бандлы (наборы) |
| Images |
m7efpfuygb4sl11 |
Изображения товаров |
| Features |
mjndz5qbemnq9rn |
Системная (по умолчанию) |
FK Связи (Foreign Keys)
| Таблица |
Колонка FK |
Ссылается на |
| LegalEntity |
user_id |
Users |
| Channel |
entity_id |
LegalEntity |
| Warehouse |
channel_id |
Channel |
| DeliveryService |
channel_id |
Channel |
| ArticleMapping |
channel_id |
Channel |
| ArticleMapping |
pim_product_id |
Products |
| ArticleMappingItem |
mapping_id |
ArticleMapping |
| ArticleMappingItem |
product_id |
Products |
| Order |
channel_id |
Channel |
| Order |
entity_id |
LegalEntity |
| Order |
warehouse_id |
Warehouse |
| OrderItem |
order_id |
Order |
| OrderItem |
product_id |
Products |
| OrderAnalytics |
order_id |
Order |
| ProductAverages |
product_id |
Products |
| ProductAverages |
channel_id |
Channel |
Структура Products
| Поле |
Тип |
Описание |
| article |
SingleLineText |
Артикул (primary) |
| name |
SingleLineText |
Название |
| code_1c |
SingleLineText |
Код 1С |
| category |
SingleLineText |
Категория |
| brand |
SingleLineText |
Бренд |
| supplier |
SingleLineText |
Поставщик |
| caliber |
SingleLineText |
Калибр (через запятую, точка десятичная) |
| purchase_price |
Decimal |
Закупочная цена |
| base_price |
Decimal |
Базовая цена |
| ozon_price |
Decimal |
Цена OZON |
| wb_price |
Decimal |
Цена WB |
| retail_price |
Decimal |
Розничная цена |
Структура SKU_Mappings
| Поле |
Тип |
Описание |
| article |
SingleLineText |
Артикул товара |
| marketplace |
SingleLineText |
O1/O2/O3/WB/YM/OpenCart/PIM |
| marketplace_sku |
SingleLineText |
SKU на маркетплейсе |
| marketplace_product_id |
SingleLineText |
ID товара на маркетплейсе |
| status |
SingleLineText |
active/paused/archived |
Структура PIM_Catalog
| Поле |
Тип |
Описание |
| article |
SingleLineText |
Артикул (primary) |
| caliber |
SingleLineText |
Калибр (мм) |
| shots_count |
Number |
Кол-во выстрелов |
| duration_sec |
Number |
Время работы (сек) |
| height_m |
Number |
Высота подъёма (м) |
| effects |
LongText |
Описание эффектов |
| safety_distance_m |
Number |
Безопасная дистанция (м) |
| weight_kg |
Decimal |
Вес (кг) |
| dimensions |
SingleLineText |
Габариты (ДхШхВ) |
| certificate_number |
SingleLineText |
Номер сертификата |
| certificate_expiry |
Date |
Срок действия серт. |
| hazard_class |
SingleLineText |
Класс опасности |
| un_code |
SingleLineText |
Код ООН |
| country |
SingleLineText |
Страна производства |
| video_url |
URL |
Ссылка на видео |
| description |
LongText |
Описание |
Структура Prices_History
| Поле |
Тип |
Описание |
| article |
SingleLineText |
Артикул |
| supplier |
SingleLineText |
Код поставщика |
| price_date |
Date |
Дата прайса |
| purchase_price |
Decimal |
Закупочная цена |
| min_order_qty |
Number |
Мин. заказ (шт) |
| in_stock |
Checkbox |
Есть в наличии |
| source_file |
SingleLineText |
Файл-источник |
Структура Categories
| Поле |
Тип |
Описание |
| code |
SingleLineText |
Код категории |
| name |
SingleLineText |
Название |
| parent_code |
SingleLineText |
Родительская категория |
| margin_percent |
Decimal |
Наценка (%) |
| ozon_category_id |
SingleLineText |
ID категории OZON |
| wb_category_id |
SingleLineText |
ID категории WB |
Структура Bundles
| Поле |
Тип |
Описание |
| bundle_article |
SingleLineText |
Артикул бандла |
| bundle_name |
SingleLineText |
Название набора |
| component_article |
SingleLineText |
Артикул компонента |
| quantity |
Number |
Количество |
Структура Images
| Поле |
Тип |
Описание |
| article |
SingleLineText |
Артикул |
| image_url |
URL |
URL изображения |
| is_main |
Checkbox |
Главное фото |
| sort_order |
Number |
Порядок сортировки |
| source |
SingleLineText |
Источник (supplier/manual) |
API Примеры
Получить токен
# Password: см. infra/SECRETS.md
curl -s -X POST "https://data.0kt.ru:8443/api/v1/auth/user/signin" \
-H "Content-Type: application/json" \
-d '{"email":"admin@0kt.ru","password":"$NOCODB_PASSWORD"}'
Получить все товары
TOKEN="..." # из предыдущего запроса
curl -s "https://data.0kt.ru:8443/api/v2/tables/mvgzjcg9tpanapf/records" \
-H "xc-auth: $TOKEN"
Добавить товар
curl -s -X POST "https://data.0kt.ru:8443/api/v2/tables/mvgzjcg9tpanapf/records" \
-H "xc-auth: $TOKEN" \
-H "Content-Type: application/json" \
-d '{"article":"JF-001","name":"Фейерверк Тест","purchase_price":100}'
Docker
# Статус
docker ps | grep nocodb
# Логи
docker logs nocodb-products
# Перезапуск
cd $WORKSPACE/infra/@nocodb.app
docker compose restart
Оптимизация памяти и производительности
Лимиты памяти (LOCKED)
| Контейнер |
Лимит |
Типичное потребление |
| nocodb-products |
256MB |
150-200MB (60-80%) |
| nocodb-products-db |
256MB |
40-60MB (15-25%) |
| СУММАРНО |
512MB |
~250MB |
LOCKED: Лимиты зафиксированы в docker-compose.yml. Не увеличивать без необходимости.
NocoDB настройки
environment:
NODE_OPTIONS: "--max-old-space-size=192" # 192MB heap для 256MB контейнера
NC_DISABLE_AUDIT: "true" # Отключить аудит (экономия памяти)
NC_DISABLE_TELE: "true" # Отключить телеметрию
NC_DISABLE_ERR_REPORT: "true" # Отключить отправку ошибок
PostgreSQL настройки
command:
- "postgres"
- "-c" - "shared_buffers=64MB" # Буфер БД
- "-c" - "work_mem=4MB" # Память на операцию
- "-c" - "maintenance_work_mem=32MB" # Память на VACUUM/CREATE INDEX
- "-c" - "effective_cache_size=128MB" # Оценка кэша ОС
- "-c" - "random_page_cost=1.1" # Для SSD
- "-c" - "max_connections=50" # Максимум соединений
Производительность (бенчмарк)
| Операция |
Время |
Записей |
| COUNT |
104ms |
5623 |
| SELECT * LIMIT 100 |
111ms |
100 |
| SELECT * LIMIT 1000 |
242ms |
1000 |
| SELECT * (все) |
684ms |
5623 |
| SELECT с фильтром |
188ms |
~500 |
| JOIN двух таблиц |
112ms |
~2000 |
Способы ускорения UI
- Пагинация — не загружать >500 записей за раз
- Ограничение колонок — скрыть ненужные в View
- Индексы — создать на часто фильтруемые поля
- Views — создать готовые представления для частых запросов
Nginx сжатие
- Brotli — включён через fholzer/nginx-brotli
- HTTP/2 — включён на порту 8443
- Сжатие эффективно для JSON >1KB
Связанные файлы
docker-compose.yml — конфигурация контейнеров
.env — токен доступа
pirotehnika/_shared/products/ — документация структуры данных
Спецификация MVP
Подробная документация: pirotehnika/_shared/products/nocode-mvp/
DATABASE_SCHEMA.md — схема БД
PAGES_SPEC.md — спецификация страниц
FUNCTIONS.md — 37 функций
OPERATOR_SCENARIOS.md — сценарии оператора