type: standard
aspect: naming
title: "Стандарт именования таблиц"
version: 1.0.0
date: 2026-02-19
status: active
Версия: 2.0.0
Дата: 2025-12-23
Статус: active
Все проекты создаются в общей базе данных. Каждая таблица имеет два префикса:
{тип}_{уровень}_{сущность}
Где:
тип = 3 буквы, код типа проекта (crm, mrk, pir...)
уровень = app | sol | prj | usr
сущность = имя таблицы (snake_case)
Примеры:
crm_app_users ← CRM, приложение, пользователи
crm_prj_clients ← CRM, проект, клиенты
pir_prj_orders ← Пиротехника, проект, заказы
mrk_sol_campaigns ← Маркетинг, решение, кампании
Все проекты платформы хранятся в одной базе NocoDB. Разделение — через префиксы.
┌─────────────────────────────────────────────────────────────────┐
│ ОБЩАЯ БАЗА ДАННЫХ │
├─────────────────────────────────────────────────────────────────┤
│ │
│ crm_app_users ← Пользователи CRM │
│ crm_prj_clients ← Клиенты (проект) │
│ crm_prj_orders ← Заказы (проект) │
│ │
│ mrk_app_settings ← Настройки маркетинга │
│ mrk_sol_campaigns ← Кампании (решение) │
│ mrk_prj_leads ← Лиды (проект) │
│ │
│ pir_prj_products ← Товары пиротехники │
│ pir_prj_categories ← Категории пиротехники │
│ │
└─────────────────────────────────────────────────────────────────┘
3-буквенный код типа проекта:
| Код | Тип | Описание |
|---|---|---|
crm |
CRM | Управление клиентами |
mrk |
Marketing | Маркетинг, рассылки |
pir |
Pirotehnika | Пиротехника (бизнес) |
lid |
LiderAvto | Автозапчасти (бизнес) |
ozn |
Ozon | Интеграция с Ozon |
anl |
Analytics | Аналитика |
doc |
Documents | Документы |
tsk |
Tasks | Задачи |
sys |
System | Системные |
Новый тип: Добавить в этот реестр при создании нового проекта.
| Код | Уровень | Владелец | Что хранится |
|---|---|---|---|
app |
Application | Приложение | Пользователи, настройки, логи |
sol |
Solution | Решение | Справочники, шаблоны, конфиги |
prj |
Project | Проект | Бизнес-данные: клиенты, заказы |
usr |
User | Пользователь | Персональные настройки |
┌─────────────────────────────────────────────────────────────────┐
│ УРОВНИ ДАННЫХ │
├─────────────────────────────────────────────────────────────────┤
│ │
│ {тип}_app_* Приложение Общие для типа проекта │
│ ↓ │
│ {тип}_sol_* Решение Справочники, конфигурация │
│ ↓ │
│ {тип}_prj_* Проект Бизнес-данные клиента │
│ ↓ │
│ {тип}_usr_* Пользователь Персональные данные │
│ │
└─────────────────────────────────────────────────────────────────┘
{тип}_{уровень}_{сущность}
Примеры:
crm_app_users ← CRM, приложение, пользователи
crm_sol_funnel_stages ← CRM, решение, этапы воронки
crm_prj_clients ← CRM, проект, клиенты
crm_usr_preferences ← CRM, пользователь, настройки
pir_prj_products ← Пиротехника, проект, товары
pir_prj_orders ← Пиротехника, проект, заказы
mrk_sol_templates ← Маркетинг, решение, шаблоны
mrk_prj_campaigns ← Маркетинг, проект, кампании
Если нужно несколько инстансов одного типа — добавляем суффикс:
{тип}_{уровень}_{сущность}_{инстанс}
Примеры:
crm_prj_clients_spb ← Клиенты CRM для СПб
crm_prj_clients_msk ← Клиенты CRM для Москвы
pir_prj_orders_retail ← Заказы розница
pir_prj_orders_opt ← Заказы опт
Общие для типа проекта: пользователи, настройки, логи.
| Таблица | Назначение |
|---|---|
crm_app_users |
Пользователи CRM |
crm_app_roles |
Роли и права |
crm_app_sessions |
Сессии авторизации |
crm_app_settings |
Настройки приложения |
crm_app_logs |
Логи действий |
sys_app_integrations |
Интеграции (системные) |
Справочники и конфигурация для типа бизнеса.
| Таблица | Назначение |
|---|---|
crm_sol_funnel_stages |
Этапы воронки |
crm_sol_segments |
Правила сегментов |
crm_sol_scenarios |
Сценарии обзвона |
mrk_sol_templates |
Шаблоны рассылок |
pir_sol_categories |
Категории пиротехники |
Бизнес-данные конкретного проекта/клиента.
| Таблица | Назначение |
|---|---|
crm_prj_clients |
Клиенты |
crm_prj_orders |
Заказы |
crm_prj_tasks |
Задачи |
crm_prj_messages |
Сообщения |
mrk_prj_campaigns |
Кампании |
pir_prj_products |
Товары пиротехники |
Персональные данные пользователя системы.
| Таблица | Назначение |
|---|---|
crm_usr_preferences |
Настройки UI |
crm_usr_favorites |
Избранное |
crm_usr_history |
История действий |
crm_usr_filters |
Сохранённые фильтры |
┌─────────────────────────────────────────────────────────────────┐
│ ИЕРАРХИЯ НАИМЕНОВАНИЙ │
├─────────────────────────────────────────────────────────────────┤
│ │
│ СИСТЕМА → Платформа целиком (dev-pro, production) │
│ ↓ │
│ СЕРВЕР → Физический/виртуальный сервер │
│ ↓ │
│ БАЗА → База данных NocoDB │
│ ↓ │
│ ТИП → Тип проекта (crm, mrk, pir) │
│ ↓ │
│ УРОВЕНЬ → app / sol / prj / usr │
│ ↓ │
│ ИНСТАНС → Конкретный экземпляр (spb, msk, retail) │
│ ↓ │
│ ТАБЛИЦА → Таблица с данными │
│ │
└─────────────────────────────────────────────────────────────────┘
| Система | Код | Назначение |
|---|---|---|
| dev-pro | dev |
Основная рабочая среда |
| production | prd |
Продакшен (когда будет) |
| staging | stg |
Тестирование |
| local | loc |
Локальная разработка |
По умолчанию: dev (dev-pro)
| Сервер | Код | IP | Назначение |
|---|---|---|---|
| dev-pro | dp1 |
91.218.142.168 | Основной |
| (резерв) | dp2 |
— | Резервный |
Формат hostname: {система}-{номер} → dev-pro-1
| База | Код | Назначение |
|---|---|---|
| main | main |
Основная (все проекты) |
| archive | arch |
Архивные данные |
| analytics | anlt |
Аналитика (отдельно) |
По умолчанию: main — все новые проекты создаются здесь.
Формат: {система}_{база} → dev_main, prd_main
Когда нужно несколько экземпляров одного типа:
| Инстанс | Код | Пример |
|---|---|---|
| По умолчанию | (без суффикса) | crm_prj_clients |
| По городу | spb, msk |
crm_prj_clients_spb |
| По типу | retail, opt |
pir_prj_orders_retail |
| По клиенту | acme, beta |
crm_prj_clients_acme |
ПОЛНЫЙ ПУТЬ К ТАБЛИЦЕ:
{система}.{база}.{тип}_{уровень}_{сущность}[_{инстанс}]
Примеры:
dev.main.crm_prj_clients ← CRM клиенты (основной инстанс)
dev.main.crm_prj_clients_spb ← CRM клиенты СПб
dev.main.pir_prj_orders ← Пиротехника заказы
prd.main.crm_prj_clients ← Продакшен CRM клиенты
# Дефолты для новых проектов
defaults:
system: dev # dev-pro
database: main # основная база
instance: null # без суффикса инстанса
# Результат: {тип}_{уровень}_{сущность}
# Пример: crm_prj_clients
| Контейнер | Формат имени | Пример |
|---|---|---|
| База данных | {тип}-db |
nocodb-db, pirofey-db |
| Приложение | {тип}-app |
mcrm-app, seller1-app |
| Сервис | {тип}-{сервис} |
mcrm-whatsapp, pir-sync |
| Сервис | Формат имени | Пример |
|---|---|---|
| Приложение | {тип}.service |
mcrm.service |
| Воркер | {тип}-worker.service |
mcrm-worker.service |
| Cron-задача | {тип}-{задача}.timer |
pir-sync.timer |
| Конфиг | Формат имени | Пример |
|---|---|---|
| Сайт | {домен} |
crm.0kt.ru |
| API | api.{домен} |
api.crm.0kt.ru |
| Субдомен | {тип}.{домен} |
piro.0kt.ru |
snake_case, единственное число для простых, множественное для коллекций
✅ Правильно:
prj_clients
prj_order_items
app_user_role
❌ Неправильно:
prj_Client
prj_orderItems
app_userRole
{level}_{entity1}_{entity2}
Примеры:
prj_client_tags ← связь клиентов и тегов
app_user_roles ← связь пользователей и ролей
Каждая таблица содержит:
| Поле | Тип | Назначение |
|---|---|---|
id |
UUID/INT | Первичный ключ |
created_at |
TIMESTAMP | Дата создания |
updated_at |
TIMESTAMP | Дата обновления |
created_by |
UUID | Кто создал (app_users.id) |
| Старое имя | Новое имя | Уровень |
|---|---|---|
Clients |
prj_clients |
Project |
Tasks |
prj_tasks |
Project |
Orders |
prj_orders |
Project |
Messages |
prj_messages |
Project |
Users |
app_users |
App |
Settings |
app_settings |
App |
-- Переименование таблиц в NocoDB
ALTER TABLE "Clients" RENAME TO "prj_clients";
ALTER TABLE "Tasks" RENAME TO "prj_tasks";
ALTER TABLE "Orders" RENAME TO "prj_orders";
Для нескольких проектов в одной БД используем полный формат:
prj_{solution}_{project}_{entity}
Примеры (решение piro, два проекта):
prj_piro_salut_clients ← Клиенты "Салюты СПб"
prj_piro_moscow_clients ← Клиенты "Пиро Москва"
Или отдельные базы/схемы:
База: mcrm_salut
prj_clients
prj_orders
База: mcrm_moscow
prj_clients
prj_orders
# solutions/piro-crm/config.yaml
database:
prefix:
app: app_
solution: sol_
project: prj_
user: usr_
# solutions/piro-crm/entities/client.yaml
entity: client
table: clients # Итоговое имя: prj_clients
level: project # Определяет префикс
NocoDB Base: mcrm_production
├── app_users
├── app_roles
├── app_settings
├── app_logs
│
├── sol_funnel_stages
├── sol_segments
├── sol_categories
│
├── prj_clients ← Основные бизнес-данные
├── prj_orders
├── prj_tasks
├── prj_messages
│
└── usr_preferences
# Скрипт проверки именования таблиц
python3 system/scripts/check_table_names.py
# Вывод:
# ✅ prj_clients - OK
# ✅ app_users - OK
# ❌ Clients - должно быть prj_clients
# ❌ UserSettings - должно быть usr_settings
system/apps/mcrm/CLAUDE.mdsolutions/*/config.yamlprojects/*/project.yamlВерсия: 1.0.0