mirror of
https://github.com/wasrusgen/zov-tech.git
synced 2026-06-03 16:04:47 +00:00
| .. | ||
| Code.gs | ||
| README.md | ||
| setup_database.gs | ||
Backend (Google Apps Script)
Это код, который живёт в Apps Script-проекте, привязанном к Google Sheet «ЗОВ — База».
Файлы
| Файл | Когда запускать |
|---|---|
setup_database.gs |
один раз, чтобы создать 8 листов (уже выполнено) |
Code.gs |
основной backend, обслуживает MiniApp и бот через doPost |
Шаги после первой установки Code.gs
1. Добавить Script Properties (секреты)
В Apps Script: ⚙️ Project Settings → секция Script Properties → Add property.
| Key | Value |
|---|---|
BOT_TOKEN |
токен Telegram-бота (из @BotFather) |
ANTHROPIC_API_KEY |
sk-ant-api03-… из console.anthropic.com |
ADMIN_TG_ID |
5937498515 (ваш tg_id) |
ANTHROPIC_MODEL |
(опционально) claude-haiku-4-5-20251001 |
2. Запустить разовые setup-функции
В верхней панели селект функций → выбрать → ▶ Run:
seedAdminAsManager— заведёт Руслана Васильева как admin-менеджера в Managers/Users (статус всегда active как ZOV-employee).testClaude— проверит, что Anthropic API ключ работает (увидите ответ AI в Execution log).testTelegram— проверит связку: бот должен прислать вам "🟢 Привет из Apps Script бэкенда".
3. Деплой как Web App
В Apps Script: Deploy → New deployment → шестерёнка Type → Web app.
Параметры:
- Description:
zov-tech-backend v1 - Execute as:
Me (vasrusgen@gmail.com) - Who has access:
Anyone(чтобы MiniApp мог POST'ить, ОБЯЗАТЕЛЬНО)
Жмём Deploy. Получим URL вида:
https://script.google.com/macros/s/AKfycbz.../exec
Этот URL — BACKEND_URL для MiniApp.
4. Прислать URL разработчику
После деплоя URL подставляется в miniapp/assets/app.js, MiniApp начинает реально читать профиль из Sheet вместо мок-данных.
API endpoints
Все запросы — POST {BACKEND_URL}?path=<endpoint> с JSON-телом { initData, ... }.
| Endpoint | Body | Ответ |
|---|---|---|
?path=ping |
{} |
{ pong: true, time } (для health-check) |
?path=me |
{ initData, startParam? } |
профиль пользователя (роль, имя, статус, менеджер) |
?path=measurement |
{ initData, measurement: { layout, area_m2, ... } } |
{ ok: true, id } |
?path=podbor |
{ initData, checklist, measurement_id?, client_name? } |
{ ok: true, id, summary } + AI-ответ в Telegram |
Безопасность
- Все запросы (кроме
ping) обязательно содержатinitDataот Telegram WebApp. - Backend проверяет HMAC-SHA-256 подпись
initDataпоBOT_TOKEN. - При невалидной подписи →
{ error: "invalid_init_data" }. - 24-часовая свежесть подписи (
auth_date).
Обновление
Изменили Code.gs локально → скопировать в Apps Script → Save → Deploy → Manage deployments → Edit → Version: New version → Deploy. URL не меняется.