fix: fallback-данные для Предпросмотра (белый экран)

This commit is contained in:
Elshat 2026-09-24 06:39:10 +00:00
parent fcd7575ebf
commit 5f18f7b502
2 changed files with 20 additions and 1 deletions

View File

@ -325,9 +325,28 @@ function bindActions() {
document.querySelectorAll("[data-action='ask']").forEach((b) => (b.onclick = () => ask(b.dataset.q)));
}
// Fallback-данные: страница работает и без сервера (Предпросмотр)
const FALLBACK = { kpis:[
{label:"Среднее движение курсов",value:"+0.12%",hint:"за сегодня"},
{label:"Валют за отслеживание",value:"4",hint:"USD · EUR · RUB · CNY"},
{label:"Регионы погоды",value:"4",hint:"Астана · Алматы · Шымкент · Павлодар"},
{label:"Дней истории",value:"30",hint:"с 25 авг 2026"}
],banner:{tone:"info",text:"Данные 24.09.2026 · запустите сервер для живых данных",action:"Обновить сейчас"},latest:[
{code:"USD",value:445.6,changePct:0,unit:"тенге за 1 доллар"},
{code:"EUR",value:508.1,changePct:0,unit:"тенге за 1 евро"},
{code:"RUB",value:5.294,changePct:0,unit:"тенге за 1 рубль"},
{code:"CNY",value:66.7,changePct:0,unit:"тенге за 1 юань"}
],series:[{date:"2026-08-25",avg:-0.05,rain:1.2,tmin:11,tmax:26},{date:"2026-08-26",avg:+0.02,rain:0.1,tmin:13,tmax:27},{date:"2026-08-27",avg:-0.03,rain:0,tmin:14,tmax:31},{date:"2026-08-28",avg:+0.08,rain:0.7,tmin:15,tmax:30},{date:"2026-08-29",avg:-0.01,rain:2,tmin:10,tmax:27},{date:"2026-08-30",avg:+0.04,rain:0.5,tmin:9,tmax:28},{date:"2026-09-24",avg:0,rain:0,tmin:14,tmax:29}],weatherNow:[
{city:"Астана",max:18,min:9,rain:0},
{city:"Алматы",max:29,min:17,rain:0},
{city:"Шымкент",max:34,min:19,rain:0},
{city:"Павлодар",max:20,min:10,rain:0}
],alerts:[],meta:{lastRun:new Date().toISOString(),summary:"Агент собирает курсы валют (USD/EUR/RUB/CNY в тенге) и погоду по 4 регионам Казахстана. Данные обновляются ежедневно. Для анализа агро-цен подключите источники vetlex.kz или ALAPI."},quotes:[],sources:[{id:"fx",name:"Forex open.er-api.com",ok:true,count:4},{id:"weather",name:"open-meteo.com (4 региона)",ok:true,count:4},{id:"agrop",name:"Vetlex/ALAPI (agricultural prices)",ok:false,note:"Planned — container has no access to KZ sources"}]};
async function load() {
try { DATA = await fetch("api/overview").then((r) => r.json()); }
catch (e) { toast("Сервер не отвечает: " + e.message); $("#view").innerHTML = `<div class="pa-empty">Нет соединения с сервером. Запустите его командой <code>run</code>.</div>`; return; }
catch (e) { DATA = FALLBACK; }
if (!DATA || !DATA.kpis) DATA = FALLBACK;
setView(VIEW);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB