Files
Aknaproff/HOTFIX_v4.1.1.md
Deploy Bot 64403d6fd6 v4.1.21: Реструктуризация проекта для Synology ARM
- Реструктуризация: src/ разбит на middleware/, utils/, repositories/ (удалены), routes/ (удалены)
- Добавлен src/original-html.ts — полный HTML с reportModal
- Добавлен src/index.tsx.backup — React-компонент с reportModal
- Миграции переименованы (0001_initial_schema.sql)
- Добавлена миграция 0018 (удалена позже)
- Docker: multi-stage build, wrangler.toml
- Frontend: public/static/app.js + style.css
- seed.sql добавлен
- Документация: CHANGELOG, CHANGES_v4.1.0-4.1.9, PROJECT_STRUCTURE
2026-01-14 18:37:00 +02:00

5.1 KiB
Raw Blame History

🔥 HOTFIX v4.1.1 - Guest Mode Function Fix

Дата: 2025-11-28
Версия: v4.1.1
Статус: Production Ready


🐛 Проблема

Ошибка в консоли:

Uncaught ReferenceError: continueAsGuest is not defined
    onclick https://3000-iabcqs9fpouqnd3allaai-82b888ba.sandbox.gensparksite.com/:1

Симптомы:

  • Кнопка "Vaata ainult" (Только просмотр) не работала
  • При клике появлялась ошибка в консоли
  • Форма логина не закрывалась
  • Guest режим не активировался

🔍 Анализ

Причина: Функция continueAsGuest была определена как обычная функция внутри блока, но не была доступна глобально для HTML onclick обработчика.

Код до исправления:

function continueAsGuest() {
  currentUser = { username: 'Guest', full_name: 'Guest User', role: 'guest' };
  closeLoginModal();
  showMainApp();
  loadRecords();
}

HTML:

<button type="button" onclick="continueAsGuest()">
  <i class="fas fa-eye mr-2"></i>Vaata ainult
</button>

Решение

Изменение: Сделали функцию глобальной через window.continueAsGuest

Код после исправления:

// Make continueAsGuest globally accessible for onclick
window.continueAsGuest = function() {
  // User chose to continue as guest (read-only mode)
  currentUser = { username: 'Guest', full_name: 'Guest User', role: 'guest' };
  closeLoginModal();
  showMainApp();
  loadRecords();
}

Cache-busting: Обновлена версия app.js с 4.1.04.1.1


📝 Изменённые файлы

  1. public/static/app.js

    • Изменена функция continueAsGuestwindow.continueAsGuest
    • Добавлен комментарий о глобальной доступности
  2. public/original.html

    • Обновлена версия: app.js?v=4.1.0app.js?v=4.1.1
  3. src/original-html.ts

    • Регенерирован embedded HTML с новой версией
  4. dist/_worker.js

    • Пересобран с исправлениями

🧪 Тестирование

Шаги:

  1. Открыть страницу → появляется форма логина
  2. Нажать "Vaata ainult" → форма закрывается, таблица показывается
  3. Проверить консоль браузера → ошибок нет
  4. Попробовать изменить данные → появляется alert (read-only режим)

Результаты:

  • Кнопка "Vaata ainult" работает
  • Форма логина закрывается
  • Guest режим активируется
  • Таблица загружается
  • Консоль чистая (нет ошибок)

📦 Deployment

Для обновления на production сервере:

# Скопировать файлы
scp public/static/app.js user@server:/path/to/webapp/public/static/
scp public/original.html user@server:/path/to/webapp/public/
scp src/original-html.ts user@server:/path/to/webapp/src/

# На сервере пересобрать
cd /path/to/webapp
npm run build
docker-compose restart

Альтернативный вариант (только dist):

# Скопировать только собранный файл
scp dist/_worker.js user@server:/path/to/webapp/dist/
docker-compose restart

🔗 URLs


📊 Итоговое состояние

Версия: v4.1.1
Статус: Production Ready
JavaScript Errors: 0
HTTP Status: 200 OK
Page Load: ~9s

Функциональность:

  • Guest режим полностью работает
  • Кнопка "Vaata ainult" функционирует
  • Read-only доступ активируется
  • Форма логина корректно закрывается
  • Кнопка "Logi sisse" доступна в хедере

💡 Уроки

  1. Глобальные функции: Функции, вызываемые из HTML onclick, должны быть глобальными (через window.functionName)
  2. Cache-busting: При изменении JavaScript файлов обязательно обновлять версию (?v=x.x.x)
  3. Проверка консоли: Всегда тестировать в браузере с открытой консолью
  4. Быстрые hotfix: Для критических багов использовать минимальные изменения

🎯 Статус: Hotfix успешно применён, v4.1.1 готов к production deployment