// ЗОВ MiniApp — главный скрипт // На входе: подписанный initData от Telegram. // Ходим на backend → получаем профиль (роль, статус) → рендерим меню. const tg = window.Telegram?.WebApp; const BACKEND_URL = ""; // TODO: заполнить URL Apps Script Web App const app = document.getElementById("app"); async function fetchMe() { if (!BACKEND_URL) { // dev-режим без backend — для локального просмотра вёрстки return { role: "manager", user: { full_name: "Тест Менеджер", salon: "ЗОВ Москва" }, status: "active", status_until: "2026-08-12", }; } const res = await fetch(`${BACKEND_URL}/api/me`, { method: "POST", body: JSON.stringify({ initData: tg?.initData || "", startParam: tg?.initDataUnsafe?.start_param || null, }), }); return res.json(); } function renderManager(me) { const status = me.status || "active"; app.innerHTML = `

Кабинет менеджера

${me.user.full_name} · ${me.user.salon || ""} ${statusLabel(status)}
`; } function renderClient(me) { app.innerHTML = `

Кабинет клиента

${me.user.full_name || "Здравствуйте!"} ${me.manager ? `
Менеджер: ${me.manager.full_name}, ${me.manager.salon || ""}` : ""}
`; } function statusLabel(s) { return { active: "🟢 active", lapsed: "🔴 lapsed", grace: "🟡 grace" }[s] || s; } async function init() { if (tg) { tg.ready(); tg.expand(); } try { const me = await fetchMe(); if (me.role === "manager") renderManager(me); else renderClient(me); } catch (e) { app.innerHTML = `
Ошибка загрузки. Попробуйте позже.
`; console.error(e); } } init();