# Загрузка страницы — flow (май 2026) ## Последовательность при открытии/перезагрузке ``` 1. HTML загружен, JS инициализирован │ ▼ 2. checkAuth() (auth.js) ├── localStorage["auth_token"] отсутствует → showLoginOverlay() → СТОП └── токен есть → setUserAvatar() → hideLoginOverlay() → reloadAll() │ ▼ 3. reloadAll() (app.js) ├── показывает в статусе "Загрузка... Nс" (startTimedStatus, тикает каждую секунду) ├── показывает в таблице "⏳ Загружаем функции..." ├── запускает 5 параллельных запросов (Promise.all): │ GET /console/api/environments │ GET /console/api/packages │ GET /console/api/functions ← обычно самый долгий │ GET /console/api/httptriggers │ GET /console/api/timetriggers └── (ждём ответа... может занять 3–10с при cold start) │ ▼ 4. Данные получены ├── обновляем счётчики (envs, pkgs, fns, http, cron) ├── рендерим ПЕРВУЮ строку функций немедленно ├── остальные строки добавляем по одной каждые 40мс (setTimeout) └── по завершении статус: "Загружено N функций за Xс" ``` ## Путь через doLogin() (при ручном входе) После успешного POST /console/api/auth: 1. Сохраняем токен в localStorage 2. Проверяем GET /console/api/ns/status - `ready: false` → `pollNSStatus()` → показывается init-overlay с прогрессом по стадиям - `ready: true` → сразу `reloadAll()` ## Почему долго При первой загрузке после простоя: - Fission `poolmgr` может не иметь прогретых пулов → холодный старт на first request к каждому language env - Kubernetes API (~k8s list всех функций, пакетов) — несколько сотен мс при большом числе объектов - `Promise.all` ждёт самый долгий запрос ## Что показывается пользователю (v1.3.34+) | Момент | Что видит | |---|---| | Сразу при запуске | Таблица: "⏳ Загружаем функции..." | | Каждую секунду | Статус: "Загрузка данных Nс" | | Первая функция пришла | Первая строка таблицы появляется | | +40мс × N | Строки добавляются одна за другой | | Конец | Статус: "Загружено N функций за Xс" | ## Файлы | Файл | Роль | |---|---| | `ui/js/auth.js` → `checkAuth()` | Точка входа при загрузке страницы | | `ui/js/auth.js` → `doLogin()` | Ручной вход, проверка NS status | | `ui/js/app.js` → `reloadAll()` | Загрузка данных, построчный рендер | | `ui/js/init.js` → `pollNSStatus()` | Ожидание готовности namespace (init overlay) | | `ui/js/init.js` → `startTimedStatus()` | Таймер в статус-баре |