265 lines
23 KiB
Plaintext
265 lines
23 KiB
Plaintext
CATERIUM · v17.6.0
|
||
|
||
v17.6.0 · STABILITY & SECURITY
|
||
- Зафиксирована отдельная rollback-сборка v17.5.31.
|
||
- Закрыт stored DOM-XSS в старом bootstrap; общий безопасный вывод вынесен в core/sun-safe.js.
|
||
- Старый bootstrap вынесен из index.html в legacy/bootstrap.js, динамические DOM-вставки защищены от insertBefore/NotFoundError.
|
||
- Production Edge Function caterium-create-employee возвращена в исходники проекта; секреты остаются только в окружении Supabase.
|
||
- Убран блокирующий offer-gallery-data.js; оставлены только реально используемые 001.jpg и 002.jpg, неключевые изображения грузятся лениво.
|
||
- PDF-упаковка сведена в один A4-движок; Light / Editorial Grid / Midnight Glass / Emerald Gold и PDF-каталог повторно проверены визуально.
|
||
- На мобильной ширине 390 px устранён document-level горизонтальный overflow; горизонтальные ленты прокручиваются внутри своих областей.
|
||
- Добавлены автоматические syntax/security/release checks и E2E-спецификация для следующих релизов.
|
||
|
||
v17.5.31 · СТАБИЛЬНАЯ НАВИГАЦИЯ ЧАТОВ
|
||
- Исправлена ошибка insertBefore при добавлении чата в сгруппированное левое меню.
|
||
- «Чат» — отдельный пункт бокового меню со счётчиком непрочитанных.
|
||
- Внутри: Общий / Личные / Заказы.
|
||
- Чат заказа открывается внутри самого заказа отдельной вкладкой «Чат».
|
||
- Та же переписка доступна из «Чат → Заказы».
|
||
- Серверная схема чата v29 и RLS не менялись.
|
||
|
||
v17.5.30 · ПРАВА АДМИНИСТРАТОРОВ
|
||
- У роли «Администратор» теперь можно индивидуально включать и отключать функции.
|
||
- Явные права сотрудника имеют приоритет над шаблоном роли и на сервере, и в интерфейсе.
|
||
- Проверка «последний активный администратор» считает других активных администраторов, а не блокирует второго администратора.
|
||
- Нельзя оставить компанию без активного администратора или без администратора с правом «Пользователи и права».
|
||
- Серверные изменения: SUPABASE-ADMIN-RIGHTS-V30.sql.
|
||
|
||
РЕГИСТРАЦИЯ
|
||
- Регистрация: название компании, email, пароль, подтверждение пароля.
|
||
- Подтверждение email по ссылке не требуется.
|
||
- После регистрации Caterium автоматически входит в аккаунт и создаёт компанию.
|
||
|
||
ПОЛЬЗОВАТЕЛИ И ПРАВА
|
||
1. Настройки → Аккаунт → Пользователи и права.
|
||
2. Нажмите «+ Добавить сотрудника».
|
||
3. Укажите имя, email и роль.
|
||
4. Новый аккаунт создаётся сразу и получает временный пароль; существующий аккаунт просто добавляется в компанию.
|
||
5. При первом входе по временному паролю сотрудник задаёт новый пароль.
|
||
|
||
ЧАТЫ
|
||
- «Чаты» в основной навигации: общий чат компании и личные диалоги сотрудников.
|
||
- В сохранённых заказах есть «Обсуждение», а в карточках заказов — кнопка «Чат».
|
||
- Есть непрочитанные, прочтение, «печатает…» и онлайн-статус.
|
||
- Можно отправлять фото и файлы: до 5 за сообщение, до 15 МБ каждый.
|
||
- Личные чаты серверно доступны только двум участникам; данные разных компаний изолированы.
|
||
- Вложения хранятся в приватном Supabase Storage bucket sun-chat.
|
||
|
||
ДЛЯ ТЕКУЩЕГО SUPABASE
|
||
- SUPABASE-CHAT-V29.sql уже применён. Для нового проекта выполняйте его после базовых/SaaS/RBAC миграций.
|
||
|
||
Сборка v17.5.21.
|
||
|
||
Главное изменение: Настройки разделены на 6 вкладок — Аккаунт, Оформление, Предложение, Заказы, Справочники и Документы. На мобильных вкладки прокручиваются горизонтально, последняя открытая вкладка запоминается. Резервное копирование и блок стабильности остаются скрыты из обычных Настроек.
|
||
|
||
|
||
Что изменено в v17.5.19:
|
||
- Исправлен выход из аккаунта: кнопки «Выйти» теперь завершают локальную сессию Supabase без зависания на сетевой синхронизации, с аварийным локальным сбросом токена текущего проекта.
|
||
- При выходе текущая локальная копия компании сохраняется отдельно; разделение данных аккаунтов из v17.5.18 сохранено.
|
||
- Обновлён PWA-кэш, чтобы браузер не оставался на старом обработчике выхода.
|
||
|
||
Что было добавлено в v17.5.18:
|
||
- рабочие данные теперь изолируются по облачной компании/workspace на одном устройстве;
|
||
- при смене аккаунта локальная копия предыдущей компании сохраняется отдельно в IndexedDB и очищается перед загрузкой другой компании;
|
||
- новая компания стартует без заказов, клиентов, финансов, склада и прочих рабочих данных, но с текущим каталогом из 113 позиций;
|
||
- фотографии каталога оптимизированы без смены формата (JPEG), чтобы уменьшить размер дистрибутива;
|
||
- старый статический PDF-каталог удалён из архива: актуальный PDF формируется по текущим данным приложения через кнопку «Скачать PDF».
|
||
|
||
Структура релиза сохранена без изменения облачной архитектуры: браузерные модули объединены в app-runtime.js, мобильный CSS встроен в index.html. Фотографии боксов хранятся обычными JPG в папке catalog: legacy-каталог 001.jpg–060.jpg находится там полностью, а актуальный каталог использует current-001.jpg–current-113.jpg. Перед первым запуском start-mobile-server.bat выполняет prepare-catalog-photos.js: он проверяет все 113 актуальных фотографий, один раз докачивает отсутствующие по исходным ссылкам сайта и только после полного результата запускает server.js. Во время обычной работы server.js больше не загружает фотографии с Tilda/CDN — каталог и PDF используют локальные файлы. После успешной первой подготовки интернет для фотографий каталога не нужен. Финальная фотогалерея предложения хранится отдельными JPEG в папке offer-gallery; преобразование изображений для PDF выполняется только после нажатия «Скачать PDF».
|
||
|
||
Файлы .sun-sync-secret, sun-sync-data.json и PHONE-LINK.txt намеренно не входят в чистый релиз: server.js создаёт их автоматически при первом запуске. Это не удаляет пользовательские данные из уже работающей установленной папки — при обновлении поверх существующей папки её текущие файлы данных нужно сохранить.
|
||
|
||
ВАЖНО ДЛЯ ПЕРВОГО ЗАПУСКА: если в архиве ещё нет всех current-001.jpg–current-113.jpg, компьютер должен быть подключён к интернету. Уже скачанные файлы сохраняются, поэтому при обрыве достаточно снова запустить start-mobile-server.bat. Отдельно повторить подготовку можно файлом DOWNLOAD-ALL-CATALOG-PHOTOS.bat.
|
||
|
||
Ниже объединены прежние инструкции проекта, чтобы в папке не было множества отдельных README-файлов.
|
||
|
||
|
||
==============================================================================
|
||
РАЗДЕЛ ИЗ ADMIN-ACCESS.txt
|
||
==============================================================================
|
||
СОЛНЦЕ КЕЙТЕРИНГ — АККАУНТЫ И ПРАВА (Cloud RBAC)
|
||
|
||
ГЛАВНЫЙ АДМИНИСТРАТОР
|
||
Email: dpavlov346@bk.ru
|
||
Роль: Администратор
|
||
Рабочая база: Солнце Кейтеринг
|
||
Пароль в архиве не хранится.
|
||
|
||
КАК ВОЙТИ
|
||
1. Откройте приложение.
|
||
2. На экране «Вход в Солнце Кейтеринг» введите email и пароль облачного аккаунта.
|
||
3. После входа рабочая база «Солнце Кейтеринг» выбирается автоматически.
|
||
4. Быстрый PIN можно включить в Настройки -> Аккаунт. PIN работает только на этом устройстве.
|
||
|
||
КАК ДОБАВИТЬ СОТРУДНИКА
|
||
1. Администратор: Настройки -> Аккаунт.
|
||
2. Выберите роль и создайте одноразовый код приглашения.
|
||
3. Сотрудник на своём устройстве создаёт аккаунт email + пароль.
|
||
4. После входа вводит код приглашения.
|
||
5. Администратор открывает «Пользователи и права» и настраивает галочки.
|
||
|
||
МОБИЛЬНЫЙ ДОСТУП
|
||
Подробно: см. раздел README-MOBILE ниже в этом файле.
|
||
Постоянная плашка облака поверх всех разделов удалена.
|
||
|
||
|
||
==============================================================================
|
||
РАЗДЕЛ ИЗ CLOUD-SETUP.txt
|
||
==============================================================================
|
||
СОЛНЦЕ КЕЙТЕРИНГ — ОБЛАЧНАЯ СИНХРОНИЗАЦИЯ
|
||
|
||
1. Supabase уже подключён к этому билду приложения.
|
||
2. SQL-схема, RLS, Storage и Realtime уже развернуты в проекте Supabase.
|
||
3. Откройте в приложении Настройки -> Аккаунт.
|
||
4. Создайте аккаунт владельца или войдите.
|
||
5. Создайте рабочую базу «Солнце Кейтеринг».
|
||
6. На первом компьютере нажмите «Перенести текущие данные в облако».
|
||
7. Для сотрудников создайте код приглашения. На другом устройстве сотрудник
|
||
создаёт свой аккаунт, вводит код и получает доступ к общей рабочей базе.
|
||
|
||
Что синхронизируется:
|
||
- заказы и клиентские данные;
|
||
- каталог, цены и составы;
|
||
- склад, движения, поставщики;
|
||
- финансы, сотрудники, маршруты, настройки и другие рабочие sun*-данные;
|
||
- загруженные изображения: они переносятся в приватный Supabase Storage.
|
||
|
||
Офлайн:
|
||
Приложение продолжает работать с локальной копией. Когда интернет появляется,
|
||
изменения автоматически отправляются в облако. Realtime сообщает другим
|
||
устройствам об изменениях и обновляет локальную копию.
|
||
|
||
Безопасность:
|
||
- в браузере используется только Publishable/anon key;
|
||
- доступ к данным проверяется Row Level Security;
|
||
- service_role / secret key в браузер добавлять нельзя;
|
||
- изображения лежат в приватном bucket sun-media.
|
||
|
||
|
||
==============================================================================
|
||
РАЗДЕЛ ИЗ DEPLOY-ONLINE.txt
|
||
==============================================================================
|
||
ПОСТОЯННЫЙ ВХОД С ТЕЛЕФОНА
|
||
|
||
Приложение уже работает с облачной базой Supabase и не требует компьютера для хранения данных.
|
||
Чтобы открывать интерфейс из любой сети, папку приложения нужно один раз разместить на HTTPS static hosting (GitHub Pages / Cloudflare Pages / Netlify / Vercel).
|
||
После публикации на телефоне откройте HTTPS-адрес, войдите под тем же Supabase аккаунтом и добавьте сайт на главный экран как PWA.
|
||
Компьютер после этого может быть полностью выключен.
|
||
|
||
|
||
==============================================================================
|
||
РАЗДЕЛ ИЗ README-MOBILE.txt
|
||
==============================================================================
|
||
СОЛНЦЕ КЕЙТЕРИНГ — МОБИЛЬНЫЙ ДОСТУП И ОБЛАКО
|
||
|
||
ВАЖНО: Supabase хранит общую базу данных, но сам интерфейс приложения должен быть открыт по адресу (URL).
|
||
|
||
Вариант 1 — в одной Wi-Fi сети (уже работает):
|
||
1. На компьютере запустите start-mobile-server.bat.
|
||
2. Откройте PHONE-LINK.txt.
|
||
3. На телефоне, подключенном к той же Wi-Fi сети, откройте указанный адрес.
|
||
4. Войдите тем же облачным email и паролем.
|
||
5. Выберите рабочую базу «Солнце Кейтеринг». Данные подтянутся из Supabase.
|
||
|
||
Вариант 2 — работать с телефона из любой точки мира (рекомендуется):
|
||
1. Разместите содержимое этого архива на обычном HTTPS-хостинге статического сайта (например, Cloudflare Pages / Netlify / Vercel).
|
||
2. На телефоне откройте полученный https:// адрес в Safari или Chrome.
|
||
3. Войдите своим email и паролем.
|
||
4. После первого открытия можно добавить сайт на главный экран как PWA.
|
||
5. Все устройства работают с одной рабочей базой Supabase; компьютер держать включенным не нужно.
|
||
|
||
АДМИНИСТРАТОР
|
||
Email: dpavlov346@bk.ru
|
||
Рабочая база: Солнце Кейтеринг
|
||
Пароль не хранится в архиве. Используется пароль облачного аккаунта.
|
||
|
||
УПРАВЛЕНИЕ ОБЛАКОМ
|
||
Постоянная плашка «Облако» поверх всех разделов удалена. Облако и пользователи открываются только через Настройки -> Аккаунт.
|
||
|
||
ОФЛАЙН
|
||
После первого успешного входа и загрузки базы PWA хранит локальную рабочую копию. При восстановлении интернета изменения синхронизируются с Supabase.
|
||
|
||
|
||
==============================================================================
|
||
РАЗДЕЛ ИЗ ROLLBACK-V17.txt
|
||
==============================================================================
|
||
ОТКАТ v17
|
||
|
||
v17 не удаляет старую структуру sun_app_state и не заменяет существующий архив v16.
|
||
Если при тестировании найдена критическая проблема:
|
||
1. Закройте v17.
|
||
2. Запустите прежнюю папку v16.
|
||
3. Войдите в тот же Supabase аккаунт.
|
||
4. Загрузите облачную копию.
|
||
|
||
Новая v17 схема добавлена параллельно и не требуется для запуска v16.
|
||
Перед восстановлением старого состояния из backup используйте Настройки → Стабильность и резервирование → Восстановить.
|
||
|
||
|
||
==============================================================================
|
||
РАЗДЕЛ ИЗ SAAS-V16-README.txt
|
||
==============================================================================
|
||
СОЛНЦЕ КЕЙТЕРИНГ — SaaS v16
|
||
|
||
Что уже работает:
|
||
- отдельная рабочая база (workspace) для каждой компании;
|
||
- 14 дней Полного тарифа для новых компаний;
|
||
- выбор «Пустая база» или «Загрузить демо» при создании компании;
|
||
- тарифы Базовый / Профессиональный / Полный;
|
||
- лимиты сотрудников: 1 / 3 / без лимита;
|
||
- серверная проверка тарифа и функций;
|
||
- после окончания: 7 дней только просмотр, затем блокировка без удаления данных;
|
||
- SaaS-кабинет владельца сервиса: компании, тариф, срок, блокировка, индивидуальная функция;
|
||
- текущая рабочая база Солнце Кейтеринг сохранена на Полном тарифе без практического ограничения срока.
|
||
|
||
Для нового Supabase-проекта:
|
||
1. Выполнить SUPABASE-SETUP.sql.
|
||
2. Выполнить SUPABASE-RBAC-V3.sql.
|
||
3. Выполнить SUPABASE-SAAS-V16.sql.
|
||
4. Выполнить SUPABASE-SAAS-V16-FINALIZE.sql.
|
||
|
||
Для текущего Supabase-проекта эти миграции уже применены.
|
||
|
||
Что НЕ входит в v16:
|
||
- автоматическое списание денег;
|
||
- платёжный webhook;
|
||
- публичная страница оплаты/чекаут;
|
||
- автоматические письма об окончании подписки.
|
||
Сейчас владелец сервиса может активировать и продлевать тариф вручную из SaaS-кабинета.
|
||
|
||
|
||
==============================================================================
|
||
РАЗДЕЛ ИЗ V17-STABILITY-README.txt
|
||
==============================================================================
|
||
СОЛНЦЕ КЕЙТЕРИНГ · v17 STABILITY · LOCAL TEST
|
||
|
||
Эта версия предназначена для локального тестирования перед переносом на постоянный сервер.
|
||
|
||
КАК ЗАПУСТИТЬ
|
||
1. Распакуйте архив в отдельную папку.
|
||
2. Запустите start-local-test.bat.
|
||
3. Приложение откроется по http://localhost:8787/
|
||
4. Войдите в тот же облачный аккаунт Supabase.
|
||
|
||
ЧТО ИЗМЕНИЛОСЬ
|
||
- Старый sun_app_state НЕ удалён и остаётся аварийным мостом.
|
||
- Заказы, строки заказов, каталог, клиенты и настройки зеркалируются в отдельные таблицы v17.
|
||
- Облачное сохранение использует проверку revision. Устаревшая вкладка не может молча затереть более новую облачную версию.
|
||
- Несинхронизированные изменения отмечаются в локальной IndexedDB-очереди.
|
||
- После успешной синхронизации очередь очищается.
|
||
- Ошибки JavaScript сохраняются локально и отправляются в облачный журнал после появления интернета.
|
||
- Раз в день создаётся серверная резервная копия workspace.
|
||
- В Настройки добавлен блок «Стабильность и резервирование · v17».
|
||
- Из него можно вручную сделать backup, восстановить backup и выгрузить аварийный JSON.
|
||
- Добавлен /healthz для будущего серверного мониторинга.
|
||
|
||
ВАЖНО
|
||
v17 пока использует старую структуру как основной источник для интерфейса, а новую структуру как синхронное зеркало.
|
||
Это сделано намеренно для безопасного тестирования. После проверки нескольких реальных рабочих дней можно переключить заказы и каталог на новые таблицы как на основной источник.
|
||
|
||
ПЕРЕНОС НА СЕРВЕР ПОТОМ
|
||
Архитектура уже готова к HTTPS-хостингу: статические файлы + Supabase. Локальный server.js нужен только для удобного тестирования на компьютере.
|
||
|
||
|
||
v17.2: клиентские предложения показывают полный состав каждого бокса во всех шаблонах и PDF; высота строк/карточек рассчитывается динамически.
|