Инвент ОС v23 — выгрузка в настоящий XLSX

Что изменено:
- Кнопка «Скачать XLSX» формирует настоящий файл .xlsx, а не HTML/XLS.
- Структура файла строгая, как в исходном шаблоне.
- В выгрузке ровно 10 колонок: Модель, Серийный номер, Категория, Тип, Вендор, Помещение, Место, Парт-номер, Первоначальная стоимость, Гарантийный срок.
- Если записей нет, скачивается пустой .xlsx с правильными заголовками.
- Порядок заполнения формы и все предыдущие функции сохранены.


v27: добавлен шутливый помощник-скрепка (авторский персонаж), который следит глазами и показывает подсказки.


v30: добавлены подсказки и справочники для полей Место и Тип.


v50 «Лента Тех»:
- Новый интерфейс в стиле Лента Тех: тёмно-синяя шапка, синий + жёлтый акценты, закреплённые вкладки.
- Вместо скрепки — кот-помощник в гарнитуре (следит глазами, машет хвостом, даёт подсказки).
- В баннере счётчики: позиций / отправлено / офлайн. В форме — полоса прогресса обязательных полей.
- Список: на ПК таблица, на телефоне карточки (раньше показывалось и то и другое сразу).
- Готовые подсказки для полей Место, Тип, Категория, Помещение (плюс всё, что есть в справочниках).
- СКАНЕР ШТРИХКОДОВ ПЕРЕДЕЛАН:
  * если в браузере нет встроенного распознавания (iPhone, ПК, часть Android) — работает библиотека ZXing;
  * фонарик больше не включается сам (давал блики) — есть кнопка «Фонарик»;
  * кнопка «Зум» для мелких наклеек, рамка-прицел, вибрация при распознавании;
  * кадр проверяется по очереди: полоса по центру, центр крупно, весь кадр;
  * скан с фото: учёт поворота, контраст, повороты на 90/180/270.
- Исправлено: дубли функций сборки XLSX; ошибка при кавычке в отсканированном коде; кеш приложения
  теперь не «залипает» на старой версии (страница грузится из сети, при отсутствии интернета — из кеша).
- Всё прежнее сохранено: вход по магазину и паролю, офлайн, XLSX строго 10 колонок, почта, справочники,
  автоочистка 1 числа, «Нравится приложение?», кнопка «не нажимать».

КАК ЗАЛИТЬ НА САЙТ
1. Загрузите в ОДНУ папку на сайте: index.html, sw.js, manifest.webmanifest, icon.svg, README.txt
   (файл preview.html больше не нужен).
2. Сайт должен открываться по HTTPS — без этого камера телефона не запустится (останется только скан с фото).
3. Для сканера без интернета (по желанию, рекомендуется): скачайте
   https://cdn.jsdelivr.net/npm/@zxing/library@0.21.3/umd/index.min.js
   переименуйте в zxing.min.js и положите рядом с index.html. Если файла нет — библиотека подгрузится
   из интернета при первом сканировании и сохранится в кеше.
4. После заливки откройте сайт на телефоне и обновите страницу один раз — подтянется новая версия.
   Добавить на главный экран: меню браузера → «Установить приложение» / «На экран Домой».
5. Важно: пароль входа хранится в самом коде страницы — это защита «от случайных людей», а не настоящая
   безопасность. Не публикуйте ссылку открыто.


v60 «Одно окно»:
- Приложение — одно окно, которое не прокручивается и не «ездит»: шапка, кот и нижнее меню на месте.
- Между «Форма / Список / Справочники» — свайп влево/вправо (и кнопки внизу, под большой палец).
- Форма помещается на экран без прокрутки (проверено на 390×844 и iPhone SE 375×667):
  поля в две колонки, второстепенные (парт-номер, цена, гарантия, комментарий) — в «Дополнительно».
- Кнопка «Добавить» внизу, крупная. Серийный номер: поле + ABC + 📷 в одну строку.
- Инфоблоки: счётчики в шапке, плашка офлайна появляется только когда нужна, почта — раскрывающийся блок,
  справочники — аккордеоны. Список: карточки, по кнопке «Таблица» — таблица.
- Все шутки перенесены во вкладку «Справочники» → «Уголок кота»: объявления в торговом зале,
  «Нравится Инвент ОС?», «не нажимать» (тексты в магазинном стиле).


v70 «Замочек и живой кот»:
- Кнопка 🔓/🔒 «Экран» в шапке. Когда закреплено:
  * свайпы и переход на другие вкладки отключены (вкладки с замочком, кнопка качнётся при попытке);
  * после «Добавить» Место, Помещение и Категория остаются — можно пробивать позиции подряд;
  * экран телефона не гаснет (где браузер поддерживает);
  * состояние запоминается для магазина.
- Кот ожил: радуется и прыгает при добавлении, грустит при удалении, удивляется при сканировании
  и незаполненных полях, гордится выгрузкой XLSX, засыпает через 45 сек без действий (Zzz),
  мурчит, если его погладить (нажать на кота). Сердечки, звёздочки, румянец.
- 16 подсказок-советов и 30 «объявлений в торговом зале».
- Своя картинка кота: если у компании есть разрешённое изображение маскота, положите его рядом
  с index.html под именем cat.png — приложение подставит его вместо нарисованного кота
  (прыжки и реакции сохранятся, слежение глазами — только у нарисованного).


v80 «Понятнее и безопаснее»:
- «Очистить» спрашивает «Да / Нет». Такие же окна (снизу, под палец) — на удаление записи, «Удалить всё»,
  смену магазина, сброс статуса, очистку справочников. Стандартные окна браузера убраны полностью.
- После удаления 5 секунд висит плашка «Вернуть» — случайное удаление можно отменить.
- Форма: блок «История» — последние позиции; «↺ Похожую» подставляет те же данные (кроме серийника),
  «↶ Отменить последнюю», «🧹 Очистить историю» (записи в Списке остаются).
- Пустые обязательные поля после нажатия «Добавить» подсвечиваются красным.
- Список: фильтры Все / Не отправлено / Отправлено / Офлайн; новые карточки (серийник крупно,
  место, статус); нажатие на карточку — редактирование.
- Справочники: «🧹 Очистить подсказки» (вся история подсказок) и «Очистить раздел» в каждом разделе.
- Вход: кнопки недавних магазинов — не нужно вводить номер заново.


v85 «Кот-подсказчик»:
- Подсказки по текущему экрану: на Форме — про порядок полей, сканер, историю; в Списке — про фильтры,
  таблицу, «Вернуть»; в Справочниках — про правила и очистку; в сканере — как держать код.
- Умные подсказки по данным: сколько записей не отправлено, сколько в офлайн-очереди, сколько без серийника,
  «скоро 1 число — скачайте XLSX», «закрепите экран» при большом числе позиций.
- Подсказка при нажатии на каждое поле и кнопку. Нажмите на кота — мурчит или даёт совет.


v90 «ПК и скачивание»:
- ВЕРСИЯ ДЛЯ ПК (экран от 1024 px): форма всегда слева, справа — Список (сразу таблицей) или Справочники.
  Горячие клавиши: Ctrl+Enter — добавить (курсор вернётся в «Место»), Ctrl+S — скачать XLSX,
  Ctrl+F — поиск, Alt+1 / Alt+2 — Список / Справочники. Двойной клик по строке таблицы — редактирование.
- download.html — страница скачивания для сайта: «Установить на телефон/компьютер», «Открыть в браузере»,
  «Скачать офлайн-файл», «Скачать ZIP», инструкции Android / iPhone / Компьютер.
- inventos-offline.html — вся программа одним файлом: скачать и открыть двойным кликом (на ПК — Chrome/Edge).
- invent-os-site.zip — архив для заливки на свой сервер (ссылка на странице скачивания).
- В приложении: «📲 Установить на телефон» во вкладке Справочники (появляется, когда браузер позволяет).

ЧТО ЗАЛИТЬ НА САЙТ (в одну папку):
  index.html, download.html, inventos-offline.html, invent-os-site.zip, sw.js, manifest.webmanifest, icon.svg
  (+ по желанию zxing.min.js и cat.png). Ссылку для сотрудников давайте на download.html.


v95 «Установка в приложении»:
- На главном экране — жёлтая плашка «Установите Инвент ОС» с кнопкой «Установить»
  (скрывается крестиком на 3 дня) и постоянная жёлтая кнопка 📲 в шапке.
- На экране входа — «📲 Установить приложение на телефон или ПК».
- Вкладка «Справочники» → «Установка и скачивание»: Установить, ⬇ Офлайн-файл, ⬇ Архив ZIP,
  инструкции для Android / iPhone / компьютера.
- Кнопка сама понимает устройство: на Android/ПК — системное окно установки, на iPhone — инструкция.
  После установки плашка и кнопки исчезают. В офлайн-файле показывается «Офлайн-версия».
- В комплекте .htaccess (https, правильные типы файлов для sw.js и manifest) — и копия htaccess.txt
  на случай, если скрытый файл не загрузится.

ЗАЛИТЬ НА САЙТ (в папку, к которой привязан invent.magdegr.ru), с заменой:
  index.html, download.html, inventos-offline.html, invent-os-site.zip, sw.js, manifest.webmanifest,
  icon.svg, .htaccess (или htaccess.txt → переименовать в .htaccess). Права: файлы 644, папки 755.
