From 06d767fde7c123b41d74a881d5346743d5ca68a0 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Sat, 7 Nov 2026 02:42:04 +0700 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20README,=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20=D0=B8=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=BA=D1=83,=20=D0=BF=D0=B5=D1=80=D0=B5=D1=81=D0=BD?= =?UTF-8?q?=D1=8F=D1=82=D1=8C=20=D1=81=D0=BA=D1=80=D0=B8=D0=BD=D1=88=D0=BE?= =?UTF-8?q?=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README: главные возможности, галерея, быстрый старт, ссылки на документы - docs/features.md: гид по всем разделам с новыми скриншотами - docs/configuration.md: переменные окружения, права, роли, планировщик - 26 скриншотов нового дизайна на демо-данных (в т.ч. мобильные) - scripts/seed-demo.ts и scripts/docs-screenshots.mjs для пересъёмки Co-Authored-By: Claude Opus 5.5 --- README.md | 304 ++++++-------------- apps/api/scripts/docs-screenshots.mjs | 147 ++++++++++ apps/api/scripts/seed-demo.ts | 285 ++++++++++++++++++ docs/configuration.md | 128 +++++++++ docs/features.md | 244 ++++++++++++++++ docs/screenshots/README.md | 33 +++ docs/screenshots/accounts.png | Bin 0 -> 54633 bytes docs/screenshots/audit.png | Bin 0 -> 48226 bytes docs/screenshots/balance.png | Bin 0 -> 60365 bytes docs/screenshots/blocking.png | Bin 0 -> 50063 bytes docs/screenshots/dashboard-charts.png | Bin 0 -> 49920 bytes docs/screenshots/dashboard.png | Bin 0 -> 57781 bytes docs/screenshots/geo.png | Bin 0 -> 52127 bytes docs/screenshots/mobile-dashboard.png | Bin 0 -> 49173 bytes docs/screenshots/mobile-vps.png | Bin 0 -> 51302 bytes docs/screenshots/payments.png | Bin 0 -> 70381 bytes docs/screenshots/project-detail.png | Bin 0 -> 43051 bytes docs/screenshots/projects.png | Bin 0 -> 45748 bytes docs/screenshots/providers.png | Bin 0 -> 38224 bytes docs/screenshots/renewals.png | Bin 0 -> 46077 bytes docs/screenshots/reports.png | Bin 0 -> 43588 bytes docs/screenshots/resources.png | Bin 0 -> 34173 bytes docs/screenshots/settings-integrations.png | Bin 0 -> 55590 bytes docs/screenshots/settings-notifications.png | Bin 0 -> 44568 bytes docs/screenshots/settings-sync.png | Bin 0 -> 36254 bytes docs/screenshots/settings.png | Bin 0 -> 45445 bytes docs/screenshots/sync-journal.png | Bin 0 -> 49152 bytes docs/screenshots/tariffs.png | Bin 0 -> 59017 bytes docs/screenshots/topology.png | Bin 0 -> 70595 bytes docs/screenshots/vps-detail-finance.png | Bin 0 -> 46576 bytes docs/screenshots/vps-detail.png | Bin 0 -> 37846 bytes docs/screenshots/vps.png | Bin 0 -> 81369 bytes 32 files changed, 931 insertions(+), 210 deletions(-) create mode 100644 apps/api/scripts/docs-screenshots.mjs create mode 100644 apps/api/scripts/seed-demo.ts create mode 100644 docs/configuration.md create mode 100644 docs/features.md create mode 100644 docs/screenshots/README.md create mode 100644 docs/screenshots/accounts.png create mode 100644 docs/screenshots/audit.png create mode 100644 docs/screenshots/balance.png create mode 100644 docs/screenshots/blocking.png create mode 100644 docs/screenshots/dashboard-charts.png create mode 100644 docs/screenshots/dashboard.png create mode 100644 docs/screenshots/geo.png create mode 100644 docs/screenshots/mobile-dashboard.png create mode 100644 docs/screenshots/mobile-vps.png create mode 100644 docs/screenshots/payments.png create mode 100644 docs/screenshots/project-detail.png create mode 100644 docs/screenshots/projects.png create mode 100644 docs/screenshots/providers.png create mode 100644 docs/screenshots/renewals.png create mode 100644 docs/screenshots/reports.png create mode 100644 docs/screenshots/resources.png create mode 100644 docs/screenshots/settings-integrations.png create mode 100644 docs/screenshots/settings-notifications.png create mode 100644 docs/screenshots/settings-sync.png create mode 100644 docs/screenshots/settings.png create mode 100644 docs/screenshots/sync-journal.png create mode 100644 docs/screenshots/tariffs.png create mode 100644 docs/screenshots/topology.png create mode 100644 docs/screenshots/vps-detail-finance.png create mode 100644 docs/screenshots/vps-detail.png create mode 100644 docs/screenshots/vps.png diff --git a/README.md b/README.md index 7c13d83..68a2132 100644 --- a/README.md +++ b/README.md @@ -1,95 +1,60 @@ # VPS Tracker -**VPS Tracker** — это веб-приложение для учёта виртуальных серверов, хостинг-провайдеров, счетов и балансов. Всё работает в браузере: данные хранятся у вас на компьютере или сервере, можно подключить синхронизацию с BILLmanager. +**VPS Tracker** — self-hosted учёт виртуальных серверов: где они стоят, сколько стоят, когда продлевать, сколько денег осталось у хостера и доступны ли с них нужные сервисы. Данные синхронизируются с биллингом хостеров (BILLmanager и др.), хранятся в одном SQLite-файле у вас на сервере, интерфейс работает в браузере и на телефоне. -Ниже описано, как **запустить готовую программу в Linux** с помощью Docker. Отдельно устанавливать Node.js не нужно. +![Дашборд VPS Tracker](docs/screenshots/dashboard.png) + +> Все скриншоты сделаны на демо-данных: хостеры вымышленные, IP из документационных диапазонов (RFC 5737). Как пересоздать — [docs/screenshots/README.md](docs/screenshots/README.md). + +--- + +## Главное + +| | | +|---|---| +| 🖥️ **Инвентарь VPS** | IP/IPv6, DNS, локация с флагом, ресурсы, ОС, проект, окружение, статус, произвольные поля, массовые действия | +| 🔄 **Синхронизация с хостерами** | BILLmanager 6, 4VPS, Маклауд, VDSina, Veesp, RuVDS: серверы, платежи, баланс, тарифы — вручную или по расписанию | +| 💰 **Деньги под контролем** | Платежи, журнал баланса, расход в месяц, «запас дней» до нуля, календарь продлений, отчёты и CSV-экспорт; мультивалютность с курсами ЦБ | +| 🩺 **Здоровье инвентаря** | Uptime-проверки по TCP, истекающая оплата, низкий баланс, расхождения API и журнала — всё на дашборде | +| 🌍 **Блокировки и GeoIP** | Проверка доступности сервисов (YouTube, ChatGPT, Discord…) и GeoIP-страны прямо с VPS или MikroTik одной командой | +| 🗺️ **Схема инфраструктуры** | Визуальный редактор: VPS, связи (сеть, туннель, VPN, зависимость), группы и сервисы CFDM | +| 🔔 **Уведомления** | Telegram (в т.ч. топики и свой Bot API) и webhook: оплата, низкий баланс, дайджест синка, новые тарифы, VPS упал/поднялся | +| 👥 **Команда и пространства** | SSO через auth-portal (JWT), личные и общие пространства с ролями, шаринг VPS между пространствами, журнал изменений | +| 💾 **Бэкапы** | Выгрузка/загрузка JSON или файла БД из интерфейса; данные — один файл `vps-tracker.db` | + +Подробно по каждому разделу — **[docs/features.md](docs/features.md)**. Переменные окружения, роли и права — **[docs/configuration.md](docs/configuration.md)**. --- ## Скриншоты -Дашборд со сводкой по VPS, балансам и графикам: - -![Дашборд VPS Tracker](docs/screenshots/dashboard.png) - -Список виртуальных серверов (IP-адреса на скриншоте замаскированы): - -![Список VPS](docs/screenshots/vps.png) - | | | |---|---| -| ![Хостеры](docs/screenshots/providers.png) | ![Аккаунты хостеров](docs/screenshots/accounts.png) | -| ![Платежи](docs/screenshots/payments.png) | ![Активные тарифы](docs/screenshots/tariffs.png) | -| ![Отчёты](docs/screenshots/reports.png) | ![Настройки](docs/screenshots/settings.png) | +| ![Список VPS](docs/screenshots/vps.png) | ![Карточка VPS](docs/screenshots/vps-detail.png) | +| **VPS** — инвентарь с фильтрами, видами и массовыми действиями | **Карточка VPS** — сеть, ресурсы, финансы, заметки, синк | +| ![Схема инфраструктуры](docs/screenshots/topology.png) | ![Статус блокировок](docs/screenshots/blocking.png) | +| **Схема** — редактор топологии с узлами VPS и типами связей | **Блокировки** — доступность сервисов с каждого VPS | +| ![GeoIP](docs/screenshots/geo.png) | ![Аккаунты хостеров](docs/screenshots/accounts.png) | +| **GeoIP** — какую страну видят GeoIP-базы и сервисы | **Аккаунты** — баланс по API, готовность к синку, пороги | +| ![Платежи](docs/screenshots/payments.png) | ![Отчёты](docs/screenshots/reports.png) | +| **Платежи** — пополнения и прямые оплаты, итоги по валютам | **Отчёты** — расходы по проектам и хостерам, CSV | +| ![Продления](docs/screenshots/renewals.png) | ![Уведомления](docs/screenshots/settings-notifications.png) | +| **Продления** — календарь ближайших оплат | **Уведомления** — Telegram и webhook | + +

+ Дашборд на телефоне +   + Список VPS на телефоне +

--- -## Содержание +## Быстрый старт (Docker) -1. [Скриншоты](#скриншоты) -2. [Что понадобится](#req) -3. [Самый простой способ: готовый образ](#quick) -4. [Запуск через Docker Compose](#compose) -5. [Production: Traefik + Cloudflare HTTPS](#traefik) -6. [Сборка образа у себя](#build-local) -7. [Сохранение данных и резервная копия](#data) -8. [Другой порт и доступ по сети](#port) -9. [Обновление программы](#update) -10. [Для разработчиков](#dev) - ---- - - - -## Что понадобится - -- Компьютер или сервер с **Linux** (подойдут Ubuntu, Debian, Fedora и другие дистрибутивы). -- Установленные **Docker** и плагин **Compose**. Официальные инструкции: [Установка Docker Engine](https://docs.docker.com/engine/install/) и обзор [Compose](https://docs.docker.com/compose/). - -Проверка в терминале: - -```bash -docker --version -docker compose version -``` - ---- - - - -## Самый простой способ: готовый образ - -Подойдёт, если у вас есть только терминал и вы хотите быстро поднять сервис. - -### Шаг 1. Скачать образ - -```bash -docker pull ghcr.io/denozordec/vps-tracker:latest -``` - -> **Если запросили логин:** пакет на GitHub может быть закрытым. Войдите в аккаунт GitHub и создайте [Personal Access Token](https://github.com/settings/tokens) с правом `read:packages`, затем выполните: -> -> ```bash -> echo ВАШ_ТОКЕН | docker login ghcr.io -u ВАШ_ЛОГИН_GITHUB --password-stdin -> ``` -> -> Либо откройте на GitHub страницу пакета **vps-tracker** → **Package settings** и сделайте пакет **public** — тогда `docker pull` без входа. - -### Шаг 2. Папка для данных - -Все записи приложения лежат в одном файле базы. Его нужно хранить **вне** контейнера, иначе при удалении контейнера данные пропадут. +Нужны Linux-сервер (или любая машина) с [Docker](https://docs.docker.com/engine/install/). Node.js ставить не нужно. ```bash mkdir -p ~/vps-tracker-data -``` - -Можно выбрать любой каталог вместо `~/vps-tracker-data` — главное, запомнить путь для команды ниже. - -### Шаг 3. Запуск - -**Вариант А — в фоне** (удобно на сервере, контейнер переживёт закрытие терминала): - -```bash docker run -d \ --name vps-tracker \ --restart unless-stopped \ @@ -98,42 +63,24 @@ docker run -d \ ghcr.io/denozordec/vps-tracker:latest ``` -**Вариант Б — в переднем плане** (логи видны в терминале, остановка — `Ctrl+C`): +Откройте **http://localhost:3001** (или `http://IP_СЕРВЕРА:3001`). База появится в `~/vps-tracker-data/vps-tracker.db`. -```bash -docker run --rm \ - -p 3001:3001 \ - -v ~/vps-tracker-data:/app/data \ - ghcr.io/denozordec/vps-tracker:latest -``` +> **`docker pull` просит логин?** Пакет на GitHub может быть закрытым: войдите через [Personal Access Token](https://github.com/settings/tokens) с правом `read:packages` — `echo ТОКЕН | docker login ghcr.io -u ЛОГИН --password-stdin` — или сделайте пакет public в его настройках. -### Шаг 4. Открыть в браузере +Первые шаги в интерфейсе: -На той же машине откройте: - -**http://localhost:3001** - -Если заходите с другого компьютера в сети — подставьте IP сервера: `http://192.168.1.10:3001` (ваш адрес может отличаться). На сервере может понадобиться открыть порт в брандмауэре, например для Ubuntu с UFW: - -```bash -sudo ufw allow 3001/tcp -sudo ufw reload -``` - -Остановка фонового контейнера: - -```bash -docker stop vps-tracker -docker rm vps-tracker -``` +1. **Хостеры** → добавьте хостера; для синка укажите тип API и URL биллинга. +2. **Аккаунты хостеров** → добавьте аккаунт с логином/токеном API и нажмите «Синхронизировать» — серверы, платежи и баланс подтянутся сами. +3. **Настройки → Общие** → базовая валюта и URL курсов (например `https://www.cbr-xml-daily.ru/daily_json.js`). +4. **Настройки → Синхронизация / Уведомления** → автосинк по расписанию и Telegram. --- - +## Варианты установки -## Запуск через Docker Compose +### Docker Compose -Имеет смысл, если вы **склонировали этот репозиторий**: в [docker-compose.yml](docker-compose.yml) указан готовый образ **ghcr.io/denozordec/vps-tracker** — при `up` он подтягивается с GitHub Container Registry (локальная сборка не нужна). +В [docker-compose.yml](docker-compose.yml) уже указан образ с GHCR, данные — в `./data`: ```bash git clone https://github.com/denozordec/vps-tracker.git @@ -141,140 +88,77 @@ cd vps-tracker docker compose up -d ``` -**То же через Docker CLI** (без Compose) — эквивалент [docker-compose.yml](docker-compose.yml): том `./data`, порт **3001**, переменная **PORT=3001**. +### Production: Traefik + HTTPS (Cloudflare DNS-01) -```bash -mkdir -p ./data -docker pull ghcr.io/denozordec/vps-tracker:latest -docker run -d \ - --name vps-tracker \ - --restart unless-stopped \ - -p 3001:3001 \ - -e PORT=3001 \ - -v "$(pwd)/data:/app/data" \ - ghcr.io/denozordec/vps-tracker:latest -``` - -В PowerShell из каталога проекта подставьте путь к данным так: `-v "${PWD}/data:/app/data"`. - -Данные по умолчанию сохраняются в папку `data` внутри каталога проекта на диске. - -Остановка: - -```bash -docker compose down -``` - ---- - - - -## Production: Traefik + Cloudflare HTTPS (Linux) - -На VPS с доменом в Cloudflare: Traefik (Let's Encrypt **DNS-01**) + контейнер VPS Tracker за HTTPS, без публикации порта `3001` наружу. - -Пошаговая инструкция, compose и `.env`: **[docs/deploy-traefik.md](docs/deploy-traefik.md)** -Файлы: [`deploy/docker-compose.traefik.yml`](deploy/docker-compose.traefik.yml), [`deploy/env.traefik.example`](deploy/env.traefik.example). - -Кратко: +Готовый compose с Traefik и Let's Encrypt, без публикации порта `3001` наружу, плюс короткий домен для launcher-скриптов блокировок/GeoIP: +**[docs/deploy-traefik.md](docs/deploy-traefik.md)** · [`deploy/docker-compose.traefik.yml`](deploy/docker-compose.traefik.yml) · [`deploy/env.traefik.example`](deploy/env.traefik.example) ```bash mkdir -p /opt/vps-tracker/data && cd /opt/vps-tracker -curl -fsSL -o docker-compose.yml \ - https://raw.githubusercontent.com/denozordec/vps-tracker/main/deploy/docker-compose.traefik.yml -curl -fsSL -o .env \ - https://raw.githubusercontent.com/denozordec/vps-tracker/main/deploy/env.traefik.example +curl -fsSL -o docker-compose.yml https://raw.githubusercontent.com/denozordec/vps-tracker/main/deploy/docker-compose.traefik.yml +curl -fsSL -o .env https://raw.githubusercontent.com/denozordec/vps-tracker/main/deploy/env.traefik.example nano .env # CF_DNS_API_TOKEN, LETSENCRYPT_EMAIL, VPS_DOMAIN docker compose pull && docker compose up -d curl -fsS https://ВАШ_ДОМЕН/health ``` ---- - - - -## Сборка образа у себя - -Если нужен свой образ из исходников (после `git clone`): +### Свой образ из исходников ```bash -cd vps-tracker docker build -t vps-tracker:local . -mkdir -p ./data -docker run -d \ - --name vps-tracker \ - --restart unless-stopped \ - -p 3001:3001 \ - -v "$(pwd)/data:/app/data" \ - vps-tracker:local +docker run -d --name vps-tracker --restart unless-stopped \ + -p 3001:3001 -v "$(pwd)/data:/app/data" vps-tracker:local ``` --- - +## Данные, бэкап и обновление -## Сохранение данных и резервная копия +- **Всё хранится в одном файле** `vps-tracker.db` (SQLite) в смонтированной папке (`/app/data` в контейнере). Скопировать его — и есть бэкап. +- **Из интерфейса:** *Настройки → Общие* — выгрузка/загрузка JSON-бэкапа и файла БД (при включённой авторизации — только глобальный админ). +- **Старые базы** обновляются автоматически при старте: недостающие колонки и таблицы добавляются, данные не теряются. +- **Журналы чистятся сами:** уведомления и журнал синка старше 90 дней, uptime-проверки старше 30 дней. -Файл базы в примерах выше лежит на хосте: - -| Способ запуска | Где лежит база на диске | -|----------------|-------------------------| -| `docker run` с `-v ~/vps-tracker-data:/app/data` | `~/vps-tracker-data/vps-tracker.db` | -| Docker Compose из репозитория | `./data/vps-tracker.db` в папке проекта | - -Скопируйте файл `vps-tracker.db` в безопасное место — это и есть резервная копия. Пока приложение не запущено, можно просто скопировать файл обратно для восстановления. - ---- - - - -## Другой порт и доступ по сети - -Внутри контейнера приложение слушает порт **3001**. Сменить внешний порт (например, **8080** снаружи, 3001 внутри): - -```bash -docker run -d \ - --name vps-tracker \ - --restart unless-stopped \ - -p 8080:3001 \ - -v ~/vps-tracker-data:/app/data \ - ghcr.io/denozordec/vps-tracker:latest -``` - -Тогда в браузере: **http://localhost:8080** - -Чтобы сменить и внутренний порт (редко нужно), добавьте `-e PORT=8080` и согласуйте с `-p`, например `-p 8080:8080` и `-e PORT=8080`. - ---- - - - -## Обновление программы - -Если используете образ с GitHub: +Обновление: ```bash docker pull ghcr.io/denozordec/vps-tracker:latest -docker stop vps-tracker -docker rm vps-tracker +docker stop vps-tracker && docker rm vps-tracker +# и снова docker run из «Быстрого старта» с тем же -v …:/app/data ``` -Затем снова выполните команду `docker run` из раздела [«Самый простой способ»](#quick) (том `-v ...:/app/data` оставьте тот же — данные сохранятся). +С Compose: `git pull && docker compose up -d` (`pull_policy: always` подтянет свежий образ). -При Docker Compose из репозитория: - -```bash -cd vps-tracker -git pull -docker compose up -d -``` - -Файл Compose настроен с `pull_policy: always`, поэтому при каждом `up` запрашивается актуальный образ с GHCR. +Другой порт снаружи: `-p 8080:3001` → `http://localhost:8080`. Сменить порт внутри контейнера: `-e PORT=8080 -p 8080:8080`. --- - +## Документация + +| Документ | О чём | +|---|---| +| [docs/features.md](docs/features.md) | Все разделы интерфейса и как ими пользоваться | +| [docs/configuration.md](docs/configuration.md) | Переменные окружения, авторизация, роли, синк, уведомления, планировщик | +| [docs/deploy-traefik.md](docs/deploy-traefik.md) | Production за Traefik с HTTPS | +| [docs/screenshots/README.md](docs/screenshots/README.md) | Демо-данные и пересъёмка скриншотов | +| [apps/api/src/services/billmanager/profiles/README.md](apps/api/src/services/billmanager/profiles/README.md) | Как добавить профиль нового BILLmanager-хостера | +| [AGENTS.md](AGENTS.md) | Архитектура и карта кода (для разработчиков и ИИ-агентов) | + +--- ## Для разработчиков -Локальный запуск без Docker: `npm install` и `npm run dev`. Подробности по коду, API и синхронизации — в [AGENTS.md](AGENTS.md). +Monorepo на **pnpm**: `apps/web` (Vite + React 19 + TanStack Router/Query + shadcn/ui + ReUI), `apps/api` (Fastify 5), `packages/db` (Drizzle + better-sqlite3), `packages/shared` (Zod-контракты). + +```bash +pnpm install +pnpm --filter api dev # API на :3001 (база — apps/api/data/vps-tracker.db или DB_PATH) +pnpm --filter web dev # фронтенд с hot reload +pnpm --filter api test # тесты API (Vitest) +pnpm --filter web test # тесты фронтенда +pnpm --filter web build # production-сборка фронтенда +``` + +Демо-данные для разработки: `cd apps/api && DB_PATH=../../data/demo.db VITEST=1 npx tsx scripts/seed-demo.ts --serve` → http://127.0.0.1:3101. + +Подробнее об устройстве кода — [AGENTS.md](AGENTS.md). diff --git a/apps/api/scripts/docs-screenshots.mjs b/apps/api/scripts/docs-screenshots.mjs new file mode 100644 index 0000000..e885868 --- /dev/null +++ b/apps/api/scripts/docs-screenshots.mjs @@ -0,0 +1,147 @@ +/** + * Screenshots for README/docs via Chrome DevTools Protocol (no extra deps: Node ≥ 22 has WebSocket). + * Start the demo first (see seed-demo.ts --serve), then: + * + * node apps/api/scripts/docs-screenshots.mjs [outDir=docs/screenshots] + * + * Env: BASE (default http://127.0.0.1:3101), CHROME (path to chrome/msedge). + * Waits for real time (not virtual time) so Recharts animations finish before the shot. + */ +import { spawn } from 'node:child_process' +import { existsSync, mkdirSync, mkdtempSync, writeFileSync } from 'node:fs' +import { tmpdir } from 'node:os' +import { join } from 'node:path' + +const outDir = process.argv[2] ?? 'docs/screenshots' +const BASE = process.env.BASE ?? 'http://127.0.0.1:3101' +const CHROME = + process.env.CHROME ?? + [ + 'C:/Program Files/Google/Chrome/Application/chrome.exe', + 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe', + '/usr/bin/google-chrome', + '/usr/bin/chromium', + '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', + ].find(existsSync) +const PORT = 9333 +const sleep = (ms) => new Promise((r) => setTimeout(r, ms)) + +const getJson = async (path) => (await fetch(BASE + path)).json() +const vps = await getJson('/api/vps') +const projects = await getJson('/api/projects') +const vpsId = (dns) => vps.find((v) => v.dns === dns)?.id +const mobile = { width: 390, height: 844, mobile: true } + +const jobs = [ + { name: 'dashboard', path: '/dashboard' }, + { name: 'dashboard-charts', path: '/dashboard', scrollY: 700 }, + { name: 'vps', path: '/vps' }, + { name: 'vps-detail', path: `/vps/${vpsId('web-1.example.net')}` }, + { name: 'vps-detail-finance', path: `/vps/${vpsId('monitor.example.net')}`, clickText: 'Финансы' }, + { name: 'blocking', path: '/blocking' }, + { name: 'geo', path: '/geo' }, + { name: 'topology', path: '/topology', waitMs: 4500 }, + { name: 'tariffs', path: '/tariffs' }, + { name: 'providers', path: '/providers' }, + { name: 'accounts', path: '/accounts' }, + { name: 'projects', path: '/projects' }, + { name: 'project-detail', path: `/projects/${projects.find((p) => p.name === 'VPN')?.id}` }, + { name: 'payments', path: '/payments' }, + { name: 'balance', path: '/balance' }, + { name: 'reports', path: '/reports' }, + { name: 'resources', path: '/resources' }, + { name: 'renewals', path: '/renewals' }, + { name: 'settings', path: '/settings' }, + { name: 'settings-sync', path: '/settings/sync' }, + { name: 'settings-notifications', path: '/settings/notifications' }, + { name: 'settings-integrations', path: '/settings/integrations' }, + { name: 'sync-journal', path: '/sync-journal' }, + { name: 'audit', path: '/audit' }, + { name: 'mobile-dashboard', path: '/dashboard', ...mobile }, + { name: 'mobile-vps', path: '/vps', ...mobile }, +] + +mkdirSync(outDir, { recursive: true }) +const chrome = spawn( + CHROME, + [ + '--headless=new', + '--disable-gpu', + '--hide-scrollbars', + `--remote-debugging-port=${PORT}`, + `--user-data-dir=${mkdtempSync(join(tmpdir(), 'vt-shots-'))}`, + 'about:blank', + ], + { stdio: 'ignore' }, +) + +let target +for (let i = 0; i < 50 && !target; i++) { + await sleep(200) + try { + target = (await getJsonAbs(`http://127.0.0.1:${PORT}/json`)).find((t) => t.type === 'page') + } catch {} +} +async function getJsonAbs(url) { + return (await fetch(url)).json() +} + +const ws = new WebSocket(target.webSocketDebuggerUrl) +await new Promise((r) => ws.addEventListener('open', r)) +let seq = 0 +const pending = new Map() +ws.addEventListener('message', (e) => { + const m = JSON.parse(e.data) + if (m.id && pending.has(m.id)) { + pending.get(m.id)(m) + pending.delete(m.id) + } +}) +const send = (method, params = {}) => + new Promise((r) => { + const id = ++seq + pending.set(id, r) + ws.send(JSON.stringify({ id, method, params })) + }) +const evaluate = async (expression) => + (await send('Runtime.evaluate', { expression, awaitPromise: true, returnByValue: true })).result?.result + ?.value + +await send('Page.enable') +await send('Runtime.enable') +for (const job of jobs) { + await send('Emulation.setDeviceMetricsOverride', { + width: job.width ?? 1440, + height: job.height ?? 900, + deviceScaleFactor: job.mobile ? 2 : 1, + mobile: Boolean(job.mobile), + }) + await send('Page.navigate', { url: BASE + job.path }) + await sleep(job.waitMs ?? 3500) + if (job.clickText) { + // Base UI tabs react to real pointer input, so click via CDP at the element's centre. + for (let i = 0; i < 20 && !(await evaluate(`document.querySelectorAll('[role=tab]').length`)); i++) + await sleep(500) + const pos = await evaluate(`(() => { + const el = [...document.querySelectorAll('button,[role=tab],a')] + .find((e) => (e.innerText || '').trim().startsWith(${JSON.stringify(job.clickText)})) + if (!el) return null + const r = el.getBoundingClientRect() + return { x: r.x + r.width / 2, y: r.y + r.height / 2 } })()`) + if (!pos) console.warn(job.name, 'not found:', job.clickText) + else + for (const type of ['mousePressed', 'mouseReleased']) + await send('Input.dispatchMouseEvent', { type, x: pos.x, y: pos.y, button: 'left', clickCount: 1 }) + await sleep(1800) + } + if (job.scrollY) { + await evaluate(`window.scrollBy(0, ${job.scrollY})`) + await sleep(1200) + } + const shot = await send('Page.captureScreenshot', { format: 'png' }) + writeFileSync(join(outDir, `${job.name}.png`), Buffer.from(shot.result.data, 'base64')) + console.log('ok', job.name) +} +ws.close() +chrome.kill() +process.exit(0) diff --git a/apps/api/scripts/seed-demo.ts b/apps/api/scripts/seed-demo.ts new file mode 100644 index 0000000..d9b5bbc --- /dev/null +++ b/apps/api/scripts/seed-demo.ts @@ -0,0 +1,285 @@ +/** + * Demo data for screenshots/docs. Fictional hosters, IPs from documentation ranges (RFC 5737). + * Needs an EMPTY database file. VITEST=1 keeps src/index.ts from starting the real server + scheduler. + * + * cd apps/api + * DB_PATH=../../data/demo.db VITEST=1 LOG_LEVEL=warn npx tsx scripts/seed-demo.ts --serve + * + * With --serve the seeded app keeps listening on PORT (default 3101) for scripts/docs-screenshots.mjs. + */ +import { getSqlite } from '@cfdm/db' +import { buildApp } from '../src/index.js' +import { mintIngestToken } from '../src/services/censorcheck/ingest-token.js' +import { stopScheduler } from '../src/services/scheduler.js' + +const SECRET = process.env.CENSORCHECK_INGEST_SECRET || 'demo-secret' +process.env.CENSORCHECK_INGEST_SECRET = SECRET +process.env.CENSORCHECK_RATE_LIMIT = '0' + +const app = await buildApp() +const sqlite = getSqlite() + +async function api(method: string, url: string, payload?: unknown, headers = {}): Promise { + const res = await app.inject({ method: method as 'POST', url, payload: payload as object, headers }) + if (res.statusCode >= 300) throw new Error(`${method} ${url} → ${res.statusCode}: ${res.body}`) + return res.json() as T +} + +const day = (offset: number) => { + const d = new Date() + d.setDate(d.getDate() + offset) + return d.toISOString().slice(0, 10) +} + +// --- settings +await api('PUT', '/api/settings/settings-main', { + baseCurrency: 'RUB', + ratesUrl: 'https://www.cbr-xml-daily.ru/daily_json.js', + autoConvert: true, + syncEnabled: false, + notifyPaymentExpiryEnabled: true, + notifyLowBalanceEnabled: true, + notifySyncDigestEnabled: true, + notifyVpsDownEnabled: true, + telegramChatId: '-1001234567890', +}) + +// --- providers & accounts +const providers = [ + { key: 'nord', name: 'Nordhost', website: 'https://nordhost.example', baseCurrency: 'EUR', eurRate: '98.5', usdRate: '91.2', apiType: 'billmanager', apiBaseUrl: 'https://my.nordhost.example/billmgr' }, + { key: 'aurora', name: 'Aurora Cloud', website: 'https://aurora-cloud.example', baseCurrency: 'RUB', apiType: 'billmanager', apiBaseUrl: 'https://billing.aurora-cloud.example/billmgr' }, + { key: 'baltic', name: 'Baltic VDS', website: 'https://balticvds.example', baseCurrency: 'RUB', apiType: 'none', apiBaseUrl: '' }, + { key: 'pixel', name: 'Pixel Hosting', website: 'https://pixelhost.example', baseCurrency: 'USD', usdRate: '91.2', apiType: 'none', apiBaseUrl: '' }, +] +const prov: Record = {} +for (const p of providers) prov[p.key] = (await api('POST', '/api/providers', p)).id + +const accounts = [ + { key: 'nord', providerId: prov.nord, name: 'Nordhost — основной', currency: 'EUR', billingMode: 'monthly', apiCredentials: 'demo:demo', balanceAlertBelow: 20, balance: 46.8, enough: day(38) }, + { key: 'aurora', providerId: prov.aurora, name: 'Aurora — проекты', currency: 'RUB', billingMode: 'daily', apiCredentials: 'demo:demo', balanceAlertBelow: 1500, balance: 1120, enough: day(9) }, + { key: 'baltic', providerId: prov.baltic, name: 'Baltic VDS', currency: 'RUB', billingMode: 'monthly', balance: null, enough: '' }, + { key: 'pixel', providerId: prov.pixel, name: 'Pixel — US', currency: 'USD', billingMode: 'monthly', balance: null, enough: '' }, +] +const acc: Record = {} +for (const a of accounts) { + const { key, balance, enough, ...body } = a + acc[key] = (await api('POST', '/api/provider-accounts', body)).id + if (balance != null) { + sqlite + .prepare(`UPDATE provider_accounts SET balance_api = ?, balance_currency = ?, balance_updated_at = ?, enoughmoneyto = ? WHERE id = ?`) + .run(balance, a.currency, new Date(Date.now() - 40 * 60_000).toISOString(), enough, acc[key]) + } +} + +// --- projects +const projects = [ + { name: 'Сайт и API', color: '#2563eb' }, + { name: 'VPN', color: '#16a34a' }, + { name: 'Мониторинг', color: '#d97706' }, + { name: 'Staging', color: '#9333ea' }, +] +for (const p of projects) await api('POST', '/api/projects', p) + +// --- VPS +type V = Record & { key: string } +const vpsList: V[] = [ + { key: 'web1', dns: 'web-1.example.net', ip: '203.0.113.10', ipv6: '2001:db8:10::1', providerId: prov.nord, providerAccountId: acc.nord, country: 'Нидерланды', city: 'Амстердам', datacenter: 'AMS-1', os: 'Debian 12', vcpu: 4, ramGb: 8, diskGb: 120, diskType: 'NVMe', virtualization: 'KVM', project: 'Сайт и API', environment: 'production', purpose: 'Frontend + API', tariffType: 'monthly', currency: 'EUR', monthlyRate: 14.9, paidUntil: day(4), monitoringEnabled: true, backupEnabled: true }, + { key: 'web2', dns: 'web-2.example.net', ip: '203.0.113.11', providerId: prov.nord, providerAccountId: acc.nord, country: 'Германия', city: 'Франкфурт', datacenter: 'FRA-2', os: 'Debian 12', vcpu: 4, ramGb: 8, diskGb: 120, diskType: 'NVMe', virtualization: 'KVM', project: 'Сайт и API', environment: 'production', purpose: 'Frontend + API (HA)', tariffType: 'monthly', currency: 'EUR', monthlyRate: 14.9, paidUntil: day(19), monitoringEnabled: true, backupEnabled: true }, + { key: 'db1', dns: 'db-1.example.net', ip: '203.0.113.20', providerId: prov.nord, providerAccountId: acc.nord, country: 'Нидерланды', city: 'Амстердам', datacenter: 'AMS-1', os: 'Ubuntu 24.04', vcpu: 8, ramGb: 32, diskGb: 480, diskType: 'NVMe', virtualization: 'KVM', project: 'Сайт и API', environment: 'production', purpose: 'PostgreSQL', tariffType: 'monthly', currency: 'EUR', monthlyRate: 39, paidUntil: day(19), monitoringEnabled: true, backupEnabled: true }, + { key: 'vpn1', dns: 'vpn-fi.example.net', ip: '198.51.100.31', providerId: prov.aurora, providerAccountId: acc.aurora, country: 'Финляндия', city: 'Хельсинки', datacenter: 'HEL', os: 'Ubuntu 22.04', vcpu: 1, ramGb: 1, diskGb: 15, diskType: 'SSD', virtualization: 'KVM', project: 'VPN', environment: 'production', purpose: 'WireGuard', tariffType: 'daily', currency: 'RUB', dailyRate: 9.5, paidUntil: '', monitoringEnabled: true }, + { key: 'vpn2', dns: 'vpn-de.example.net', ip: '198.51.100.32', providerId: prov.aurora, providerAccountId: acc.aurora, country: 'Германия', city: 'Нюрнберг', datacenter: 'NUE', os: 'Ubuntu 22.04', vcpu: 1, ramGb: 2, diskGb: 20, diskType: 'SSD', virtualization: 'KVM', project: 'VPN', environment: 'production', purpose: 'WireGuard + Xray', tariffType: 'daily', currency: 'RUB', dailyRate: 12, paidUntil: '', monitoringEnabled: true }, + { key: 'vpn3', dns: 'vpn-kz.example.net', ip: '198.51.100.33', providerId: prov.aurora, providerAccountId: acc.aurora, country: 'Казахстан', city: 'Алматы', datacenter: 'ALA', os: 'Debian 12', vcpu: 1, ramGb: 1, diskGb: 10, diskType: 'SSD', virtualization: 'KVM', project: 'VPN', environment: 'production', purpose: 'Xray', tariffType: 'daily', currency: 'RUB', dailyRate: 7.2, paidUntil: '', monitoringEnabled: true }, + { key: 'mon', dns: 'monitor.example.net', ip: '192.0.2.40', providerId: prov.baltic, providerAccountId: acc.baltic, country: 'Россия', city: 'Москва', datacenter: 'MSK-DC3', os: 'Rocky Linux 9', vcpu: 2, ramGb: 4, diskGb: 60, diskType: 'SSD', virtualization: 'KVM', project: 'Мониторинг', environment: 'production', purpose: 'Grafana + Prometheus', tariffType: 'monthly', currency: 'RUB', monthlyRate: 690, paidUntil: day(2), monitoringEnabled: true, backupEnabled: true }, + { key: 'stage', dns: 'stage.example.net', ip: '192.0.2.41', providerId: prov.baltic, providerAccountId: acc.baltic, country: 'Россия', city: 'Санкт-Петербург', datacenter: 'SPB-1', os: 'Debian 12', vcpu: 2, ramGb: 4, diskGb: 40, diskType: 'SSD', virtualization: 'KVM', project: 'Staging', environment: 'staging', purpose: 'Staging', tariffType: 'monthly', currency: 'RUB', monthlyRate: 450, paidUntil: day(26), monitoringEnabled: false }, + { key: 'us1', dns: 'edge-us.example.net', ip: '192.0.2.50', providerId: prov.pixel, providerAccountId: acc.pixel, country: 'США', city: 'Нью-Йорк', datacenter: 'NYC-3', os: 'Ubuntu 24.04', vcpu: 2, ramGb: 2, diskGb: 50, diskType: 'NVMe', virtualization: 'KVM', project: 'Сайт и API', environment: 'production', purpose: 'Edge / CDN origin', tariffType: 'monthly', currency: 'USD', monthlyRate: 12, paidUntil: day(11), monitoringEnabled: true }, + { key: 'old', dns: 'legacy.example.net', ip: '192.0.2.60', providerId: prov.pixel, providerAccountId: acc.pixel, country: 'США', city: 'Даллас', datacenter: 'DAL-1', os: 'CentOS 7', vcpu: 1, ramGb: 1, diskGb: 25, diskType: 'HDD', virtualization: 'OpenVZ', project: 'Staging', environment: 'staging', purpose: 'Старый сервер', status: 'paused', tariffType: 'monthly', currency: 'USD', monthlyRate: 5, paidUntil: day(-12) }, +] +const vps: Record = {} +for (const { key, ...body } of vpsList) vps[key] = (await api('POST', '/api/vps', body)).id + +// --- payments (6 months) and ledger +for (let m = 5; m >= 0; m--) { + await api('POST', '/api/payments', { type: 'provider_balance_topup', date: day(-m * 30 - 3), amount: 60 + (m % 2) * 15, currency: 'EUR', providerAccountId: acc.nord, note: 'Пополнение картой' }) + await api('POST', '/api/payments', { type: 'provider_balance_topup', date: day(-m * 30 - 7), amount: 900 + m * 50, currency: 'RUB', providerAccountId: acc.aurora, note: 'СБП' }) + await api('POST', '/api/payments', { type: 'direct_vps_payment', date: day(-m * 30 - 1), amount: 690, currency: 'RUB', providerAccountId: acc.baltic, vpsId: vps.mon, note: 'Продление monitor' }) + await api('POST', '/api/payments', { type: 'direct_vps_payment', date: day(-m * 30 - 10), amount: 12, currency: 'USD', providerAccountId: acc.pixel, vpsId: vps.us1, note: 'Продление edge-us' }) +} +await api('POST', '/api/payments', { type: 'direct_vps_payment', date: day(-20), amount: 450, currency: 'RUB', providerAccountId: acc.baltic, vpsId: vps.stage, note: 'Продление staging' }) +for (let i = 0; i < 6; i++) { + await api('POST', '/api/balance-ledger', { type: 'daily_debit', date: day(-i), amount: 28.7, currency: 'RUB', direction: 'debit', providerAccountId: acc.aurora, note: 'Списание за VPN-серверы' }) +} +await api('POST', '/api/balance-ledger', { type: 'provider_balance_topup', date: day(-7), amount: 1200, currency: 'RUB', direction: 'credit', providerAccountId: acc.aurora, note: 'Пополнение' }) + +// --- tariffs from "sync" +const tariffs = [ + ['AMS-1', 'Нидерланды', 'KVM-S', 2, 4, 60, '7.90 EUR'], ['AMS-1', 'Нидерланды', 'KVM-M', 4, 8, 120, '14.90 EUR'], + ['AMS-1', 'Нидерланды', 'KVM-L', 8, 32, 480, '39.00 EUR'], ['FRA-2', 'Германия', 'KVM-S', 2, 4, 60, '8.50 EUR'], + ['FRA-2', 'Германия', 'KVM-M', 4, 8, 120, '14.90 EUR'], +] as const +const now = new Date().toISOString() +tariffs.forEach(([dc, country, name, cpu, ram, disk, price], i) => + sqlite + .prepare( + `INSERT INTO active_tariffs (id, spaceId, providerAccountId, providerId, externalId, datacenterKey, datacenterName, name, desc, vcpu, ramGb, diskGb, diskType, virtualization, channel, location, country, cpuModel, orderAvailable, price, syncedAt) + VALUES (?, 'space-main', ?, ?, ?, ?, ?, ?, '', ?, ?, ?, 'NVMe', 'KVM', '1 Гбит/с', ?, ?, 'AMD EPYC', 1, ?, ?)`, + ) + .run(`tariff-demo-${i}`, acc.nord, prov.nord, String(100 + i), dc, dc, name, cpu, ram, disk, dc, country, price, now), +) +;[ + ['VPN-1', 1, 1, 10, '7.20 ₽/день'], ['VPN-2', 1, 2, 20, '12.00 ₽/день'], ['Cloud-4', 4, 8, 80, '39.00 ₽/день'], +].forEach(([name, cpu, ram, disk, price], i) => + sqlite + .prepare( + `INSERT INTO active_tariffs (id, spaceId, providerAccountId, providerId, externalId, datacenterKey, datacenterName, name, desc, vcpu, ramGb, diskGb, diskType, virtualization, channel, location, country, cpuModel, orderAvailable, price, syncedAt) + VALUES (?, 'space-main', ?, ?, ?, 'HEL', 'Хельсинки', ?, '', ?, ?, ?, 'SSD', 'KVM', '1 Гбит/с', 'Хельсинки', 'Финляндия', 'Intel Xeon', 1, ?, ?)`, + ) + .run(`tariff-demo-a${i}`, acc.aurora, prov.aurora, String(200 + i), name, cpu, ram, disk, price, now), +) + +// --- sync journal +const syncRows: [string, number, string, number, number, string | null][] = [ + [acc.nord, 35, 'ok', 3, 1, null], [acc.aurora, 36, 'ok', 3, 0, null], + [acc.nord, 95, 'ok', 3, 0, null], [acc.aurora, 96, 'error', 0, 0, 'HTTP 502 Bad Gateway'], + [acc.nord, 155, 'ok', 3, 0, null], [acc.aurora, 156, 'ok', 3, 1, null], +] +syncRows.forEach(([accountId, minAgo, status, vpsCount, paymentsCount, error], i) => { + const started = new Date(Date.now() - minAgo * 60_000) + sqlite + .prepare(`INSERT INTO sync_log (id, spaceId, accountId, startedAt, finishedAt, status, vpsCount, paymentsCount, error, summary) VALUES (?, 'space-main', ?, ?, ?, ?, ?, ?, ?, ?)`) + .run(`sync-demo-${i}`, accountId, started.toISOString(), new Date(started.getTime() + 4200).toISOString(), status, vpsCount, paymentsCount, error, + JSON.stringify(status === 'ok' ? { added: [], updated: i === 0 ? [{ id: vps.web1, label: 'web-1.example.net', fields: ['paidUntil'] }] : [], paymentsAdded: paymentsCount, vpsCount, paymentsCount, tariffsCount: 0 } : { error })) +}) + +// --- uptime history +const health: Record = { web1: 'up', web2: 'up', db1: 'up', vpn1: 'up', vpn2: 'down', vpn3: 'up', mon: 'up', us1: 'up' } +for (const [key, status] of Object.entries(health)) { + for (let i = 0; i < 12; i++) { + const st = i === 0 ? status : 'up' + sqlite + .prepare(`INSERT INTO vps_health_checks (id, spaceId, vpsId, checkedAt, status, latencyMs, error) VALUES (?, 'space-main', ?, ?, ?, ?, ?)`) + .run(`hc-demo-${key}-${i}`, vps[key], new Date(Date.now() - i * 5 * 60_000).toISOString(), st, st === 'up' ? 20 + ((i * 7) % 40) : null, st === 'down' ? 'timeout' : null) + } + sqlite.prepare(`UPDATE vps SET last_health_status = ?, last_health_checked_at = ? WHERE id = ?`).run(status, now, vps[key]) +} + +// --- notifications journal +;[ + ['payment_expiry', 'telegram', 'sent', 'Истекает оплата (ближайшие 7 дней):\n\n• monitor.example.net (Baltic VDS) — до ' + day(2)], + ['vps_down', 'telegram', 'sent', 'VPS недоступны:\n\n• vpn-de.example.net'], + ['low_balance', 'telegram', 'sent', 'Низкий баланс:\n\n• Aurora — проекты: 1120 RUB (порог 1500)'], + ['sync_digest', 'webhook', 'sent', 'Синхронизация VPS:\n\n✓ Nordhost — основной: изм. 1, платежи +1'], +].forEach(([event, channel, status, message], i) => + sqlite + .prepare(`INSERT INTO notification_log (id, spaceId, event, channel, status, fingerprint, message, payload, createdAt) VALUES (?, 'space-main', ?, ?, ?, '', ?, NULL, ?)`) + .run(`nlog-demo-${i}`, event, channel, status, message, new Date(Date.now() - (i + 1) * 47 * 60_000).toISOString()), +) + +// --- censorcheck (blocking) & ipregion (GeoIP) via the real ingest API +const ccServices: [string, Record][] = [ + ['youtube.com', { vpn1: 200, vpn2: 200, vpn3: 200, web1: 200 }], + ['instagram.com', { vpn1: 200, vpn2: 200, vpn3: 403, web1: 200 }], + ['chatgpt.com', { vpn1: 200, vpn2: 200, vpn3: 403, web1: 200 }], + ['discord.com', { vpn1: 200, vpn2: 0, vpn3: 200, web1: 200 }], + ['x.com', { vpn1: 200, vpn2: 200, vpn3: 200, web1: 200 }], + ['netflix.com', { vpn1: 302, vpn2: 200, vpn3: 403, web1: 200 }], + ['spotify.com', { vpn1: 200, vpn2: 200, vpn3: 403, web1: 200 }], + ['linkedin.com', { vpn1: 200, vpn2: 200, vpn3: 200, web1: 200 }], +] +const auth = () => ({ authorization: `Bearer ${mintIngestToken(SECRET)}` }) +let n = 0 +for (const key of ['vpn1', 'vpn2', 'vpn3', 'web1']) { + const ip = vpsList.find((v) => v.key === key)!.ip as string + n++ + await api('POST', '/api/integrations/censorcheck/runs', { + schemaVersion: 1, + runId: `00000000-0000-4000-8000-00000000000${n}`, + probe: { publicIp: ip }, + launcherVersion: '1', + censorcheck: { version: '12c5839', mode: 'both' }, + results: ccServices.map(([service, codes]) => ({ service, raw: { https: { ipv4: { status: codes[key] } } } })), + }, auth()) +} +const geo: Record = { vpn1: 'FI', vpn2: 'DE', vpn3: 'KZ', web1: 'NL', us1: 'US' } +// Keys from IPREGION_*_SERVICES so the matrix columns line up with the real vernette/ipregion list +const geoServices: [string, string][] = [ + ['maxmind.com', 'primary'], ['rdap.db.ripe.net', 'primary'], ['ipinfo.io', 'primary'], ['cloudflare.com', 'primary'], + ['ipregistry.co', 'primary'], ['ipapi.co', 'primary'], ['ifconfig.co', 'primary'], ['ip2location.io', 'primary'], + ['google', 'custom'], ['youtube', 'custom'], ['netflix', 'custom'], ['chatgpt', 'custom'], + ['cloudflare cdn', 'cdn'], ['youtube cdn', 'cdn'], +] +for (const [key, cc] of Object.entries(geo)) { + const ip = vpsList.find((v) => v.key === key)!.ip as string + n++ + await api('POST', '/api/integrations/ipregion/runs', { + schemaVersion: 1, + runId: `00000000-0000-4000-9000-0000000000${String(n).padStart(2, '0')}`, + probe: { publicIp: ip }, + launcherVersion: '1', + ipregion: { version: '7d1c25c' }, + results: geoServices.map(([service, group], i) => ({ + service, + group, + // a few services see the KZ node elsewhere — the kind of mismatch the matrix highlights + ipv4: key === 'vpn3' && (i === 4 || i === 10) ? 'RU' : key === 'vpn1' && i === 9 ? 'SE' : cc, + ipv6: key === 'web1' ? cc : null, + })), + }, auth()) +} + +// --- topology diagram +const node = (id: string, x: number, y: number, key: string) => ({ + id, + type: 'vps', + position: { x, y }, + data: { vpsId: vps[key] }, +}) +const edge = (source: string, target: string, relation: string, extra: Record = {}) => ({ + id: `e-${source}-${target}`, + source, + target, + sourceHandle: 'bottom', + targetHandle: 'top', + type: 'topology', + data: { relation, direction: 'forward', lineStyle: 'solid', ...extra }, +}) +await api('POST', '/api/topology', { + name: 'Production', + document: { + viewport: { x: 0, y: 0, zoom: 1 }, + nodes: [ + { id: 'users', type: 'shape', position: { x: 470, y: 0 }, data: { kind: 'ellipse', label: 'Пользователи' } }, + node('us1', 470, 130, 'us1'), + node('web1', 220, 290, 'web1'), + node('web2', 720, 290, 'web2'), + node('db1', 470, 460, 'db1'), + node('mon', 970, 460, 'mon'), + node('vpn1', 120, 640, 'vpn1'), + node('vpn2', 470, 640, 'vpn2'), + node('vpn3', 820, 640, 'vpn3'), + { id: 'note', type: 'note', position: { x: 1120, y: 640 }, data: { text: 'VPN-узлы для команды: WireGuard + Xray' } }, + ], + edges: [ + edge('users', 'us1', 'network', { label: 'HTTPS' }), + edge('us1', 'web1', 'network'), + edge('us1', 'web2', 'network'), + edge('web1', 'db1', 'dependency', { label: 'PostgreSQL' }), + edge('web2', 'db1', 'dependency'), + { ...edge('mon', 'db1', 'dependency', { lineStyle: 'dashed', label: 'метрики' }), sourceHandle: 'left', targetHandle: 'right' }, + { ...edge('vpn1', 'vpn2', 'tunnel', { direction: 'bidirectional' }), sourceHandle: 'right', targetHandle: 'left' }, + { ...edge('vpn2', 'vpn3', 'tunnel', { direction: 'bidirectional' }), sourceHandle: 'right', targetHandle: 'left' }, + ], + }, +}) + +// PUT /api/settings restarts the scheduler; its uptime checks against documentation IPs would flip +// every monitored VPS to "down", so the demo runs without it. +stopScheduler() +console.log('demo seeded:', Object.keys(vps).length, 'VPS') +if (process.argv.includes('--serve')) { + const port = Number(process.env.PORT ?? 3101) + await app.listen({ port, host: '127.0.0.1' }) + console.log(`demo UI: http://127.0.0.1:${port}/dashboard`) +} else { + await app.close() + process.exit(0) +} diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 0000000..a85e63b --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,128 @@ +# Настройка VPS Tracker + +Всё, что настраивается переменными окружения, плюс как устроены авторизация, планировщик и хранение данных. Настройки, которые меняются в интерфейсе (валюта, Telegram, интервалы синка), описаны в [features.md](features.md). + +- [Переменные окружения](#переменные-окружения) +- [Авторизация и права](#авторизация-и-права) +- [Пространства](#пространства) +- [Планировщик](#планировщик) +- [Блокировки и GeoIP](#блокировки-и-geoip) +- [Хранение данных и миграции](#хранение-данных-и-миграции) +- [Безопасность](#безопасность) + +--- + +## Переменные окружения + +### Основные + +| Переменная | По умолчанию | Назначение | +|---|---|---| +| `PORT` | `3001` | Порт HTTP-сервера | +| `DB_PATH` | `/data/vps-tracker.db` (в Docker — `/app/data/vps-tracker.db`) | Путь к файлу SQLite | +| `LOG_LEVEL` | `info` | Уровень логов Fastify (`debug`, `warn`…) | +| `NODE_ENV` | — | `production` включает доверие к прокси и требует явных секретов | +| `TRUST_PROXY` | `1` в production | Доверять `X-Forwarded-For` (нужно за Traefik/nginx для реального IP клиента) | +| `BACKUP_BODY_LIMIT_BYTES` | `104857600` (100 МБ) | Максимальный размер загружаемого бэкапа | + +### Авторизация (auth-portal) + +| Переменная | По умолчанию | Назначение | +|---|---|---| +| `AUTH_REQUIRED` | `false` | `true` — все `/api/*` требуют JWT портала | +| `AUTH_JWT_SECRET` (или `JWT_SECRET`) | dev-секрет вне production | Секрет подписи JWT (обязателен при `AUTH_REQUIRED=true`, ≥ 8 символов) | +| `AUTH_ISSUER` | `https://auth.shnt.top` | Ожидаемый `iss` в токене | +| `AUTH_PORTAL_URL` | `http://localhost:5175` | URL портала: вход, каталог пользователей, аудит | +| `AUTH_AUDIT_INGEST_SECRET` | — | Секрет для отправки событий журнала изменений в аудит портала | +| `VPS_MAIN_SPACE_OWNER_USER_ID` | — | Пользователь портала, которого назначить владельцем «Основного» пространства | + +### Блокировки и GeoIP + +| Переменная | По умолчанию | Назначение | +|---|---|---| +| `CENSORCHECK_INGEST_SECRET` | — | Секрет HMAC-токенов, которыми скрипты отправляют результаты (общий для блокировок и GeoIP) | +| `CENSORCHECK_PUBLIC_URL` | — | Публичный URL, который подставляется в команды `curl …/cc`, `…/ic` | +| `CENSORCHECK_RATE_LIMIT` | включён | `0` — отключить rate limit на приёме результатов | +| `VPS_LAUNCHER_DOMAIN` | — | (Traefik-compose) короткий домен для launcher-скриптов | + +--- + +## Авторизация и права + +По умолчанию (`AUTH_REQUIRED=false`) авторизации нет — удобно для домашней установки за VPN. Для команды включите SSO через auth-portal: пользователь входит на портале, приложение проверяет JWT и права. + +Токен должен содержать приложение `vps` в `apps`, иначе — 403. Права имеют вид `vps:<раздел>:`; `write` включает `read`, `admin` включает оба. + +| Раздел | Чтение | Запись | +|---|---|---| +| Дашборд и всё прочее | `vps:dashboard:read` | — | +| VPS, проекты, схема, данные, блокировки, GeoIP | `vps:vps:read` | `vps:vps:write` | +| Хостеры и аккаунты | `vps:accounts:read` | `vps:accounts:write` | +| Платежи, баланс, курсы | `vps:payments:read` | `vps:payments:write` | +| Синхронизация | `vps:sync:write` | `vps:sync:write` | +| Настройки, журнал изменений, уведомления, бэкап | `vps:settings:admin` | `vps:settings:admin` | + +**Глобальный администратор** — пользователь с `is_admin` в токене или правом `vps:spaces:admin`. Только он может скачивать и восстанавливать бэкап и файл БД и запускать legacy-миграцию: эти операции затрагивают все пространства и содержат учётные данные API. + +Публичные (без JWT) эндпоинты: `/health`, `/ready`, `/api/auth/config`, launcher-скрипты `/cc*`, `/ic*` и приём результатов `/api/integrations/{censorcheck,ipregion}` (защищены своим HMAC-токеном), `/api/integrations/cfdm/*` (токен интеграции). + +--- + +## Пространства + +Каждая запись (VPS, хостер, платёж, настройки…) принадлежит пространству. Клиент выбирает пространство заголовком `X-Space-Id`; без него — «Основное». + +| Роль | Может | +|---|---| +| **viewer** | смотреть | +| **member** | менять VPS, проекты, схемы, платежи, баланс, хостеров и аккаунты, запускать синк | +| **admin** | + настройки пространства, участники, шаринг VPS | +| **owner** | + передача владения, удаление пространства | + +Права портала и роль в пространстве проверяются **обе**: для записи платежа нужны и `vps:payments:write`, и роль не ниже member. + +Синхронизация, уведомления (свой Telegram/webhook), uptime-проверки и CFDM работают отдельно для каждого пространства. + +--- + +## Планировщик + +Запускается вместе с сервером и перезапускается при сохранении настроек. + +| Задача | Интервал | Условие | +|---|---|---| +| Синк VPS, платежей и баланса | настройка, ≥ 15 мин (по умолчанию 60) | включён автосинк | +| Синк тарифов | настройка, ≥ 60 мин (по умолчанию 1440) | включён автосинк | +| Напоминания об оплате | настройка, ≥ 15 мин (по умолчанию 60) | всегда | +| Uptime-проверки | настройка, ≥ 1 мин (по умолчанию 5) | у VPS включён мониторинг | +| Pull доменов из CFDM | 15 мин | интеграция включена, есть URL и токен | +| Очистка журналов | раз в сутки и при старте | всегда | + +Таймеры тикают с самым частым интервалом среди пространств, но каждое пространство выполняется по своему. Если предыдущий прогон задачи ещё идёт, тик пропускается. Ручной и плановый синк одного аккаунта не выполняются одновременно (второй получает `409`). + +--- + +## Блокировки и GeoIP + +1. Задайте `CENSORCHECK_INGEST_SECRET` (длинная случайная строка) и `CENSORCHECK_PUBLIC_URL` (например `https://vt.example.com`). +2. За Traefik используйте отдельный короткий хост `VPS_LAUNCHER_DOMAIN` — см. [deploy-traefik.md](deploy-traefik.md). +3. На сервере: `curl -fsSL https://vt.example.com/cc | bash` (блокировки) или `…/ic | bash` (GeoIP). Каждый запуск получает свежий токен на 20 минут. + +Скрипты — закреплённые версии [vernette/censorcheck](https://github.com/vernette/censorcheck) и [vernette/ipregion](https://github.com/vernette/ipregion) (MIT) в `apps/api/scripts/`. + +--- + +## Хранение данных и миграции + +- Одна база SQLite (WAL, внешние ключи включены). Бэкап — копия файла `vps-tracker.db` или выгрузка из интерфейса. +- При старте схема **доводится автоматически**: создаются недостающие таблицы и колонки, данные старых версий (например, URL BILLmanager из аккаунтов) переносятся на новое место. Отдельно запускать миграции не нужно. +- Ретеншн: `notification_log` и `sync_log` — 90 дней, `vps_health_checks` — 30 дней; синки в статусе `running` старше часа помечаются ошибкой. + +--- + +## Безопасность + +- Включайте `AUTH_REQUIRED=true`, если приложение доступно не только вам; иначе любой с доступом к порту видит и меняет данные. +- Учётные данные API хранятся в БД открытым текстом (их нужно отправлять хостеру) и **не отдаются** в API/интерфейс — только признак «задано» и логин. Храните файл БД и бэкапы как секрет. +- `/api/rates-proxy` запрашивает только URL курсов, сохранённый в настройках, — произвольные адреса не проксируются. +- Запросы к Telegram и webhook ограничены таймаутом 10 секунд. diff --git a/docs/features.md b/docs/features.md new file mode 100644 index 0000000..f3f03d5 --- /dev/null +++ b/docs/features.md @@ -0,0 +1,244 @@ +# Возможности VPS Tracker + +Гид по всем разделам интерфейса. Скриншоты — на демо-данных (вымышленные хостеры, IP из RFC 5737). + +**Содержание** + +1. [Дашборд](#дашборд) +2. [VPS и карточка сервера](#vps-и-карточка-сервера) +3. [Проекты](#проекты) +4. [Схема инфраструктуры](#схема-инфраструктуры) +5. [Хостеры, аккаунты и синхронизация](#хостеры-аккаунты-и-синхронизация) +6. [Активные тарифы](#активные-тарифы) +7. [Платежи, баланс и продления](#платежи-баланс-и-продления) +8. [Отчёты и ресурсы](#отчёты-и-ресурсы) +9. [Статус блокировок](#статус-блокировок) +10. [GeoIP](#geoip) +11. [Уведомления](#уведомления) +12. [Пространства, пользователи и роли](#пространства-пользователи-и-роли) +13. [Журналы](#журналы) +14. [Настройки, интеграции и бэкапы](#настройки-интеграции-и-бэкапы) + +--- + +## Дашборд + +![Дашборд](screenshots/dashboard.png) + +Одна страница, чтобы понять, всё ли в порядке: + +- **KPI**: активные VPS, расход в месяц (в базовой валюте), суммарный баланс у хостеров по API, **запас дней** — на сколько хватит денег при текущем расходе, сколько VPS истекает в ближайшие 7 дней, число проблем. +- **Баннер «Требуется внимание»** и кнопка «Внимание» в шапке собирают проблемы инвентаря: истекающая оплата, низкий баланс, давно не синхронизированные аккаунты, расхождение баланса API и журнала. +- **Быстрые действия** — переходы в частые разделы (можно скрыть в настройках). +- **Графики** платежей и расходов по месяцам и таблица «Здоровье инвентаря» с CSV-экспортом. + +![Графики и здоровье инвентаря](screenshots/dashboard-charts.png) + +Все суммы в разных валютах пересчитываются в базовую: по курсу хостера (если задан в карточке хостера) или по курсам из URL в настройках (формат ЦБ РФ `cbr-xml-daily` или `{ base, rates }`). + +--- + +## VPS и карточка сервера + +![Список VPS](screenshots/vps.png) + +- Таблица с поиском по IP, DNS, проекту, назначению и ОС; фильтры, настраиваемые колонки (вид), сортировка. +- Для каждого сервера: IP/IPv6 и доп. адреса, домены (из CFDM), аккаунт и хостер, страна/город/ДЦ с флагом, CPU/RAM/диск, проект, статус, тариф (дневной/месячный), оплачено до. +- **Массовые действия**: выделите несколько VPS — сменить статус или проект, удалить. +- **Произвольные поля** (настраиваются в *Настройки → Общие*) появляются в таблице и форме. +- Поля, изменённые вручную, запоминаются как «пользовательские» — синхронизация с хостером их не перезаписывает. + +Карточка сервера разбита на вкладки: **Обзор** (сеть и ресурсы), **Финансы** (тариф, дата оплаты и связанные платежи), **Заметки**, **Синк** (что пришло от хостера). + +| | | +|---|---| +| ![Карточка VPS — обзор](screenshots/vps-detail.png) | ![Карточка VPS — финансы](screenshots/vps-detail-finance.png) | + +**Дата «оплачено до»** считается автоматически: из поля хостера, а для дневного тарифа — из баланса аккаунта и суточного списания; прямые платежи за VPS продлевают дату. + +**Uptime-мониторинг**: для VPS с включённым мониторингом раз в N минут (по умолчанию 5) проверяется TCP-доступность SSH-порта. Переходы «упал/поднялся» попадают в уведомления и историю проверок. + +--- + +## Проекты + +![Проекты](screenshots/projects.png) + +Группировка серверов по проектам (цвет, заметки). Для каждого — количество VPS, расход в месяц и суммарные ресурсы. Карточка проекта показывает его VPS и быстрые переходы в отчёты. + +![Карточка проекта](screenshots/project-detail.png) + +Проект можно указать прямо в форме VPS: существующий находится без учёта регистра (в том числе кириллица), новый создаётся автоматически. + +--- + +## Схема инфраструктуры + +![Схема инфраструктуры](screenshots/topology.png) + +Редактор топологии на React Flow: + +- узлы **VPS** (с флагом, IP, ресурсами, ценой и статусом uptime), фигуры, заметки, группы; +- **связи** с типом (сеть, зависимость, туннель, VPN, синхронизация, произвольная), направлением, стилем линии, подписью, протоколом и IP концов туннеля; +- **сервисы CFDM** — отдельные узлы с членством VPS (для балансировки/HA); +- несколько схем во вкладках, блокировка от случайных правок, экспорт в PNG, автосохранение. + +--- + +## Хостеры, аккаунты и синхронизация + +| | | +|---|---| +| ![Хостеры](screenshots/providers.png) | ![Аккаунты хостеров](screenshots/accounts.png) | + +**Хостер** — компания (сайт, базовая валюта, курсы USD/EUR для пересчёта) и **тип API** с URL биллинга — один на хостера. +**Аккаунт** — ваш логин у хостера: учётные данные API, режим оплаты (ежедневно/ежемесячно), порог низкого баланса. Пароли API в интерфейс не возвращаются — видно только, что они заданы, и логин. + +Поддерживаемые API: + +| Тип | Что нужно в аккаунте | Что синхронизируется | +|---|---|---| +| **BILLmanager 6** | логин и пароль API | VPS, платежи, баланс, тарифы `vds.order` по всем ДЦ | +| **4VPS** | Panel ID и API Key | VPS, баланс, тарифы | +| **Маклауд / VDSina** (userapi) | API Token | VPS, операции, баланс, тарифы | +| **Veesp** | email и пароль client area | VPS, счета, баланс, тарифы | +| **RuVDS** | API-токен из ЛК | VPS, платежи, баланс, тарифы | + +Для разных BILLmanager-хостеров есть **профили** с особенностями их API (FirstByte, IHOR, DataCheap, Serv.host, WaiCore, LandVPS, Cloudrix…) — новый добавляется одним файлом, см. [profiles/README.md](../apps/api/src/services/billmanager/profiles/README.md). + +Синхронизация запускается кнопкой на аккаунте («Синхронизировать» / «Синхронизировать все») или по расписанию (*Настройки → Синхронизация*: интервал синка VPS и платежей — от 15 минут, тарифов — от 60 минут). Повторный запуск во время идущего синка того же аккаунта отклоняется. Каждый запуск пишется в [журнал синка](#журналы). + +--- + +## Активные тарифы + +![Активные тарифы](screenshots/tariffs.png) + +Прайс-листы хостеров, загруженные через API: ресурсы, цена, ДЦ, доступность к заказу. Удобно сравнивать хостеров и замечать новые тарифы — о них приходит уведомление. Если загрузка прайс-листа не удалась, сохранённый список не стирается. + +--- + +## Платежи, баланс и продления + +![Платежи](screenshots/payments.png) + +- **Платежи** — пополнения баланса хостера и прямые оплаты VPS (привязка к аккаунту и/или серверу необязательна), итоги по валютам, импорт из синка без дублей. +- **Баланс и списания** — журнал движений по балансу (приход/расход), сводка и чистый остаток. +- **Продления** — календарь ближайших оплат на 7/30/90 дней и стоимость продлений. + +| | | +|---|---| +| ![Баланс и списания](screenshots/balance.png) | ![Продления](screenshots/renewals.png) | + +--- + +## Отчёты и ресурсы + +![Отчёты](screenshots/reports.png) + +- **Отчёты**: расход в месяц по проектам и хостерам, платежи по типам, фильтр по проекту и периоду, экспорт в CSV. +- **Ресурсы**: суммарные vCPU/RAM/диск активных VPS и распределение по хостерам. + +![Ресурсы](screenshots/resources.png) + +--- + +## Статус блокировок + +![Статус блокировок](screenshots/blocking.png) + +Проверка доступности популярных сервисов **с самого VPS** (через [censorcheck](https://github.com/vernette/censorcheck)): доступен, заблокирован, отказ (403), редирект, таймаут. Результат автоматически привязывается к VPS по IP; есть история прогонов и группировка по VPS или по сервису. + +Запуск на сервере — одна команда (скрипт ставит недостающие `jq`/`dig`, показывает прогресс и отправляет результат с одноразовым токеном): + +```bash +curl -fsSL https://vt.example.com/cc | bash # разовая проверка +curl -fsSL https://vt.example.com/cc | bash -s -- --daily # раз в сутки (cron) +curl -fsSL https://vt.example.com/cc | bash -s -- --remove-daily +``` + +**MikroTik (RouterOS 7.22+)** — пробы идут через указанный исходящий IP: + +``` +:global "vt-srcIp" "1.2.3.4"; /tool fetch url="https://vt.example.com/cc.rsc" dst-path=vt-cc.rsc; /import file-name=vt-cc.rsc +``` + +(`?daily=1` — ежедневный scheduler, `?remove=daily` — удалить.) Кнопки «Скопировать команду», «Раз в день», «MikroTik» на странице подставляют ваш домен. Нужны `CENSORCHECK_INGEST_SECRET` и `CENSORCHECK_PUBLIC_URL` — см. [configuration.md](configuration.md#блокировки-и-geoip). + +--- + +## GeoIP + +![GeoIP](screenshots/geo.png) + +Какую страну видят у вашего IP GeoIP-базы (MaxMind, RIPE, ipinfo, Cloudflare…) и сервисы (Google, YouTube, Netflix, ChatGPT…), включая CDN, — через [ipregion](https://github.com/vernette/ipregion). Матрица VPS × сервис, переключение «по VPS / по сервису», подсветка расхождений, история. + +Запуск так же, как у блокировок: `curl -fsSL https://vt.example.com/ic | bash` (`--daily`, `--remove-daily`), для MikroTik — `ic.rsc`. + +--- + +## Уведомления + +![Настройки уведомлений](screenshots/settings-notifications.png) + +Каналы: **Telegram** (Chat ID, несколько чатов через запятую, топики форума через Thread ID, свой Bot API URL для прокси) и **webhook** (POST JSON). Кнопка «Тест» проверяет настройки и подсказывает типичные ошибки (бот не в чате, неверный токен, нет топика). + +| Событие | Когда | Повтор | +|---|---|---| +| Истекает оплата | VPS с оплатой в ближайшие 7 дней | не чаще раза в сутки для того же набора | +| Низкий баланс | баланс аккаунта по API ниже порога | раз в сутки | +| Дайджест синка | после планового синка, если что-то изменилось | при новых изменениях | +| Новые тарифы | у хостера появились тарифы | при новом наборе | +| VPS недоступен / восстановлен | переход статуса uptime-проверки | каждый переход | + +Каждое событие включается отдельно. Все отправки (и пропуски-дубли) видны в журнале уведомлений. Длинные сообщения обрезаются по строкам под лимит Telegram, имена из API экранируются. + +--- + +## Пространства, пользователи и роли + +При включённой авторизации (`AUTH_REQUIRED=true`) вход идёт через **auth-portal** (JWT), а данные разделены на **пространства**: + +- у каждого пользователя есть личное пространство; есть общее «Основное» и можно создавать командные; +- роли в пространстве: **owner → admin → member → viewer**. Viewer только смотрит; member меняет VPS, платежи, хостеров, аккаунты и запускает синк; admin управляет настройками и участниками; +- **шаринг VPS**: сервер можно показать в другом пространстве (чтение/запись) или передать целиком; +- удалённые пространства попадают в корзину и восстанавливаются; +- права портала (`vps:<раздел>:read|write|admin`) ограничивают разделы поверх ролей — см. [configuration.md](configuration.md#авторизация-и-права). + +Синхронизация, уведомления, uptime и интеграции работают отдельно для каждого пространства. + +--- + +## Журналы + +| | | +|---|---| +| ![Журнал синка](screenshots/sync-journal.png) | ![Журнал изменений](screenshots/audit.png) | + +- **Журнал синка** — каждый запуск по аккаунтам: время, длительность, статус, что изменилось или текст ошибки. +- **Журнал изменений** — кто, когда и что поменял (создание/изменение/удаление) с diff полей; лента или таблица. При настроенном портале события дублируются в его аудит. + +Старые записи журналов удаляются автоматически (уведомления и синк — 90 дней, uptime-проверки — 30 дней). + +--- + +## Настройки, интеграции и бэкапы + +| | | +|---|---| +| ![Общие настройки](screenshots/settings.png) | ![Синхронизация](screenshots/settings-sync.png) | + +- **Общие** — быстрые действия на дашборде, базовая валюта, URL курсов и автоконвертация, произвольные поля VPS, **бэкап/восстановление** (JSON или файл БД). +- **Синхронизация** — автосинк и интервалы. +- **Уведомления** — Telegram, webhook и выбор событий. +- **Интеграции** — **App Switcher** (переключатель приложений в шапке) и **CF Domain Manager (CFDM)**: домены и балансировщики из CFDM подтягиваются каждые 15 минут и показываются у VPS и на схеме. + +![Интеграции](screenshots/settings-integrations.png) + +Работает и на телефоне — меню сворачивается, таблицы прокручиваются: + +

+ Дашборд на телефоне +   + VPS на телефоне +

diff --git a/docs/screenshots/README.md b/docs/screenshots/README.md new file mode 100644 index 0000000..6943fe3 --- /dev/null +++ b/docs/screenshots/README.md @@ -0,0 +1,33 @@ +# Скриншоты + +Скриншоты в README и `docs/` сняты на **демо-данных**: хостеры вымышленные (Nordhost, Aurora Cloud, Baltic VDS, Pixel Hosting), IP — из документационных диапазонов RFC 5737 (`203.0.113.0/24`, `198.51.100.0/24`, `192.0.2.0/24`), домены — `*.example.net`. + +## Как пересоздать + +Нужны собранный фронтенд и Chrome/Chromium/Edge. + +```bash +pnpm install +pnpm --filter web build +pnpm --filter @cfdm/shared build && pnpm --filter @cfdm/db build +``` + +1. Поднять демо на пустой базе (порт 3101, без планировщика): + + ```bash + cd apps/api + rm -f ../../data/demo.db* + DB_PATH=../../data/demo.db VITEST=1 LOG_LEVEL=warn npx tsx scripts/seed-demo.ts --serve + ``` + +2. В другом терминале из корня репозитория снять все экраны: + + ```bash + node apps/api/scripts/docs-screenshots.mjs docs/screenshots + ``` + + Путь к браузеру — переменная `CHROME`, адрес демо — `BASE`. + +Список экранов и их параметры (размер окна, клик по вкладке, прокрутка, мобильный режим) — в начале [`docs-screenshots.mjs`](../../apps/api/scripts/docs-screenshots.mjs). Демо-данные — [`seed-demo.ts`](../../apps/api/scripts/seed-demo.ts). + +Файлы в репозитории дополнительно ужаты до 256-цветной палитры (тёмная тема переносит это без видимых потерь), чтобы README грузился быстрее. diff --git a/docs/screenshots/accounts.png b/docs/screenshots/accounts.png new file mode 100644 index 0000000000000000000000000000000000000000..d393c64f1a8fafc82d9c88916d11cb69b84f17ee GIT binary patch literal 54633 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 WO-*E=?~lX4b?nG@K@DGjfAKesegMS) literal 0 HcmV?d00001 diff --git a/docs/screenshots/audit.png b/docs/screenshots/audit.png new file mode 100644 index 0000000000000000000000000000000000000000..72a716917e217a8bc1c6db8b6589d240108498e9 GIT binary patch literal 48226 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�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 CC7I*^ literal 0 HcmV?d00001 diff --git a/docs/screenshots/balance.png b/docs/screenshots/balance.png new file mode 100644 index 0000000000000000000000000000000000000000..926246ea006e5d35cbd6b2d8d4a5eb27d820fb9d GIT binary patch literal 60365 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%0DN7~~5T2fj-oec8`dM-WgjoivK@uap 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 Jr&`ki@gJoQq6Yu~ literal 0 HcmV?d00001 diff --git a/docs/screenshots/blocking.png b/docs/screenshots/blocking.png new file mode 100644 index 0000000000000000000000000000000000000000..4097a4cd24e07e66ae733180f1d7628e20478da5 GIT binary patch literal 50063 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 literal 0 HcmV?d00001 diff --git a/docs/screenshots/dashboard-charts.png b/docs/screenshots/dashboard-charts.png new file mode 100644 index 0000000000000000000000000000000000000000..e49378438e5a5a0564803c4d780f7acf296f0c22 GIT binary patch literal 49920 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 literal 0 HcmV?d00001 diff --git a/docs/screenshots/dashboard.png b/docs/screenshots/dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..3aacc2587091ce4a34e0129b8383d718aa6c8596 GIT binary patch literal 57781 zcma&N1yEc;w=Oz^yGw9)C%6tCAV46v1}A86he-%-!3jYI3l6~@65JU)c#y#*xWgUt zpE`A3y?fugQ(aSg@9y2Ux_f==TWd$YQCGsoAjbdz0NBc}EY4Q?a|2X-p_;mt)1;17;GB`gI&XVuNJCL zh7$Li-u$fwEL>j=o?cIEpZr-{TU}n6pI?}qou8VTo*Vr&Iy&Cf-P76rYpy0>uJ}d6 z{6SlLM}0$6RaJF)d1YC7Wo2b%S!rp(>`hTwML}WF$DX5*>Jhfe&MRNe?sVafkL(ag zUUo)uvnR{fjLhVew3zth@c87==#<#_xX9SJ=s3Tyh}ejTu!xTV(O|3SK%E#jHUES( z|9C&Y=un3*v34=ZL7$@oKf0TJOtA=w(EF5S9~3Pg^yKOr`r0em$J^tBn>RAD?Sm{p0j7NB7S^^FIu37*JT+PERY{x_$UX?Zb`YbKuuIo4b2KzH)73YAt@Tdx zt)9BZTNO1eHO*H_Dz6olRa6zlWaJfQkLgs70% zOF?)NeJLQSE=Z-xMJ2@hLV%O_<#Qqs;9zGri>A@Zr8aP3RQ^Pu7)T*wLM-4*$ZbK! zr^(GLK*Yn(!TFMdlb4;7mxq&ykyDI?Lx7u|@&_H&CmL35IxY=5Vi_h;8Adi4MrLV7 zc`kZ$CMpRw79M6+PDW-9CPp?fCTbB{8bMlSL0U#`MoNAvYC0BmIwlS}dL~*%c3OHC zT6$($DsmbIRvJ2H8ahU5c%o&Zre&n2W+0+>B%+fir(-7|D8&%(h2rZJIT z%Ws{#ZF9oi>=9f153EgBdFeuDr3+M#`- z1(1Wo{_DyA%(hF94!o6tb>1Yf2S4>b(foVG{;uDpOj^9Zv=fwv`1ua?ujCKdW5 z1+9RAl`la#a-(4oI!K0}_vgops*din6b2C0?r^;|q%U z+jbs%DU-Y~u__N7R(kf9zH{L&9eQ3ZUPFH@y5wmiJDsVft$ zPUV%qF*A-=0l1onOW50G%7_DI%O(p2rXA795pIRO!>EnguG7cYDVzhCWjl*{goDr9I@Ly2wQhn&Ba(~-#fdVV`m`lemV6%Q!J z|LIXl?Aezs&M1asrO{YE&G;X&V6F@OxUxk#r~vq)E|(A|x8=+cp~Pw5*1I?WUl+I^jr zI}nQ1tq{5shg`+vEYCJXAl`-}--;(LE~sojn%u7nT^--CytXI#I%KnRH1ghIG4=k- zV_a21m ztoygld^45rTY*Za-rNql0awd%bsu6g{I!x0>^{O8Q#nmbdPJ50lDA~E`c&ZNIMMCtNt!0331>Kp)7!;)3kN9faG7O_e-5$t6b#xuPC!i$US|Z zK7*krz{V&+8jU{=%)v@(kI?$v(uBs6KA~2G+xDwjACz+*-6bMOcMD407#Suyu}rK5 zvlzOL{R&kRcV-KE_vsRVtAVvfJ_aZ1D|^7<>m$B+9DaTwokC&q?hucM7fBstp!h^! z`;HRFLPr+$0mja5snJn3-}-FB?yv30Rm;Wis8O83MNI>aD)MkK1Ow0g%XGPNuls5Q zR|BtZGjz&U-U6r~x~Ryn?Y)rCvriD9rAD2tVxa)ZGbQhd*B_EFAr#+BSQpV2V#HS; z0Cs6~6bU$?;%~D=i%RLSWca3OiYLiptBK|YYTumuDi!m)b))YDWU;?0)A=f|E$=~4 z`lo!>N@`aUJuTVuc)e$d`y zLLGSEvL`3EYYd3QgdlphEGjM4thc@gnzt;5AVG?j>3Pe^JcB0U1$qvTFS%k~XpD-} zCf8tq#<7~pvHU_@06O@^CThpI$>_# z^}fDl55!i5YDLIp{jAme@Hx}rTi^$P;Rjs|*W&3Gwj*#VxXq@^YH-GDlXxF~YM+*= zcg30Gu%Wcu_UMy>oaQQ(Y7=dIKt3-(Pm0)hS;7-5P$CVa@}01j zs9Up;R|1jlYqLwb1M4K^3!~$ptjmGwAf@7SGEI9O`K=wu-`{*P%s5v55eu?%()6Rb zlWwbSBK$+B;OqiW+B&J$pLw9&n#nlUl9+WO?aivMM@TA9<7ffd^OWI0NteYjtU>X( zUST2#0+y>p;A{cwgU?1quDs)ql^->z=x{~{y6b+t61-_W#@RfwpHpt~Ik6wl`n;jL zBmq$)?eFOkK?|Ii#)oe5q4u^SWLSUx`_98d%^$QVx2sH&FT@xxJ(w3)j1N+WP|MB1 zI*25h2`Bo&-_6I8+-`VVmEyQDj29c6+9=?sMCV1>17Tl~;L8sr6?ys|KP${qUcXqp zJV`cM1iWvi`da#v7y(*~GlE9mJd3^qZuMcbditE8 zyk8_@0qtMvm!WakmJ#1{0Qvh(FQ&p=MZzTYzBjZl`}ymx;;t5dD`w-IeqFvlg{t#? zI9{<7!6sNjftcupXwW1*QzWgV`)3v6%&AMnaiP@At%Qx6)BcS@ELs7i8w$uWjV?ZJ zX)yw`U^C!Ww~*rt<^I-9fdbl>hRM z!_dB>nY-`uPWULg%qNxYOq%UL{OjHb8*nQ&?50{XHpEP{-*(U}TJE z`pn!*-VQe>RuWqZjxRJ-71}#bo2&B*kAdx$ED!g+L2pb0#)60)ameiWETQ~cj?X2FGVj4TgkEogW&b% z)BC*6`@)E-<>uN9-KTq=x?h+}^RP&rHl)d4A?wmPe`SYvXH-3 z6`>=ky?U8{dKc$$q61C*Dzq2OHcbFfJS5-99S!N?dtqrUYbQ%#DibO|#o1-(L;Y@V zk0BXU+%e|xb(OW}>~=v!czxVq-RuM-PYQD?hVD0&@vDmbV*-+*xy0>pd=t|cE47Mu{cnfo ze@&Nq+C=v{mbf7-Bvy}Uy~>ob7SPzj3`(}9#dNZ9yN zx;i>DsIlDC9=RT~w+t-_KW$inV>~2dPJ7N#(HiO^1E*P!npgwI2xR8- zZgeioQf?wj+kV&Q!*!MDji}^@;C|Pt>(2f~UONyn#_EAw$IwFu6r1ysXxAs_cl)$H zOJi^rIWL_C@4cq6v5vNm2Lc@V+wCA`6nZ1umAzbT5ix2PQ1Yo5=l{kv&Iea&Kj_OI zMOFC-!QYvv3-Q2}X6*45PgCS5jpuNot!1@I!=*M)p~qPqp_@9g8B==eDEP zbMlSb-e_jDMSJdJaD}FB{~HMqvfnMf?d}s;v?*@1EJ~bHn=Q4rR5QUHJ5qeCY$waz zaqD&gdsG+h2Od{grx2`Hf|JX$rpUtxU_YIu`=r3ksVB^zu^M*eZO& zt7V|6==YyFnkT|fw02)!!7ZLYGH}^6N&XL0=f4b_|Cl=ev3vffB?Qm@Z$s$+o%{c= zlm36R|F=dK1c=}fxV#%*y11J^<$3YENTELwZqEp3s6E%CtCnAGS(6~bhb8lXvU9tz zr|!AX8(GQsUYlJf-4hMyXI5Fx(#E%}?0>|qO^f#FmJn*D?VZb$c@raJ-#yKn(kJEt zkThX((7Fm+YN#Ulsy;|cQBby4Fk@F6 zb-`Y5NNgco<{1-O_FDdswqC`d(6^pB0&T@y;gi@a!XDtU9=JnHf%sm>Xt95z74aN5 zb8}DpNGj?UQRYoB!mY;~SgK<4Wl5KUw0T4y31I;Tw{USDF^5EA_Tj~T-S;L#{q5`u}^7tM1_bN zTl12C>T+19ikPv>kJU7c9qj~gB^hLMlGEi;0liP4{l&wStG^~y+#vm_pZAYmF?+W< z*?buw5&35OLe$ie--x|;@q-YO%olHP<&mOF#|zsCIZ`5y#1WzQ^wpAZcz zG|L#^jqsjY$1*bxcLLgN+jcIJ0BTLxZTrLFePxQK&bW5B!Ql|$o0&SbcUng=_{kys z(EH0>nbJRJc|WTA22P$Ajug-X78eskl`?}2%LZhX6!IclY7$xC=qW%UIBEq1gS;nk zaER;w9`>qt#Jd?2Ub@*SI!9(;Qvv#SsfbYj^F|E7yY~}EfE-;`at|Y3)_VqKyJ3uI>Y$1;Dp0+)v>RfSA zhQOYDXm@jdNS9?l($^QbuJXS6nwD>Nxx#4Mk1e1Hn(e?k1`)cq7gh`LF8KoVRTL1m zYy2kJ>w)}+C>?rg{>X5V9tl+82b4-=I3sb256OwH)ze$tFfASv^hfYetIIe#?JqdP zr#c^qTIeCddAa|>Fs?Y)Hzj@d2fdjFhlf|r$yYDR33pIZW57K6P7RqG-U1;cWU;5X z?WZ6=giZ9i6tkR7XcQCixqfU&PE1*GC3pOtucv}>H7bZO&)vy)$k;jdPVP@uC{Hr6 zLIZuyTC;QB_aARwR#$F=sbNUx{Y09Nnm&`SaltDLmfkIdP>J;efCt_cM8W)7ARWN- zv8Js1qNWy+$|VNKgU%ZHr(igw3J0f#%M5F$AP`IREdilD&e;hl?ntKDeGFtvX1dEm zt;BOfCw3ifjuZfFnJ@7GllSVQ`GlWE%5lY1*0$=qxZvZ8NCr+ zjvk6kH2!3o<}fYV-l{89jtaUOCDoNcF<@l6LJf8DmmeA+UazOTS5Eoa+OZC%?j=QF z4n%%#^DStK)sCa&;nj`|VC_E`OcMFr>gvQxS|at%$B5L0S!YGCbdxaQOOn@}<{Y%o z1CIM49jF4apSHlx(gc3RUIbo99vX!)>vsR7#s%qRwX5`E$VCN0`~^oUHGpdB7lcto z?fGQ&SnxNIJ@9FeM|JS8h#pqw@u9tBC0|h=lA!l8DdQ)D9B?Jd3c=h+Zf=s@4HgG2 zj$Y;&yMGK8o507vW~PIq1rjJ~ZE|yY$YiiLNKgOzo51N?2ZN2Vwyf9#TG6TX;2=$^ zJ5@~?8CS`>;jzw$Cr^c&rJ2eR9+AVn?bB&?_Ck9&KwB};GyZCJPMYuv3(;o=53ry^<9pNfxa8S|sm>L^-X5o8 zFw6wfD)ZMu)4eupXAGQ)>_@Ol4JJP|%2TYiWCc&IWnE2~|zXJtefvei^4v zs-DEa2d87ko#cp8wPYN&MO~M8mubi}6+ktvutjQ%{Y|kVw`d-tD|Ypl+*Ub(3)YpMan%7~G&KszW32pIQ&mXMe+#&@}|uZyqg1Z!yK&x%0ETh{{DSnuyk~qXlzjzHhnz z)-94|dD+PNfOM?JNI$peCE~?c6lA3qxK}=tIG#K*eW;&)viiJp0UoHIvvx6{wwX7j z8K*9t6~9nw^k>;GGmF=Tx0H4wSAx;>dGp0t>na>NKB_>Z#Uy)Romlk zm00qIMC$CS@o!uI%pz4-gk@ln4tr;84!U)rE_Mn1- z2i~Mi;NAU2e?ivMA(^Q3vjoi$4ZGeOshaHLUKK6QCT%R%a0M-QpNJ;w^N**BT^&0y z4W83=VOOk535;LQaAQyGcj!-xBchDj0A$A+H#$+$*n@Gh<0YD2iM zoucULUHy(gD1C$8&{}`XitLTgjTWaOyO2zWfS6q75FH_+0yT)v%(S3eI}WxO9`P;MD1A9m5eC&h z_^#ancvWQ3hsm0to~cElb>s>ZI6Pbozn-XT2yBJAYCBm7I}OQ1-r+1TjF%X1(83)G zfoMC++bd?Qxh03;cX18%-<=YGS$#dco<9LUhRqeX!uvDNEQul2)5TT{$gU99@G=b}l@3)ZF^8?a{sy&cA5VGd_bU!ZC6?9I$ zAH%ox$-&xrP&RV|srtKc#1<_ncjC!Ve&bq9;079svX*=}dK}L^KywAby9!t9j`I&G zyX*;ZcWKf~ci!_MD>JM}yApKo0{I zAs*3IPE{+`tVMZc(M+e+@0z~W2qW`xZp1{Vr)Ym9G6UU!sOO<|)7a9i;5a=$I-^M; zm2eiC?{1va;lCNV0dAs`)kEO#`#34nUup_dY)Qd!8_PLIVCS2;P2H95`5*68#X%gX z7u^W#0X!2K{oc>kCSXAixAY(hPUe_@^!X`|K~EUm(2G9$&`P@)s1&S^7pyT^>)y}= z$iP!1OHMy&d~Y#3$blcb0ySj!{HvK`ZX6(_lqVY0EqAt>tmtOd$OdC)y%&l-J^4j` zay8;F#PkgpHBx#HP!}*kdlL9os^5I5|MXC9e=FiaWGFIetm<=)XZk+m}(&eeRF@jn(%cAnUdCk1- zIJT-KC?azmZ?!Tl+AiU8YTebFJMrbxjw-+UV7Hzexi0Wd8?3|>TNTYwK zfA8kt#^>1!xN~$K<+FF}(mX2cuwO$BB zDtsq^Ox?uHNRwr{q>VGuJToY-fMSyNs1I9eYAhh5v(xOfq&Wp^bk5qA^mH*k+xXMB zpyP-E;<=OvDoNCHZ(9v*T@YMlhp=m8K2(N-)p<_`detovLPhA|KhfmcJcj&o&l)8) zveUfv$+v0~$U)?N1F+9yDZI-JphjK2?CbJu_%vRG>`9Aj8Z0j`fQ*p5qhoCF*Naus zGy3&?J0yktlqxs*`@cq=<C>e@K58aH&*X5Qln~X@)eiR_YU_5+YCr453Bdr}Ek8(!RFY$w|X)FGi zXXp*g;=4rWk2vg67WB?4SxI;aTI~x->Wd>3=!Iu7Gn@?iytfD3aR!*UlguD}f_#L| z8v6IwNtP>4%MGiG0 zr4euNDRUUAhee0#`mtWNcMt0cUF}Df8~BmMqJ0V|#H_k8B?auPAl!B{IiP(~HSU&A zo2@jdwSq0whl>&2lH~gD(!o^_^vy(d5a65-(9#HI7IKk1)l+}(&63eNt~5(+T5In~ zm}6AG_l8isK7gs{%=6<>g~Pb&pfFAqOw8l4Pd6djMTtP4*ggE3IqjzFMm1o~#PB!! zZ1k$0UWH*`cBEj@b%xw&m*>LOvtuftbnXratwMyhBMHPimm4a$#$8DO{Px$GRMWV= zf9ad;weWj)!k%H=(GdXi#o4!EyJ?51!o8MlRxp^L#fgNGoT@4bP2xI>s-2ghc(awD znMluYdq?JM#Tt+(!)UaD+n~*HaB|op9`%|Wf#1yEUbJv{7!T>@Rn3Q;Ri!rhPbAmop;eF>P=h96FOXynI}rQK>=F z)k70jWwS`&ZJWe~YGa@ZxL*BS?=3?5vT)&&fO`c^V-xg%2h0#^p2}?Vc>#bzvb8b&kwe zsll>KXnnl*^#)a$wkrBSRrM0CMuCBDgX};%Q-H&T9j!xr-D4`%r^!S)2gp7b~7?Pdl_2lq) zr98za$RqH4mWd3)x&FK)kHkmJ2EfQc&C`ZRNn)5Jgh%(txWat5Zw9)1g-h>ptz zatyD^@3GBE?R~@-l0c8;liaeFY@i{AWbifJL)*5{^cep7JBj-bV2wdxk~J*D?@fK| zw>pU?zy~Sp(~9P6Dnw;&PPHyW| zS7S)vn;vN=g+J%!z?@uDHQ8j)<)fKNLvs9qU&@gaa+PRtuc7*RcXH&J50mRR9!mNg zxThrG7+~`B3lHTS72dn^W+sFoquyh~xgs4R5RatC=R7PTXAzI=mdnZsnh>5d90_>W ztU+c*^e_^jtu5BAgoZnU--*5GWPs1jdI~}Mc&B1Xl^C!+QAv4+{>QDv!^Nsm93Cpt z1umrISL^3|J3_YiL+1KjwGvy)ZJIssKubKgLxz)ukusg^@e>~q41J(R$dI&36K>$G4lH&uj))rmjgEk8$nYr$3l3R&{?-(9 z1Q}?--NM>lt;>Hf?8=xO_p}39z)~*?bxSV1p6E_>{q!bIE1r>!eDfgC%-mI zG9Yj2#V(uZURBJX?BY^OOYyzRKN8?xe>rF-ZGZzG!?b(Wez=Bd);=~wO^e06Uz1YN zGZSe?#A*5@M9k?sCd6ItQ(X(6OhW&K{qRXSADuW>>E9643;VN^jj%7qW#3nUT#_TT zKIqRtj^dmq))V4n%a|a#<^!)PfxL`zUBuKb@WL;qNCI{HAb&6(>aKEspC>$aL<47q}zKZAY-$;&uZff>`8h z{HDj%KO%@0a9D=df4phicBdN~czW)&akHh^wuSTQ_7&->_!fs^XV5`=bh$UU!M@m= z_q-VgE)hmEZ*<2+t++yqoiJeH@OwdK}KyS0~slZ7t|6#+4tHH`8Oth@?x1Y*}5wt zH35QX$QNmTlgf6G6Hj&{f6%w?nU<1(^sE&}tf+v=VqF$}LBBF}$My7293lRwVR%(k+_JqmPk%?EH&A_y&GcaiNthA`{FXRU`eg`IQ1Nv7g$NwMCEmvuhfU&xT>V2N0BjFe>4>%1ig2Xw#i zL54sl>?gOY*zWMg%DizG8Uv1w)4=qOKCW5n1gQ%(_q6Nvl6tjr*E0PrF}L)fAnu#` zfSJPX@cF`u`^Dv|NZgQCN6rq+p!Zy>sMdv9>Et+s@=WuB7R{^%CLPOy- z1&L#48j)ukTmDw3JV}@AYs!=ltq$YSyPhf@ADWiybA8=I~nPn2HVD|S;hby2)W(xy6H%24gF?jLSAY~AMBS78C4a6rSTp1Xf< z>QBSxb`cLoJyaPw&xZ;}X3`3)%2dtFwnJ4=K0+Rm>m;JOxy8^eGr_a^Ff_DkA&!lA zs7PA|g>*Eb`=SR0=zBfWj%r0iuP{+vOkBhAyg5nf8V}-j!f2oB z7^x`F`RWsPg7%NrDL%pHTDA%2d?&+0+C*|j6?yyU-svTjDsUIeuX4ja_sjw{Jxwx~ z$PJho0_}7g&+4H|VJz$z_&2}vJmU8k7mxXB^_4fudN>}~PoL-L`g52646EXL0_rSS znqRPIld7(MaV07%s7f{C+2J(hhR+-O;Vr}cPA{ALzH&G%?1Pm^*CBU|hM)foOi$0u z3*mObEvQL5!fJafX?T{Kl)BF0Yuzeh7s%n-%)L;Xj=QrZ>haaJ2f}nPI917&GCp5< zQ+*tKWU6u*5lJ~`;J1MXI0w!@EVU#8YHoSk33Y+zOmW$bBK^fFN%?9M?|!+CEhy=B z)*pQ7L0NA=umj%ZaF{9NYM2g6QB~5wjVXx|Le}Kg+SlX8Uq=mj6-VFf`UjsS7ri0$ihH$83T?tN|Wup+AEJTzX z#D&73JqFI6Z6Pzr(8MfxJ^^BiB;TxFm3?9mM{g@p5#{D=3PFwnf^c~NnuW_Gel(T? z>u1K*!nXPV!A`3dgbXkL*l!<$L(S)N5rTyOSZpQMr#-0(2%h64AQieiuXTr}v7r(*YLp3$q9eGWO7<&79x5bC za;?mBnYXl_^p%FxL>&YQYEn0C(jwW0=4IXIgx6D98D-pK8JW8c2h8-F3 zV8Z(n-Dqjv3aKC3k1++t-)mM8RoOPiZ*Z^1^vt$;r_8SZGH`qYzZihKfxBJXeylFy z^{b#p_{zbqPFEIj(A%kp=07OQwU|Y^OPo_`EkuQXoU)q%3kKI8t?7?k1F?Ca z=yukYs1V#H;BCSTDiWl3nhH9CzJrKl7b#C~0x%?ctx#^F63%#)rfF>T^&oO;Y!*rd zCJMm=BEHY6$z?DRE2o$=7YB0D_*{XvdMl-lIpHhL{$`R1xKJnpqkZo;pxHzuP7n?< zqD%yESvQUG$kDU-?sWY=1gO1S|G_h;NF>b24}nXR7Bk^O1fu6=L9?azUAPH`7abOW zWfyQdw5Tp?-<-&!C_L#FAy+P1;sZ@qM|UU~C#+=d(Y%u!q?`5WP)2ukOrigUK;?iV zY99CwHVf<0YvWulR&Bhjq)@%v5?)d*q>r$#qlK`2KLT%6Teo1QHR4mBGn66wMwm{L z31)3OO4n^c$>A>HOCcV~nkZEEB{|AE_4yxx5pq$*#=1CanSI#(&=W7PX{{E!V#l8e znI_`00-6thSL@*eZLAEC)7KnQSwp+Q+X(}q)Mc9QtAys)jfkr*0y9WLvqU>#-FidX zm#V>;Pp;R&l%_$iaDKp#nEajam7TJaRJd<~4YD650NKB_N?)F}F8lVotWE9^yXz;# zFeRTIHC8*LEaiQNzC33dH=$Vy%zJ;+Er;bivy-uxPX3#8eSl|@ggzLx^!`o1Y29e?VpkZpZaLj_ye`t8pFMEZxiQSF0 zx0#wz4H;ZD9HxWw@q{)ppobnYzEiwU@U*F#1EOc@T<}5isgkGh%=0GRefc4Nrbiqt z6|*tt_#xJs=q_PnUU>H1v;f>0Ifo02CkT48$^v%Y#4U|bQYn^;&DMYK6|?@kbkOaXVvHI9hVK4F)7lggO(y z-P0MIIyXqsfOzhSp#x$hQsLB;O(Y{GycujI z=82xt#gPeOwb`{6MeIbPwwK0P0Pg5?aYkho?piB-9SUlG$#sGBx19%8O`~MM0VEqp z1KT`Feg;0Qmd8_HI7^gDBnNgse06!Bu+VlteOVaCt@F0E|HrqnRtZp0hvm_jaO$N@ z)3u4Wh8JPh=BMPM!BvN=@>~D*K(FPqut|JT+=__}($Oq0dl#h={j>|JgYlMN^3Hiz zK9OC5z~2k+^{84vunV=l&r6Dhm98n{m$pk;`r2NwH3 zMZA`>g6?k7xY};}XS?sHl=z(zp)K(N*Tg4AI~;S#3)$8SEMocR>mV%AW#|>~w=~ z^K*q3j&NzRDs7)(I9zRagR&4>YN+d0CP6R@i0WF7(G`V>oyy+*glSLswi#VuJJ5vtMJQa6( zR^}mtk4T_S7b&#x)*eQ;hi>5|{6UR^x_S9{aB5J;3DzqFSfBtk);}|GSR1);NKZO5 zmsMQu?1TtuM-)KLqmZsB1;hR3s5&!34IXNY&koxGjc4ch|20keT=xIOlfp^X|1FDp z@e&ffUh{%O_*;%G2_~1#1Xjt-r^;}^B?CMRU| zx6x*HB1};w%dsk%xY2%<^>y3a;_cQe7qd4s?5o^rhd0klLJkKSsThq3!OSDvJI#Cf zm1&4uQ)o>4K9g;Q+$pWZxSD$$8%m~WFhcEAC=r9995ZIE4&vB7#Mo0kjKC8giT(XA zmTwx+&af~+98N44?jZMmk&h6nEK{ay zdwxl?pK?P-;JBEmIRB`({9+m5+!n9D|8~;@4L^6wUDmtH_BkX%275>3GwZoe4}j?yM~uS{GW)Dj{lU#DzRlVG8!?A!o)Wi+{FR6H*G%DJAXnCB828dzmyj= z@)TF0XD#k)QgV?#8DAAi!|DE;H^HTMXT7N_fDGK04~TVWuglBaTYh;~Bh;MqvFuMq zE>G<1qk@W*HyFc;O*U1SKwpb zR$~hB8wD7upqWpp)(_kR#JlsXz&+^)YVairwBo7v#@I~9cfHmRrTTVUU0c^P;`*l) zyx3IHWyw>OE?@x@H0NqLqcfYgC!%9yu)Wgpj^;P&<*w!3bTA6Y8+Yeeitu8a(mu9q zthtdFp7SyAc1bEH5EbN&x%1S^W9_oBRrV13dy(6_F5HbJ$eQ^kB# zM_r|q3`YOzJqZmIqj5k54VOwU{`P6WxG2mo9b?DFf>-;F#_adDBmAQ%Y{>47j8_ZJ zOkw_>`Y<;hd`Lf~q^dO@44z5sx8>P^A4uSNW4avh_jVVgW}b&5emDK^DBH4ND07te z+%3LUDg5~Bd88YdcgFWQ01sjCBZCeEW12*x^bPro|EhGH1_+Oe{MY_-{NwY*I~sUY zq#|MnyhHze@f#KXwb#VY=OMr^fOZ1UGx7YX*T0L8T(<~N@iVFgbda3gyXPjQ!LudC z1@Ks%fB7e*Akt#f58M((>^n6(ZRMwHfSsyVy#MM1Ji?KaczDEvv!o_jR8F5SM?R*( zoz#dbbxgnSMG8A>n~xphtpm?=e1CAsZB(!zuXJtvDiG}wK9%ar0WX_QXh>bKK$fRu zkPShSTP`d?-mG6Xs#sGtL}9yb!vv*6@PB-|#r2Fy+qH=6rkoFYUr5zPw=~+1}hlaOTsO4*%R?BK>O|gXmj_n)jAW zX?{Bh8I>zsPNd`0y56M=wWLq;lPB~!sb9Xh*M=LiXBc&V+H}B7!oX-K8d(mMbUNDT zSKVSXJ4r*C6~7Z1vmHRZWj=WO=CArV$B5*hMNP?{>hKLAECkTin3Oe}vIgbqH~y!t zQL5R&i*GArDp{ZLb3-TN0UoKdRy3BZR&p&#U*>XB_nc=YKSHsuT=WMPhd#1Y{@B-$ zI{Ai>n}#D1^wGp`>%AAqIe0E7Hzz4{l%D2hq%P{g-oI~ybW`;nvZ<*`?;aPs1mQ$T)nM-d%yM{$|Ue#(C zCm*?B=8$w+31lZ#ZNFVvP?waO&;IVoGtn1s_G08RfsTF#Mbk3dChAw_wl|pH*mcP* z5~WV5aWNI7cdHYTtQHD&sx8##Fm^OP`N_1Xa>M@QuWY zk9Wmxfg30UbWdnqXyC_wpfFI&du^cdX`Yg0Svy~_HQBqfVpTG*X%lt-vp z2oT!tXy&%x)W9pXEF0{#lHKH+Y+We!>ZU-fr=pi5o7X&`f!AD4C0Hln5#WIznxjB# z*z}v6dWE&|^)wP$I46WnYF76!<#Csqg~4p=lO2crHvv}`9==F+V`MrHP1)4pUW-3c2BzT;Yq}Hdr6zKLVtlcWs z>9cXmD9bi;tiFE^mK}@Ru-1Cb{DlC*l+gT_Q<708i#;CjQG1{d(N|hGuGq>~Z6wA< zO`2jn^Y4ak;H&5l(Q2L#@*L?TN}H_7f)YL;7}cX{k<`KG3*=k3%JH!I9O+nRULA|I zK?#mloo1<=O7;VK)NaGlt7wWC@R0|l$N7s^86`_09~N_J+&5=@UNHPk68~6j|kyds3buI(9X4Mj0 z#fMYse$twP(yAGSyhPZz7S$>6V`aYoA|UAOcendDB$b=%Uz?X)g#Kz%0jrr4kG5pO=R%tW=LM1W5OssSve;RSSqr~ za3&#K`ZUy-=WvH?4wz6LxP#u)Jd62Y;Swu)C%5_h+acS1%M#-^B~J0u5UbZEI4M0w zFK3HhIaR$A7e!?=x*Ru=MguP2h}f0Q3W#MW)8Vjf{c7LwG(3YlOURDdp$1nN+VmM{ z^(l2d{*2#Qp}vo7vRH`zjxY*Mt6#h;qDZ#y_i#6;aJQAGkV)Bm2a~{bcqes6u&3ILocwKSVpfCs z8VQ02d1qqaY0f0cqL9fuRIRO~oI_!72iaYO`WiN=0U7Ff;G`#f%en=1(OU1e7L