caterium-app/docs/HISTORY.txt
2026-09-07 15:29:20 +03:00

369 lines
38 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

v17.5.21 — Настройки разделены на 6 вкладок: Аккаунт, Оформление, Предложение, Заказы, Справочники, Документы.
v17.5.17 - inline control-list editor + guaranteed adaptive table photos
v17.5.16 — предпросмотр предложения и PDF используют одни и те же страницы; редактор прямо в окне предложения; финальные фото максимум 2 и только в свободное место
v17.5.15 — новый шаблон предложения «Солнце Editorial» с единой структурой просмотра и PDF
v17.5.14 — фото каталога/Premium и адаптивная галерея PDF
- Единый fallback фото для каталога, Premium, предложения и PDF: локальный файл -> API-кэш -> оригинал Tilda.
- Запуск сервера больше не блокируется неполным фотокэшем.
- Локальные резервные фото добавлены для отсутствовавших вариантов боксов №5 и №8.
- Финальный блок «Как это выглядит на вашем столе» заполняет свободное место 13 фотографиями.
v17.5.9 — Календарь: цвета по оплате + печать для кухни без финансов
- Календарь использует те же настраиваемые цвета оплаты, что и карточки заказов.
- В печати календаря скрыты суммы заказов, предоплаты, остатки и денежные значения внутри заказов.
- В печати остаются дата, время, заказ, мероприятие, клиент/адрес и цветовая маркировка.
v17.5.8 — PDF: белый Light, продающий блок и финальная фотогалерея
- Светлый фирменный шаблон переведён с кремового на чистый белый фон.
- Короткий текст первого экрана отделён от нового редактируемого продающего блока.
- При миграции старый длинный текст первого экрана переносится в продающий блок, чтобы ничего не потерять.
- PDF рассчитывает высоту продающего текста и переносит продолжение на следующую страницу без обрезания.
- В конец предложения добавлена адаптивная галерея из 10 предоставленных фотографий.
- Фотографии галереи упакованы побайтово в legacy-images.bin без повторного JPEG-сжатия и без увеличения числа файлов.
SUN CATERING — ИСТОРИЯ ИЗМЕНЕНИЙ
Этот файл объединяет прежние V*-CHANGES.txt. Исторические записи сохранены по версиям.
==============================================================================
ИСТОЧНИК: V12-CHANGES.txt
==============================================================================
Солнце Кейтеринг v12
1. Шесть шаблонов «Предложения клиенту» теперь имеют разные структуры, а не только разные цвета.
2. Все шаблоны используют реальные фотографии выбранных боксов из каталога.
3. PDF-верстка переработана: измеряемый перенос строк, динамические высоты блоков, отдельное состояние canvas, защита от наложения текста.
4. «Фирменные цвета интерфейса»: расширенный редактор левой панели, активных пунктов, служебных кнопок, уведомлений и основного интерфейса.
5. Значки меню: стандартные SVG или пользовательские символы/эмодзи для каждого раздела.
6. Одна кнопка возвращает стандартную версию интерфейса (исходная фиолетовая панель + стандартные значки).
==============================================================================
ИСТОЧНИК: V13-CHANGES.txt
==============================================================================
Солнце Кейтеринг v13
- Исправлена невидимая подпись на тёмных основных кнопках (PDF, Сохранить и т.п.).
- Настройки темы теперь работают как живой предпросмотр: изменения видны сразу, но сохраняются только по кнопке «Сохранить настройки».
- Добавлена кнопка «Отменить изменения».
- Основной цвет левой панели вынесен отдельным крупным параметром; можно менять градиент, значки, текст, активные пункты и служебные элементы.
- Добавлены 5 наборов значков плюс индивидуальный выбор значка для каждого раздела.
- «Вернуть стандартную версию» одним нажатием восстанавливает исходную фиолетовую панель, стандартные цвета и SVG-значки.
- Excel импорт/экспорт удалён из экрана Настройки.
- Левая панель сворачивается до 74 px и запоминает состояние.
- Обновлён PWA cache.
==============================================================================
ИСТОЧНИК: V14-CHANGES.txt
==============================================================================
Sun Catering v14
- Simplified interface color settings.
- Removed icon pack and per-icon customization settings.
- Brand palette is collapsed behind "Показать фирменные цвета Солнца".
- Added sidebar presets: Standard purple, Brand dark, Brand light, Brand green, Solar graphite.
- Theme changes affect only preview until Save Settings is clicked.
- Main sidebar background is explicitly applied to the real sidebar after saving, including mobile navigation.
- Added manual controls for main sidebar color, second sidebar color and icon color plus advanced sidebar colors.
- Restores standard purple sidebar with one button.
- Sidebar logo/brand is now a link to New Order.
- Updated PWA cache version.
==============================================================================
ИСТОЧНИК: V15-CHANGES.txt
==============================================================================
Солнце Кейтеринг — v15
Предложение клиенту:
- Номер заказа удалён из клиентского предложения и имени PDF.
- Дата остаётся и может быть включена/выключена в настройках.
- Количество боксов считается только по позициям категории «Боксы».
- Вес еды считается только по категории «Боксы»; напитки, посуда и дополнения исключены.
- В «Итого» можно выбрать «Вес еды на гостя» или «Количество канапе на гостя».
- Добавлены централизованные настройки текстов и видимости блоков предложения.
- Нижние кнопки «Скачать PDF» / «Заказать меню» удалены из всех клиентских шаблонов.
- Управление предложением остаётся в верхнем окне: «Скачать PDF», «Обновить», «Закрыть».
- Исправлено позиционирование и перенос строк в PDF, в том числе многострочные заголовки.
==============================================================================
ИСТОЧНИК: V16-CHANGES.txt
==============================================================================
Солнце Кейтеринг v16 — SaaS foundation
- 3 тарифа: Базовый / Профессиональный / Полный.
- Новый workspace получает 14 дней Полного тарифа.
- После окончания: 7 дней только просмотр, затем блокировка без удаления данных.
- Базовый: 1 пользователь. Профессиональный: до 3. Полный: без лимита.
- Профессиональный не включает редактирование боксов и предложения клиенту.
- Серверная проверка подписки и функций в Supabase RPC — ограничения нельзя снять только изменением интерфейса браузера.
- Каждая компания работает в отдельном workspace; сервер фильтрует данные по членству и тарифу.
- Регистрация компании: пустая база или демо.
- Карточка тарифа и срока в Настройках.
- Недоступные функции помечаются замком и показывают сравнение тарифов.
- Отдельный SaaS-кабинет владельца сервиса: компании, тарифы, сроки, блокировка, индивидуальные функции.
- Ограничение количества активных сотрудников проверяется на сервере при приглашении и повторной активации.
- Существующий workspace «Солнце Кейтеринг» сохранён на Полном тарифе до 2099 года.
- SaaS RPC закрыты от анонимного доступа.
- Миграции текущего Supabase уже применены. Для нового проекта: SUPABASE-SAAS-V16.sql + SUPABASE-SAAS-V16-FINALIZE.sql.
Пока не подключено: автоматическое списание, платёжный webhook и публичный checkout. Тарифами можно управлять вручную из SaaS-кабинета.
==============================================================================
ИСТОЧНИК: V17.1-CHANGES.txt
==============================================================================
Солнце Кейтеринг v17.1 — исправление входа на новом устройстве
- Рабочие базы после входа всегда запрашиваются с сервера через sun_my_workspaces().
- Если у пользователя одна база, она выбирается автоматически.
- Убрана гонка между успешной авторизацией и загрузкой membership.
- Экран одноразового кода приглашения временно отключён.
- Создание и принятие приглашений временно запрещены на сервере.
- В настройках убраны элементы создания/ввода приглашений.
- Регистрация через основной gate временно скрыта; вход — email + пароль.
- Обновлён PWA cache, чтобы старый экран не оставался на другом компьютере.
==============================================================================
ИСТОЧНИК: V17.2-CHANGES.txt
==============================================================================
Солнце Кейтеринг v17.2 — полное описание боксов в предложениях клиенту
- Во всех 6 шаблонах предложения убрано ограничение на первые 23 составляющие бокса.
- Теперь выводится полный состав бокса: все строки/виды, сохранённые в composition.
- Карточки и строки предложения растут по высоте автоматически.
- Добавлен нормальный перенос длинного текста без обрезки.
- Исправлены PDF всех 6 шаблонов: описание больше не ограничивается 2 составляющими или 3 строками.
- Midnight Compact PDF теперь также выводит состав под названием позиции, а не только название и вес.
- Neon Emerald PDF теперь выводит полный состав, а не только вес/раздел.
- Black Gold и Emerald Gold PDF измеряют полный текст и увеличивают карточку до нужной высоты.
- Обновлён PWA cache, чтобы браузеры не держали старую версию client-offer.js.
==============================================================================
ИСТОЧНИК: V17.3-CHANGES.txt
==============================================================================
Солнце Кейтеринг v17.3 — актуальные данные предложения клиенту
Исправлено:
- Предложение клиенту больше не открывает старый сохранённый снимок после изменения заказа.
- При каждом открытии сравнивается сигнатура текущего заказа и снимка предложения.
- Если количество, цена, гости, скидка, доставка или позиции изменились — предложение пересоздаётся автоматически.
- Кнопка «Предложение клиенту» в редакторе использует текущий draft заказа, включая ещё не сохранённые изменения.
- Несохранённый draft не записывается обратно в сохранённый заказ; показывается предупреждение.
- Перед скачиванием PDF выполняется повторная проверка актуальности данных.
- Все 6 шаблонов используют один актуальный snapshot, поэтому сумма, количество боксов, вес и количество позиций совпадают.
- Номер заказа убран из внутренней строки метаданных окна предложения; остаётся только время версии.
- PWA cache обновлён до v33, чтобы старый snapshot-код не оставался в браузере.
Контрольный пример заказа №25:
- количества боксов: 3+3+2+3+2+2 = 15
- сумма: 60 080 ₽
- гостей: 60
- сумма на гостя: 1 001 ₽ (округление)
- вес еды: 11 830 г
- вес на гостя: 197 г (округление)
==============================================================================
ИСТОЧНИК: V17.4-CHANGES.txt
==============================================================================
Солнце Кейтеринг v17.4 — вес боксов + итоговое количество канапе
1. В редактор бокса добавлено отдельное поле «Вес бокса, г».
2. Вес бокса сохраняется в каталоге и синхронизируется как часть данных позиции.
3. Вес показывается на карточках каталога, в настройке каталога, в строках заказа, в бланке заказа/чеке и во всех предложениях клиенту/PDF.
4. В предложениях состав бокса показывает итоговое количество каждого вида закусок с учётом количества заказанных боксов.
Пример: 5 шт. канапе в одном боксе × 3 бокса = 15 шт. в предложении.
5. Обновление веса или состава бокса сразу подхватывается открытым предложением клиенту.
6. Сводный вес еды на гостя пересчитывается по актуальному весу боксов.
7. Версия snapshot предложения повышена до v5, чтобы старые предложения автоматически пересобрались.
8. Обновлён PWA-кэш.
==============================================================================
ИСТОЧНИК: V17.5-CHANGES.txt
==============================================================================
Солнце Кейтеринг v17.5
1. В редактор каждого бокса добавлено отдельное поле «Количество канапе / шт. в боксе».
2. Общее количество больше не хранится как строка состава.
3. В каждой строке состава добавлено поле «Вес 1 шт., г».
4. Старые веса вида «— 20 г» автоматически переносятся в отдельное поле веса одной штуки.
5. Бокс №7: количество = 30 шт.
6. Бокс №18 «Тосты ассорти»: строка «25 шт. тостов ассорти» удалена из состава; в составе остаются 2 реальных вида, а 25 хранится как общее количество.
7. Количество и вес одной штуки отображаются в клиентском предложении и PDF.
8. Количество каждого вида в предложении умножается на число заказанных боксов.
9. Каталог/заказ/бланк показывают вес и общее количество бокса.
==============================================================================
ИСТОЧНИК: V17.5.1-CHANGES.txt
==============================================================================
Солнце Кейтеринг v17.5.1 FINAL
База: v17.5. Облако, настройки разработчика и ребрендинг не изменялись.
1. В предложении клиенту для бокса показываются итоговые данные заказа: количество боксов, общий вес, диапазон гостей и общее количество штук.
Пример: 3 бокса · Общий вес: 3 000 г · 1525 гостей · Всего: 75 шт.
2. Количество готовых штук учитывается для всех пищевых боксов, включая мини-бургеры и другие разделы, а не только раздел «Канапе».
3. Вес еды на гостя всегда округляется вверх до ближайших 5 г: 188 → 190, 191 → 195.
4. Показатель «Канапе на гостя» всегда округляется вверх до целого: 2,3 → 3.
5. Те же расчёты используются в экранном предложении и PDF.
6. В PDF карточки в одной строке выравниваются по высоте.
7. При небольшом переполнении страницы карточки/блоки используют компактную высоту вместо переноса малого остатка на новую страницу.
8. Блок расчёта стоимости старается оставаться на одной странице с нижним примечанием, чтобы не появлялась отдельная страница с одной-двумя строками.
9. В Light и Midnight Glass удалена повторная PDF-галерея после карточек: фото уже находятся внутри карточек, поэтому лишние страницы не создаются.
10. PDF-логика применена ко всем 6 шаблонам предложения.
==============================================================================
ИСТОЧНИК: V17.5.2-CHANGES.txt
==============================================================================
Солнце Кейтеринг v17.5.2 FINAL
База: v17.5.1. Новая архитектура облака, настройки разработчика и ребрендинг не добавлялись.
1. Диапазон гостей бокса больше не показывается в карточках каталога, менеджере, каталожных PDF и в предложении клиенту. Само значение оставлено в данных для обратной совместимости.
2. В предложении клиенту убрано дублирующее начало строки «3 бокса». Количество остается в штатной колонке «× 3», а метастрока показывает только общий вес и общее количество штук.
3. В окне «Вкладки каталога» добавлен выбор цвета каждой вкладки. Надпись автоматически становится светлой или темной в зависимости от фона.
4. В редакторе позиций подписи унифицированы: «Цена, ₽» и «Сохранить».
5. Ошибка `sunBoxes exceeded the quota` исправлена без смены архитектуры облака: новые фото каталога оптимизируются перед локальным сохранением, а при загрузке из облака `sunBoxes` сжимает большие data-URL и повторяет запись с более сильным сжатием, если лимит все еще превышен.
==============================================================================
ИСТОЧНИК: V17.5.3-CHANGES.txt
==============================================================================
V17.5.3 — каталог 02.09.2026, Премиум и скидки
1. Каталог «Боксы» полностью заменён по пользовательской выгрузке «Все боксы — Солнце Кейтеринг (2).pdf».
2. Импортировано 113 позиций: название, вес, актуальная цена и ссылка на фото. Данные о количестве гостей не импортируются и удалены из названий.
3. Позиции 6970 (Морс, Компот) находятся во вкладке «Напитки».
4. Позиции 85113 находятся во вкладке «Премиум». Вкладка «Премиум» расположена между «Боксы» и «Напитки».
5. Для строк с перечёркнутой ценой сохранена текущая цена и отдельная «Цена до скидки». В редакторе добавлено необязательное поле «Цена до скидки, ₽».
6. В карточках каталога и менеджере старая цена показывается перечёркнутой; расчёт заказа использует текущую цену.
7. «Премиум» считается пищевой категорией для веса/штучности и предложения клиенту.
8. Фото используются напрямую по оригинальным ссылкам static.tildacdn.com из PDF. Это не увеличивает localStorage и не возвращает ошибку quota.
9. Облачная архитектура, SaaS, RBAC и настройки разработчика не менялись.
==============================================================================
ИСТОЧНИК: V17.5.4-CHANGES.txt
==============================================================================
17.5.4
- Настройки при открытии прокручиваются к началу; верхняя шапка настроек закреплена.
- Блоки внизу настроек упорядочены: Реквизиты компании -> QR-код -> Настройки бланка -> Облако Supabase -> История изменений.
- В выборе шаблона предложения оставлены только: Светлый фирменный, Midnight Glass, Emerald Gold.
- Для адреса доставки добавлена ручная проверка точного адреса: до 5 вариантов с регионом/районом/населенным пунктом, превью точки и явное подтверждение.
- Автоподстановка первого результата геокодера отключена для кнопки проверки адреса.
- Автокомплит адресов не используется; запрос выполняется только по кнопке.
- Текущая архитектура облака не менялась.
==============================================================================
ИСТОЧНИК: V17.5.5-CHANGES.txt
==============================================================================
Sun Catering v17.5.5
- Исправлено предложение клиенту для заказов, созданных до замены каталога 02.09.2026.
- Старые ID каталога разрешаются через встроенный каталог v17.5, поэтому возвращаются название, вес, состав, цена и фотография позиции.
- Старые локальные фотографии берутся из catalog-images.js и безопасно встраиваются в PDF без зависимости от CDN.
- Снимки предложения, где позиции уже успели превратиться в «Позиция»/логотип, автоматически считаются устаревшими и пересобираются.
- Новая структура каталога, Premium, настройки, облако и адреса не менялись.
==============================================================================
Sun Catering v17.5.6 — аудит и компактная сборка
==============================================================================
- Проведён статический аудит JavaScript, встроенных скриптов, локальных ссылок и серверных маршрутов.
- Исправлен /healthz: версия теперь читается из release-manifest.json и не может молча оставаться на старом 17.5.0.
- Premium (категория 5) теперь последовательно обрабатывается как бокс в заготовках, фотокарточках и PDF-каталоге; название раздела в PDF — «Премиум».
- Загрузка внешних фото в PDF-каталоге защищена CORS-режимом и таймаутом, чтобы не портить canvas и не зависать бесконечно.
- 19 браузерных JS-модулей объединены в app-runtime.js без минификации; внутри сохранены маркеры исходных модулей.
- mobile-pwa.css встроен в index.html.
- Дублирование старых фото устранено: catalog/004.jpg060.jpg упакованы побайтово в legacy-images.bin без перекодирования и без потери JPEG-качества; catalog/001.jpg003.jpg оставлены отдельными для SaaS-демо.
- Удалён catalog-images.js, который содержал ещё одну base64-копию тех же изображений и создавал лишнюю нагрузку на разбор JavaScript.
- Удалены неиспользуемые превью трёх отключённых шаблонов предложения.
- Генерируемые файлы сервера (.sun-sync-secret, sun-sync-data.json, PHONE-LINK.txt) не поставляются в чистой сборке и создаются автоматически.
- Исправлена устаревшая подпись версии в start-local-test.bat (v17.3 → v17.5.6).
- Облачная архитектура, Supabase-схемы и пользовательские данные не изменялись.
==============================================================================
Sun Catering v17.5.7 — составы боксов с сайта
==============================================================================
- Добавлен человекочитаемый состав боксов для предложения клиенту и PDF.
- 56 позиций получают состав сразу из проверенного/ранее импортированного каталога; 6 популярных боксов сверены с текущей главной страницей solnce-keytering.ru 03.09.2026.
- Добавлена автоматическая синхронизация составов с публичных каталогов /catalog и /catalog_black через локальный server.js.
- Синхронизация не импортирует данные о количестве гостей и не меняет цену/фото/вес.
- После успешной синхронизации состав сохраняется в sunBoxes и остаётся доступен локально; повторная проверка выполняется не чаще одного раза в 6 часов.
- В менеджере Боксов/Премиум добавлена кнопка «Обновить составы с сайта».
- В редакторе бокса добавлено поле «Состав для клиента»; ручная правка защищена от последующей автозамены сайтом.
- Миграция каталога теперь сохраняет пользовательские позиции и существующие ручные изменения вместо полного удаления категорий Боксы/Напитки/Премиум.
- Архитектура облака и Supabase не изменялась.
==============================================================================
Sun Catering v17.5.10 - Premium compositions from site
==============================================================================
- Premium sync now opens the full Tilda product card through getproduct after the catalog list.
- Nested product text fields are scanned for composition.
- Missing Premium composition forces refresh even inside the normal 6-hour interval.
- Manual composition is preserved and guest/person data is not imported.
- Sync status reports Premium matches and changes separately.
17.5.11
- Убрана видимая кнопка «Обновить составы с сайта».
- Первый бокс больше не показывает «АКЦИЯ» без перечеркнутой старой цены.
- Фото старого каталога 001-060 снова лежат отдельными JPG в catalog; текущие 113 позиций используют catalog/current-XXX.jpg и автоматически кэшируются сервером в эту же папку.
- «Состав для клиента» отделен от «Состав / ТТК»; клиентское предложение и PDF используют клиентский состав.
- В бланке заказа рядом с QR добавлен редактируемый текст, сохраняемый в заказе.
17.5.12
- Аудит производительности и стабильности.
- PDF предложения больше не генерируется автоматически при открытии: тяжёлая сборка запускается только по кнопке «Скачать PDF».
- Убрана массовая фоновая загрузка недостающих фото каталога при старте сервера; фото кэшируются по требованию.
- Добавлена 5-минутная пауза после неудачной загрузки фото, чтобы при плохом интернете не повторять одни и те же запросы.
- Фоновая синхронизация составов с сайтом отложена до простоя интерфейса; число параллельных запросов деталей уменьшено до 2.
- Синхронизация составов больше не вызывает полный render() приложения и обновляет открытое предложение только при реальном изменении позиции.
- Снижена частота фоновых проверок облака/прав/тарифа и ограничены тяжёлые MutationObserver соответствующими разделами интерфейса.
- Для недоступных фотографий каталога добавлен безопасный fallback на логотип.
- Финальная фотогалерея хранится обычными JPEG и в предпросмотре загружается напрямую; Base64-конвертация фото выполняется только при скачивании PDF.
17.5.13
- Каталог переведён на полностью локальные фотографии во время обычной работы приложения.
- Добавлен prepare-catalog-photos.js: перед первым запуском он проверяет current-001.jpgcurrent-113.jpg и докачивает только отсутствующие файлы.
- Одинаковые исходные URL скачиваются один раз и сохраняются во все соответствующие позиции; добавлены проверка JPEG, атомарная запись, повторы и ограничение параллельности.
- start-mobile-server.bat и start-local-test.bat запускают сервер только после успешной проверки 113/113 фотографий.
- Добавлен DOWNLOAD-ALL-CATALOG-PHOTOS.bat для ручной повторной подготовки каталога.
- Удалена загрузка фотографий с Tilda/CDN из server.js во время просмотра каталога и формирования PDF.
- /healthz показывает ready/total/complete для локальных фотографий каталога.
- Облачная архитектура и данные заказов не менялись.
2026-09-05 — v17.5.18
- Разделение локальной рабочей копии по Supabase workspace/аккаунтам.
- Новая компания: текущий каталог 113 позиций + пустые рабочие данные.
- Оптимизированы JPEG каталога; удалён устаревший статический PDF-каталог.
2026-09-05 — v17.5.19
- Исправлен надёжный выход из аккаунта: local-scope Supabase signOut, ограниченное ожидание сети, локальный fallback токена и обновлённый PWA cache.
- Сохранена изоляция workspace и стартовый каталог 113 позиций из v17.5.18.
2026-09-05 — v17.5.20
- Аккаунт и вход подняты в начало Настроек.
- Резервное копирование и диагностическое резервирование убраны из обычных Настроек.
2026-09-06 — v17.5.31
- Чат переведён на безопасную регистрацию в левом меню без DOM insertBefore между разными родителями.
- Раздел «Чат»: Общий / Личные / Заказы.
- Чат заказа встроен непосредственно в заказ и доступен также из общего списка заказных чатов.
- Убрана бесконечная переинициализация, вызывавшая каскады повторных ошибок.