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

265 lines
23 KiB
Plaintext
Raw Permalink 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.

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.jpg060.jpg находится там полностью, а актуальный каталог использует current-001.jpgcurrent-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.jpgcurrent-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; высота строк/карточек рассчитывается динамически.