Документация проекта
K14 Салон красоты — документация проекта
Slug: k14-beauty-salon · Project ID: 53 · Name: K14-beauty-salon-oc
Сгенерировано: 2026-09-04 (живой сбор через codedocs MCP, прогон doc-k14)
Портфель: карта K14-oc2 (~/prj/smb/cases/k14-beauty-salon.md, кейс 2.5) — записная книжка салона: каталог+остатки, POS-продажи, депозиты/сторно, напоминания, витрина отзывов.
Проект опубликован: project_settings_get.isPublished = true, baseCurrency RUB, timezone Europe/Moscow.
⚠️ Контаминация проекта (dev-report §51, 04.09.2026): в проект легли артефакты сборки К17/philibakery — правила 266/268–273, дашборды 1550–1552, форма 1555, таблицы 1540–1549, 1553–1554. Публичный namespace унаследовал старый slug (dev-report §52) — URL вида
…/public/k14-beauty-salon/…живые, curl подтвердил 200.
1. Дерево объектов
Всего узлов: 60 (46 dataTable, 8 dashboard, 5 form, 1 site). Иерархии нет — все узлы верхнего уровня (parentId=null). Документов (type=document) в дереве нет (до публикации этой документации).
ID | Тип | Название | Slug | Опубл. |
|---|---|---|---|---|
1496 | dataTable | Каталог |
| ✅ (k14) |
1497 | dataTable | Отзывы (витрина) |
| — (k14) |
1498 | dataTable | Счета |
| — (k14) |
1499 | dataTable | Строки счёта |
| — (k14) |
1500 | dataTable | Платежи |
| — (k14) |
1501 | dataTable | Кредит-нота |
| — (k14) |
1502 | dataTable | Депозит клиента |
| — (k14) |
1503 | dataTable | Точки |
| — (k14) |
1504 | dataTable | Движения склада |
| ✅ (k14) |
1505 | dataTable | Продажи (касса) |
| — (k14) |
1506 | dataTable | Строки продажи |
| — (k14) |
1507 | dataTable | Служебный справочник |
| — (k14) |
1508 | dataTable | Навыки |
| — (k14) |
1509 | dataTable | Навыки мастера |
| — (k14) |
1510 | dataTable | Шаблоны смен |
| — (k14) |
1511 | dataTable | Смены |
| — (k14) |
1512 | dataTable | Доступность |
| — (k14) |
1513 | dataTable | Отгулы |
| — (k14) |
1514 | dataTable | Покрытие смен |
| — (k14) |
1515 | dataTable | Подмена смен |
| — (k14) |
1516 | dataTable | Услуги |
| ✅ (k14) |
1517 | dataTable | Записи |
| — (k14) |
1518 | dataTable | Мастера |
| ✅ (k14) |
1519 | dataTable | Отзывы |
| — (k14) |
1520 | dataTable | Депозиты (журнал, не используется) |
| — (k14) |
1521 | dataTable | Клиенты |
| — (k14) |
1522 | dashboard | Дебиторка |
| — (k14) |
1523 | dashboard | Склад |
| — (k14) |
1524 | dashboard | Продажи |
| — (k14) |
1525 | site | Сайт записи |
| — (k14) |
1526 | dataTable | Подтверждения визита |
| — (k14) |
1527 | dataTable | Заявки на сторно |
| — (k14) |
1528 | dataTable | Депозиты |
| — (k14) |
1529 | form | Запись на услугу |
| ✅ (k14) |
1530 | form | Подтвердить визит |
| ✅ (k14) |
1531 | form | Оформить сторно |
| ✅ (k14) |
1532 | form | Отзыв о мастере |
| ✅ (k14) |
1533 | dashboard | Салон: KPI |
| — (k14) |
1534 | dashboard | Сторно и возвраты |
| — (k14) |
1535 | dataTable | Region |
| — (k14) |
1536 | dataTable | Customer group |
| — (k14) |
1537 | dataTable | Прайс-лист |
| — (k14) |
1538 | dataTable | Fx rate |
| — (k14) |
1539 | dataTable | Налоговые ставки |
| — (k14) |
1540 | dataTable | Движения склада (ДУБЛЬ install — не использовать) |
| — (k17⚠️) |
1541 | dataTable | Рецептура |
| — (k17⚠️) |
1542 | dataTable | Строка рецептуры |
| — (k17⚠️) |
1543 | dataTable | Производственный заказ |
| — (k17⚠️) |
1544 | dataTable | Производственная партия |
| ✅ (k17⚠️) |
1545 | dataTable | Суточный расход материалов |
| — (k17⚠️) |
1546 | dataTable | Строка расхода материалов |
| — (k17⚠️) |
1547 | dataTable | Поставщики |
| — (k17⚠️) |
1548 | dataTable | Заказ поставщику |
| ✅ (k17⚠️) |
1549 | dataTable | Строка заказа |
| — (k17⚠️) |
1550 | dashboard | Склад |
| ✅ (k17⚠️) |
1551 | dashboard | Производство |
| ✅ (k17⚠️) |
1552 | dashboard | Закупки |
| ✅ (k17⚠️) |
1553 | dataTable | Очередь дозаказа |
| — (k17⚠️) |
1554 | dataTable | Быстрый ввод |
| — (k17⚠️) |
1555 | form | Быстрый ввод (склад) |
| — (k17⚠️) |
2. Таблицы (схемы + счётчики)
Суммарно строк: 132 по 46 таблицам (посчитано выборкой datatable_get_rows limit=500, hasMore=false везде).
2.1 Ядро K14 (запись/POS/депозиты/расписание)
1496 · Каталог (catalog) — 13 колонок, 11 строк
справочник товаров/услуг с остатками (ledger-колонка on_hand)
Колонка | Тип | Название |
|---|---|---|
| text (unique) | Артикул |
| text | Название |
| rollup | Средняя оценка |
| rollup | Отзывов |
| balance | В наличии |
| number | Точка заказа |
| number | Партия заказа |
| currency | Цена закупа |
| currency | Цена продажи |
| reference | Поставщик по умолчанию |
| formula | Нужен дозаказ |
| date | Последний дозаказ |
| select | Категория |
1497 · Отзывы (витрина) (review) — 5 колонок, 0 строк
витрина одобренных отзывов
Колонка | Тип | Название |
|---|---|---|
| reference | Товар |
| rating | Оценка |
| text | Автор |
| multilineText | Отзыв |
| datetime | Отправлено |
1498 · Счета (invoice) — 16 колонок, 2 строк
счета
Колонка | Тип | Название |
|---|---|---|
| sequence | Счёт № |
| reference | Клиент |
| reference | Компания |
| date | Дата выставления |
| date | Срок оплаты |
| date | Начало периода |
| text | Налоговая юрисдикция |
| rollup | Подытог |
| rollup | Платежи |
| rollup | Кредит-ноты |
| rollup | Налог |
| formula | Итого |
| formula | К оплате |
| formula | Просрочка |
| status | Статус |
| multilineText | Заметки |
1499 · Строки счёта (invoice-line) — 13 колонок, 0 строк
строки счетов
Колонка | Тип | Название |
|---|---|---|
| reference | Счёт |
| reference | Товар |
| text | Описание |
| number | Кол-во |
| currency | Цена |
| formula | Сумма |
| reference | Подписка |
| date | Начало периода |
| date | Конец периода |
| text | Налоговая категория |
| formula | Ставка налога |
| formula | Налог |
| formula | Сумма с налогом |
1500 · Платежи (payment) — 7 колонок, 0 строк
платежи
Колонка | Тип | Название |
|---|---|---|
| reference | Счёт |
| currency | Сумма |
| select | Тип |
| formula | Эффект |
| select | Способ |
| date | Дата оплаты |
| text | Ссылка / транзакция |
1501 · Кредит-нота (credit-note) — 7 колонок, 0 строк
кредит-ноты
Колонка | Тип | Название |
|---|---|---|
| sequence | Кредит-нота № |
| reference | Счёт |
| currency | Сумма |
| formula | Эффект |
| select | Причина |
| date | Дата |
| multilineText | Заметки |
1502 · Депозит клиента (customer-credit) — 10 колонок, 0 строк
кредит клиентов (депозит)
Колонка | Тип | Название |
|---|---|---|
| reference | Клиент |
| number | Сумма |
| select | Тип |
| reference | Счёт |
| reference | Кредит-нота |
| date | Дата операции |
| status | Статус |
| reference (unique) | Сторнирует |
| multilineText | Примечание |
| reference | Объект |
1503 · Точки (location) — 8 колонок, 0 строк
точки салона
Колонка | Тип | Название |
|---|---|---|
| text (unique) | Код |
| text | Название |
| select | Часовой пояс |
| text | Адрес |
| number | Широта |
| number | Долгота |
| reference | Родительская локация |
| geofence | Геозона |
1504 · Движения склада (inventory-stock-movement) — 13 колонок, 28 строк
движения склада (живой balance)
Колонка | Тип | Название |
|---|---|---|
| reference | Товар |
| number | Кол-во |
| select | Тип движения |
| reference | Склад |
| date | Дата операции |
| text | Документ |
| status | Статус |
| reference (unique) | Сторнирует |
| multilineText | Примечание |
| number | Себестоимость ед. |
| rollup | Остаток партии |
| reference | Партия списания |
| reference | Строка расхода |
1505 · Продажи (касса) (sale) — 21 колонок, 5 строк
чеки кассы
Колонка | Тип | Название |
|---|---|---|
| sequence | Чек № |
| reference | Клиент |
| datetime | Дата продажи |
| reference | Магазин |
| rollup | Итого |
| rollup | НДС итого |
| select | Способ оплаты |
| status | Статус |
| multilineText | Заметки |
| text | Имя покупателя |
| Эл. почта | |
| phone | Телефон |
| text | Номер заказа |
| select | Статус оплаты |
| text | Платёж (ссылка) |
| text | Платёжный провайдер |
| currency | Комиссия |
| currency | К зачислению |
| text | Промокод |
| currency | Скидка |
| boolean | Счёт создан |
1506 · Строки продажи (sale-line) — 8 колонок, 8 строк
строки чеков
Колонка | Тип | Название |
|---|---|---|
| reference | Чек |
| reference | Товар |
| number | Кол-во |
| currency | Цена |
| formula | Сумма |
| number | Ставка НДС, % |
| formula | НДС |
| formula | Кол-во (минус) |
1507 · Служебный справочник (directory-aux) — 6 колонок, 0 строк
служебный справочник
Колонка | Тип | Название |
|---|---|---|
| person | Сотрудник |
| text | Имя |
| text | Отчество |
| text | Фамилия |
| formula | Полное имя |
| reference | Руководитель |
1508 · Навыки (skill) — 5 колонок, 0 строк
навыки
Колонка | Тип | Название |
|---|---|---|
| text (unique) | Код |
| text | Название |
| select | Требует сертификации |
| select | Отслеживать срок |
| select | Перерыв по умолчанию |
1509 · Навыки мастера (person-skill) — 6 колонок, 0 строк
навыки мастеров
Колонка | Тип | Название |
|---|---|---|
| person | Сотрудник |
| reference | Навык |
| date | Дата сертификации |
| date | Истекает |
| select | Уровень |
| status | Статус |
1510 · Шаблоны смен (template) — 10 колонок, 0 строк
шаблоны смен
Колонка | Тип | Название |
|---|---|---|
| text (unique) | Код |
| text | Название |
| reference | Локация |
| reference | Требуемый навык |
| text | Начало |
| text | Конец |
| recurrence | Повторение |
| select | Перерыв |
| number | Кол-во сотрудников |
| currency | Ставка (переопр.) |
1511 · Смены (schedule) — 10 колонок, 4 строк
смены
Колонка | Тип | Название |
|---|---|---|
| person | Сотрудник |
| reference | Локация |
| reference | Роль / навык |
| datetime | Начало |
| datetime | Конец |
| reference | Из шаблона |
| number | Перерыв (мин) |
| status | Статус |
| currency | Ставка (переопр.) |
| multilineText | Заметки |
1512 · Доступность (availability) — 7 колонок, 0 строк
доступность
Колонка | Тип | Название |
|---|---|---|
| person | Сотрудник |
| date | Действует с |
| date | Действует по |
| multiSelect | Дни недели |
| text | Начало окна |
| text | Конец окна |
| select | Предпочтение |
1513 · Отгулы (time-off) — 7 колонок, 1 строк
отгулы
Колонка | Тип | Название |
|---|---|---|
| person | Сотрудник |
| select | Тип |
| date | Начало |
| date | Конец |
| number | Часы (неполный день) |
| multilineText | Причина |
| status | Статус |
1514 · Покрытие смен (coverage) — 8 колонок, 0 строк
покрытие смен
Колонка | Тип | Название |
|---|---|---|
| reference | Локация |
| reference | Требуемый навык |
| datetime | Начало |
| datetime | Конец |
| recurrence | Повторение |
| number | Мин. кол-во |
| number | Целевое кол-во |
| status | Статус |
1515 · Подмена смен (swap) — 6 колонок, 1 строк
подмены
Колонка | Тип | Название |
|---|---|---|
| reference | Исходная смена |
| select | Тип |
| person | Передаёт |
| person | Принимает |
| reference | Встречная смена |
| status | Статус |
1516 · Услуги (service) — 12 колонок, 6 строк
услуги (публичная)
Колонка | Тип | Название |
|---|---|---|
| text (unique) | Код |
| text | Название |
| text | Категория |
| multilineText | Описание |
| number | Длительность (мин) |
| number | Буфер до (мин) |
| number | Буфер после (мин) |
| currency | Цена по умолч. |
| boolean | Популярное |
| reference | Требуемый навык |
| select | Онлайн-запись |
| select | Подтверждение |
1517 · Записи (appointment) — 18 колонок, 14 строк
записи клиентов — центральный объект
Колонка | Тип | Название |
|---|---|---|
| person | Клиент |
| text | Телефон клиента |
| reference | Услуга |
| person | Исполнитель |
| reference | Локация |
| datetime | Начало |
| datetime | Конец |
| currency | Цена |
| select | Подтверждение |
| select | Источник |
| status | Статус |
| multilineText | Заметки |
| text | Имя клиента |
| Email клиента | |
| boolean | Депозит зафиксирован |
| text | Ключ слота |
| sequence | Номер записи |
| formula | Сумма депозита |
1518 · Мастера (practitioner) — 8 колонок, 4 строк
мастера
Колонка | Тип | Название |
|---|---|---|
| text | Имя |
| text | |
| text | Должность |
| text | Фото |
| multilineText | О себе |
| rollup | Средняя оценка |
| rollup | Отзывов |
| text | Телефон |
1519 · Отзывы (review-2) — 8 колонок, 4 строк
отзывы (модерация)
Колонка | Тип | Название |
|---|---|---|
| reference | Мастер |
| rating | Оценка |
| text | Автор |
| multilineText | Отзыв |
| reference | Услуга |
| text | Запись |
| datetime | Отправлен |
| Email клиента |
1520 · Депозиты (журнал, не используется) (ledger) — 6 колонок, 0 строк
ДУБЛЬ core_ledger от install — any-edit deadlock (dev-report §44), не использовать
Колонка | Тип | Название |
|---|---|---|
| reference | Объект |
| number | Сумма |
| date | Дата операции |
| status | Статус |
| reference (unique) | Сторнирует |
| multilineText | Примечание |
1521 · Клиенты (customer) — 12 колонок, 5 строк
клиенты
Колонка | Тип | Название |
|---|---|---|
| text | Имя |
| ||
| phone | Телефон |
| multilineText | Адрес |
| externalPerson | Личный кабинет |
| select | Источник |
| number | Бонусные баллы |
| boolean | Согласие на рассылки |
| person | Ответственный |
| multilineText | Заметки |
| rollup | Дебиторка |
| balance | Доступный кредит |
1526 · Подтверждения визита (podtverzhdeniya-vizita) — 5 колонок, 3 строк
подтверждения визита (мишень формы)
Колонка | Тип | Название |
|---|---|---|
| text (unique) | Номер записи |
| text | Имя клиента |
| Email клиента | |
| datetime | Дата подтверждения |
| formula (unique) | Ключ (запись+email) |
1527 · Заявки на сторно (zayavki-na-storno) — 8 колонок, 3 строк
заявки на сторно (мишень формы)
Колонка | Тип | Название |
|---|---|---|
| text (unique) | Номер чека |
| text | Имя клиента |
| Email клиента | |
| number | Сумма возврата, ₽ |
| multilineText | Причина |
| person | Ответственный |
| status | Статус |
| formula (unique) | Ключ (чек+email) |
1528 · Депозиты (depozity) — 7 колонок, 11 строк
журнал депозитов/списаний — обход any-edit deadlock core_ledger 1520 (dev-report §44)
Колонка | Тип | Название |
|---|---|---|
| Email клиента | |
| text | Номер записи |
| number | Сумма, ₽ |
| select | Направление |
| date | Дата |
| status | Статус |
| multilineText | Примечание |
1535 · Region (region) — 2 колонок, 0 строк
foundation: регионы
Колонка | Тип | Название |
|---|---|---|
| text (unique) | Код |
| text | Название |
1536 · Customer group (customer-group) — 2 колонок, 0 строк
foundation: группы клиентов
Колонка | Тип | Название |
|---|---|---|
| text (unique) | Код |
| text | Название |
1537 · Прайс-лист (price-list) — 10 колонок, 0 строк
foundation: прайс-листы
Колонка | Тип | Название |
|---|---|---|
| reference | Товар |
| reference | Регион |
| reference | Группа клиентов |
| number | Кол-во от |
| number | Кол-во до |
| date | Действует с |
| date | Действует по |
| currency | Цена |
| select | Валюта |
| status | Статус |
1538 · Fx rate (fx-rate) — 6 колонок, 0 строк
foundation: курсы валют
Колонка | Тип | Название |
|---|---|---|
| select | Из валюты |
| select | В валюту |
| number | Курс |
| date | Действует с |
| date | Действует по |
| select | Источник |
1539 · Налоговые ставки (tax-rate) — 4 колонок, 0 строк
foundation: налоговые ставки
Колонка | Тип | Название |
|---|---|---|
| text | Юрисдикция |
| text | Категория |
| number | Ставка |
| date | Действует с |
2.2 Артефакты К17, попавшие в проект (не использовать без ревью)
1540 · Движения склада (ДУБЛЬ install — не использовать) (inventory-stock-movement-2) — 12 колонок, 0 строк
Колонка | Тип | Название |
|---|---|---|
| reference | Товар |
| number | Кол-во |
| select | Тип движения |
| reference | Склад |
| date | Дата операции |
| text | Документ |
| status | Статус |
| reference (unique) | Сторнирует |
| multilineText | Примечание |
| number | Себестоимость ед. |
| rollup | Остаток партии |
| reference | Партия списания |
1541 · Рецептура (bom) — 5 колонок, 2 строк
Колонка | Тип | Название |
|---|---|---|
| text | Название |
| reference | Изделие |
| number | Выход |
| boolean | Активна |
| multilineText | Заметки |
1542 · Строка рецептуры (bom-line) — 3 колонок, 5 строк
Колонка | Тип | Название |
|---|---|---|
| reference | Спецификация |
| reference | Компонент |
| number | Расход |
1543 · Производственный заказ (production-order) — 7 колонок, 1 строк
Колонка | Тип | Название |
|---|---|---|
| sequence | Заказ № |
| reference | Спецификация |
| number | К выпуску |
| date | Дата выпуска |
| reference | Склад |
| status | Статус |
| multilineText | Заметки |
1544 · Производственная партия (production-batch) — 12 колонок, 2 строк
Колонка | Тип | Название |
|---|---|---|
| sequence | Партия № |
| reference | Спецификация |
| number | Кол-во |
| reference | Склад |
| date | Дата производства |
| lookup | Выход |
| rollup | Стоимость материалов |
| formula | Стоимость на единицу |
| status | Статус |
| multilineText | Заметки |
| boolean | Спецификация раскрыта |
| boolean | Себестоимость посчитана |
1545 · Суточный расход материалов (daily-material-consumption) — 5 колонок, 0 строк
Колонка | Тип | Название |
|---|---|---|
| date | Дата |
| reference | Материал |
| reference | Склад |
| number | Всего |
| boolean | Распределено |
1546 · Строка расхода материалов (material-consumption-line) — 10 колонок, 4 строк
Колонка | Тип | Название |
|---|---|---|
| reference | Партия |
| reference | Компонент |
| number | План |
| number | Факт |
| boolean | Распределено |
| number | Стоимость |
| boolean | Списано |
| reference | Склад |
| reference | Дневной расход |
| lookup | Дата производства |
1547 · Поставщики (vendor) — 8 колонок, 2 строк
Колонка | Тип | Название |
|---|---|---|
| text | Название |
| ||
| phone | Телефон |
| multilineText | Адрес |
| text | ИНН |
| select | Условия оплаты |
| person | Ответственный |
| multilineText | Заметки |
1548 · Заказ поставщику (purchase-order) — 8 колонок, 1 строк
Колонка | Тип | Название |
|---|---|---|
| sequence | Заказ № |
| reference | Поставщик |
| date | Дата заказа |
| date | Ожидается |
| reference | Склад |
| rollup | Итого |
| status | Статус |
| multilineText | Заметки |
1549 · Строка заказа (purchase-order-line) — 5 колонок, 3 строк
Колонка | Тип | Название |
|---|---|---|
| reference | Заказ |
| reference | Товар |
| number | Кол-во |
| currency | Цена закупки |
| formula | Сумма |
1553 · Очередь дозаказа (ochered-dozakaza) — 6 колонок, 1 строк
Колонка | Тип | Название |
|---|---|---|
| reference | Позиция |
| number | Количество |
| currency | Цена закупа |
| reference | Заказ |
| boolean | В заказе |
| button | В заказ |
1554 · Быстрый ввод (bystryy-vvod) — 9 колонок, 1 строк
Колонка | Тип | Название |
|---|---|---|
| select | Операция |
| text | Позиция (текст) |
| number | Количество, кг |
| text | Поставщик (текст) |
| currency | Цена, ₽ |
| reference | Позиция (связь) |
| reference | Поставщик (связь) |
| boolean | Подтвердить |
| boolean | Обработано |
3. Автоматизации
13 правил на 9 таблицах, все enabled: true (проверка живьём; помнить dev-report §51: active в мета не диагностичен). Правила 266, 268–273 — из сборки К17 (contamination).
Rule | Таблица | Название | Триггер | Действия | Статус |
|---|---|---|---|---|---|
None | 1496 Каталог | Остаток ниже точки заказа → Очередь дозаказа | schedule cron | create_row → set_fields | enabled |
None | 1505 Продажи (касса) | Продажа завершена → списание со склада | status_transition open→completed | create_rows_from_source | enabled |
None | 1517 Записи | Списание депозита при no-show | status_transition *→no_show | create_row | enabled |
None | 1517 Записи | Напоминание о визите за 24 часа | schedule cron | send_email | enabled |
None | 1517 Записи | Фиксация депозита при записи | event create + 2 усл. | create_row → set_fields | enabled |
None | 1527 Заявки на сторно | Сторно: записать ответственного | event create | set_fields | enabled |
None | 1527 Заявки на сторно | Сторно: уведомить администратора | event update | notify_user | enabled |
None | 1544 Производственная партия ⚠️k17 | Создать строки расхода из спецификации | event create + 1 усл. | create_rows_from_source | enabled |
None | 1544 Производственная партия ⚠️k17 | Списать материалы (FIFO) | manual + 1 усл. | post_ledger_fifo | enabled |
None | 1545 Суточный расход материалов ⚠️k17 | Распределить дневной расход по строкам | manual + 1 усл. | allocate_across | enabled |
None | 1548 Заказ поставщику ⚠️k17 | Приёмка заказа → приходные движения | status_transition ordered→received | create_rows_from_source | enabled |
None | 1553 Очередь дозаказа ⚠️k17 | Очередь → строка заказа поставщику | manual + 1 усл. | set_fields → create_row | enabled |
None | 1554 Быстрый ввод ⚠️k17 | Быстрый ввод → черновик движения | event update + 1 усл. | create_row → set_fields | enabled |
Детали:
269 (Каталог→Очередь дозаказа): schedule 05:00 MSK, условие needs_reorder=true + флаг last_reorder_issued против $today (защита от повторного огня). Действия: create_row в 1553 + set_fields DATEADD флага.
271 (Продажи→склад): status_transition open→completed, create_rows_from_source в Движения склада (1504) с qty_neg (списание), movement_kind=issue, runOnAutomation.
265 (Записи no-show→депозит): transition →no_show, create_row в Депозиты (1528) direction=списание, status=draft.
259 (Записи): напоминание за 24ч — schedule 18:00, условие start dateEquals $tomorrow и НЕ cancelled; send_email колонке customer_email. ⚠️ Доставка email не подтверждена без SMTP-коннектора (dev-report §2) — «ложный succeeded».
263 (Записи): фиксация депозита on create при deposit_amount>0 и deposit_issued≠true → create_row в 1528 (депозит 30%).
264 (Сторно): on create set_fields assignee=постоянный internal-пользователь (picked email delivered+admin@resend.dev).
261 (Сторно): on update changedColumnIds=[assignee] → notify_user.
266/268 (Партия): explode спецификации (create_rows_from_source с scale numerator/denominator) и FIFO-списание (post_ledger_fifo против balance catalog.on_hand). ⚠️ k17.
267 (Суточный расход): allocate_across по весам planned_qty в строки расхода 1546. ⚠️ k17.
270 (Заказ поставщику): transition ordered→received → приходные движения из строк заказа. ⚠️ k17.
272 (Очередь дозаказа): manual, set is_issued + create_row строки заказа 1549. ⚠️ k17.
273 (Быстрый ввод): update confirm=true → create_row движения adjustment в 1504. ⚠️ k17.
4. Формы
1529 · Запись на услугу (zapis-na-uslugu) → target datatable 1517, submitAccess=everyone, published=True, URL: https://smb.farhome.ru/public/k14-beauty-salon/zapis-na-uslugu
Поля: Ваше имя, Email, Телефон, Услуга, Дата и время, Комментарий
1530 · Подтвердить визит (podtverdit-vizit) → target datatable 1526, submitAccess=everyone, published=True, URL: https://smb.farhome.ru/public/k14-beauty-salon/podtverdit-vizit
Поля: Номер записи, Email, Дата подтверждения
1531 · Оформить сторно (oformit-storno) → target datatable 1527, submitAccess=everyone, published=True, URL: https://smb.farhome.ru/public/k14-beauty-salon/oformit-storno
Поля: Номер чека, Имя, Email, Сумма, ₽, Причина
1532 · Отзыв о мастере (otzyv-o-mastere) → target datatable 1519, submitAccess=everyone, published=True, URL: https://smb.farhome.ru/public/k14-beauty-salon/otzyv-o-mastere
Поля: Имя, Email, Мастер, Оценка, Отзыв
1555 · Быстрый ввод (склад) (bystryy-vvod-sklad) ⚠️ артефакт К17 → target datatable 1554, submitAccess=—, published=None, URL: нет (не опубликована)
Поля: Операция, Позиция, Количество, кг, Поставщик, Цена, ₽
5. Дашборды
1522 · Дебиторка (debitorka): 3 панелей (bind: 1498), published=False, URL: —
1523 · Склад (sklad): 3 панелей (bind: 1496), published=False, URL: —
1524 · Продажи (prodazhi): 5 панелей (bind: 1505, 1506), published=False, URL: —
1533 · Салон: KPI (salon-kpi): 4 панелей (bind: 1505, 1517, 1518; слайсеры: 1), published=False, URL: —
1534 · Сторно и возвраты (storno-i-vozvraty): 2 панелей (bind: 1527; слайсеры: 1), published=False, URL: —
1550 · Склад (sklad-2) ⚠️ К17: 2 панелей (bind: 1496, 1504; слайсеры: 1), published=True, URL: https://smb.farhome.ru/public/k14-beauty-salon/sklad-2
1551 · Производство (proizvodstvo) ⚠️ К17: 3 панелей (bind: 1544), published=True, URL: https://smb.farhome.ru/public/k14-beauty-salon/proizvodstvo
1552 · Закупки (zakupki) ⚠️ К17: 3 панелей (bind: 1548), published=True, URL: https://smb.farhome.ru/public/k14-beauty-salon/zakupki
6. Документы-шаблоны
В doc_tree узлов типа document нет — шаблонов документов в проекте 0, проверка литеральных токенов {{col.*}} не проводилась (нечего). Автоматизации используют send_email bodyHtml с токенами {{col.*}} — они подставляются рантаймом (в теле правила это ожидаемая форма, не дефект).
7. Публичный контур
Проверка анонимным GET (urllib, без куки) 2026-09-04:
Объект | Slug | Статус |
|---|---|---|
dataTable 1496 Каталог |
| 200 |
dataTable 1504 Движения склада |
| 200 |
dataTable 1516 Услуги |
| 200 |
dataTable 1518 Мастера |
| 200 |
form 1529 Запись на услугу |
| 200 |
form 1530 Подтвердить визит |
| 200 |
form 1531 Оформить сторно |
| 200 |
form 1532 Отзыв о мастере |
| 200 |
dataTable 1544 Производственная партия |
| 200 |
dataTable 1548 Заказ поставщику |
| 200 |
dashboard 1550 Склад |
| 200 |
dashboard 1551 Производство |
| 200 |
dashboard 1552 Закупки |
| 200 |
Замечания:
Сайт записи 1525 (sayt-zapisi, mode=booking, bookingDocumentId=1517): НЕ опубликован — publicUrlBlocked: document_not_published, publicUrl=null. Для работы бронирования нужно doc_upsert с isPublished (и проверить visibility колонок appointment перед публикацией, dev-report §23).
Опубликованные dataTable 1496/1504/1516/1518/1544/1548 отдают публичный API; колонки с чувствительными данными закрывались data_table_set_meta.columnVisibility (dev-report §23, для таблиц 1033–1040 прежней сборки — для текущих id статус visibility-политики не проверялся детально, открытый вопрос).
Дубли: склад-дашборд 1523 (K14, неопубликован) vs 1550 (K17-принос, опубликован); inventory-stock-movement 1504 (живой balance) vs 1540 ДУБЛЬ install.
8. Грабли проекта (из dev-report/error.md по «k14»)
§44 any-edit deadlock core_ledger 1520: parent_ref без referenceDocumentId, patch отклоняется валидатором по ПРЕДпатчному состоянию — чинить нельзя, только своя таблица без purpose (обход применён: 1528 «Депозиты»).
§45 install_modules положил в core_sale битый rollup tax_total — блок любой patch таблицы до починки.
§46 unresolved ref core_sale.customer→core_customer: патч не персистит referenceDocumentId без referenceDisplayColumnId, create_row падает post-factum.
§47 pos_sales: переход чека in completed НЕ порождает списание — закрыто правилом 271 (status_transition + create_rows_from_source qty_neg).
§48 unique:true на колонке — гейт повторной отправки формы (используются формы с id-колонками).
§51 правила из install_modules сохраняются active:null и молчат до automation_set_meta {ruleId, active:true}; automation_get_meta всегда отдаёт active:null — только живой прогон доказывает работу.
§52 публичный namespace наследует старый slug переименованного проекта — ссылки брать из живого doc_get.publicUrl.
§54 / §51-к17 сборка philibakery (id 42) писала в этот проект (id 53): 60 документов вместо 39. Артефакты К17 в дереве помечены ⚠️.
§6 публикация документа НЕ публикует проект (но здесь проект уже isPublished=true — проверено).
§9 doc_upsert на UPDATE тела — тихий no-op; путь CREATE (без documentId) пишет тело корректно.
§2 email-доставка без SMTP-коннектора даёт ложный succeeded у send_email — правило 259 (напоминания) не подтверждено приёмкой.
E59/E63 (счета) — из прежних карт; в текущем дереве таблиц счетов с дуплями нет (1498 Счета 0 строк).
§23 публикация таблицы открывает ВСЕ колонки анонимам без columnVisibility.
Нет примитива status transition из действия (§25): no-show/подтверждение — руками 👤; нет авто-чека по записи; conflict-защита booking не покрывается exclusive_scheduling (dev-report, двойная запись на один слот подтверждена живьём — обход: unique-ключ слота §48).
9. Открытые вопросы
Что делать с контминацией К17: архивировать 16 объектов (1540–1555) или переносить в philibakery? Требуется решение владельца (dev-report §51).
Сайт записи 1525 не опубликован — ключевой публичный контур кейса 2.5 не завернут.
Таблица 1520 (core_ledger ДУБЛЬ) и 1540 (движения ДУБЛЬ) — кандидаты на архив.
Правило 264 жёстко зашито на email delivered+admin@resend.dev (placeholder) — заменить на реального администратора.
Доставка email (правило 259) не верифицирована: нет SMTP-коннектора.
columnVisibility опубликованных таблиц (1496, 1516, 1518, …) детально не аудитирована на PII.
Публичный доступ
Настоящая документация опубликована на платформе как «Документация проекта» (type=document, isPublished=true, stateId=draft); актуальный documentId — в живом doc_tree (на 04.09 после чистки — 1744; при каждой перепубликации id меняется: doc_upsert с documentId тело не персистит (§9), перепубликация = archive + create; slug/URL стабильны).
publicUrl: https://smb.farhome.ru/public/k14-beauty-salon/dokumentatsiya-proekta — анонимный GET → 200.
Проверка тела после create (dev-report §9): doc_get_content.markdown содержит весь контент; расхождения только косметические (нормализация таблиц/курсива платформой).
Проект уже был isPublished=true (project_settings_get) — патч проекта не потребовался (dev-report §6 обход не понадобился).
Чистка (2026-09-04)
Указание владельца платформы: архивация всех пустых и неиспользуемых таблиц проекта (мягкое удаление doc_archive). Артефакты К17 (⚠️) проверялись на общих основаниях. Формы, правила, дашборды, сайт, документы — не тронуты.
Методика: живая проверка пустоты каждой из 46 таблиц (datatable_get_rows limit=1) + живой граф использования: цели форм (form_get_meta.targetDocumentId), панели/слайсеры дашбордов (dashboard_get_meta), правила по таблице и документId в действиях (automation_get_meta по всем таблицам), колонки reference/rollup из схем выживших таблиц, сайт (bookingDocumentId). Неиспользуемые таблицы архивировались итеративно до фиксации (каскад: таблица, на которую ссылалась только архивированная таблица, тоже архивировалась). Ни одна кандидатная таблица не была опубликована / portalExposed / accessRestricted (публичный контур не затронут). В archivedIds ответов — по одному id, каскада на подузлы не было (листья).
Архивировано — 17 таблиц
Пустые (13): 1502 Депозит клиента · 1507 Служебный справочник · 1509 Навыки мастера · 1510 Шаблоны смен · 1512 Доступность · 1514 Покрытие смен · 1520 Депозиты (журнал, ДУБЛЬ core_ledger) · 1535 Region · 1536 Customer group · 1537 Прайс-лист · 1538 Fx rate · 1539 Налоговые ставки · 1540 Движения склада (ДУБЛЬ install) ⚠️k17
Архив с данными (4, не использовались ни одним объектом): 1511 Смены (4 строки; потеряла единственного пользователя — 1515) · 1513 Отгулы (1 строка) · 1515 Подмена смен (1 строка) · 1543 Производственный заказ ⚠️k17 (1 строка)
Каскад rounds: 1-й раунд — 1502, 1507, 1509, 1512, 1513, 1514, 1515, 1520, 1535–1540, 1543; 2-й — 1510, 1511 (после архивации ссылавшихся на них 1515/1511→шаблон/смены).
Сохранено (29 таблиц), причины
Пустые, но используются: 1497 Отзывы (витрина) — rollup-источник каталога 1496 (childDocumentId); 1499 Строки счёта, 1500 Платежи, 1501 Кредит-нота — rollup/reference-источники счетов 1498; 1503 Точки — reference из 1504, 1505, 1517, 1544, 1545, 1546, 1548; 1508 Навыки — reference из 1516; 1545 Суточный расход ⚠️k17 — правило 267 по таблице + reference из 1546.
С данными и используемые: 1496, 1498, 1504–1506, 1516–1519, 1521, 1526–1528 (формы/дашборды/правила/ссылки — по графу выше); ⚠️k17: 1541 Рецептура (reference из 1542, 1544), 1542 Строка рецептуры (действие правила 266), 1544 Партия (правила 266/268, дашборд 1551), 1546 Строка расхода (правила 266/267/268), 1547 Поставщики (reference из 1496, 1548, 1554), 1548 Заказ поставщику (правило 270, дашборд 1552), 1549 Строка заказа (действия правил 270/272), 1553 Очередь дозаказа (правило 272 + действие 269), 1554 Быстрый ввод (форма 1555, правило 273).
Примечание: объекты К17, на которые ссылаются сохранённые таблицы/правила, остались живыми — полная деконтаминация К17 (вопрос §9) по-прежнему требует решения владельца.
Итог дерева
Узлы: было 61 → стало 44 живых (таблиц 46 → 29; дашбордов 8, форм 5, сайт 1, документ 1 — без изменений). Архивированные узлы сохраняются в дереве с archivedAt (восстановление — doc_restore).
Разделы 1–2 этой документации (дерево/счётчики) описывают состояние ДО чистки.