Система ведёт учёт хостинг-абонементов: кто платит, сколько, когда следующий платёж, сходится ли это с биллингом и что клиенту отправляли. Одна строка таблицы — один абонемент, он же один пользователь панели HestiaCP.
Руководство намеренно только на русском: язык интерфейса переключается, а этот текст — нет.
1. Вход
Вход — кнопкой «Войти через GitLab», своей учётной записью gitlab.uco.co.il.
Паролей у системы нет: учётные записи и пароли живут в GitLab.
Доступ есть только у участников группы bytecraft-hosting в GitLab. Если после входа
появляется «Нет доступа» — вход прошёл, но учётка не в группе: попросите владельца
группы добавить вас и войдите снова. Исключение из группы снимает доступ при следующем входе.
2. Список клиентов
Главный экран. Строка открывается кликом в любом месте, кроме ссылок внутри неё — ссылки на задачу и на счёт ведут наружу, в свою систему.
Поиск и фильтры
Поиск ищет по логину, компании, имени и почте. Панель «Фильтры» раскрывает остальное: сервер, тип оплаты (мультиселект), источник, страна, статус, диапазон дат платежа и три галочки — «Только расхождения», «Без ссылки на счёт», «Без ссылки на задачу».
Состояние фильтров живёт в адресе страницы. Настроенную выборку можно скопировать из адресной строки и переслать — откроется ровно та же таблица. «Сбросить фильтры» возвращает вид по умолчанию.
Статус
- Активен — пользователь есть в панели и работает.
- Не активен — пропал из панели при синхронизации либо отключён вручную. Запись остаётся.
- Удалён — убран руками. В обычную выборку не попадает: чтобы увидеть, выберите статус «Удалён» или «все».
По умолчанию показываются живые записи — активные и неактивные, без удалённых.
Колонки и суммы
Кнопка «Колонки» скрывает и показывает столбцы, выбор запоминается и переживает перезагрузку. Заголовок кликается — сортировка уходит на сервер, повторный клик меняет направление. Сортируются не все колонки: у вычисляемых сортировки нет.
«Видно» в шапке — сумма по текущей выборке, а не по всей базе. Меняете фильтр — меняется и она.
3. Карточка клиента
Четыре вкладки: Детали, Изменения, Платежи, Сообщения. У новой записи видна только первая — остальным пока нечего показывать.
Два источника записей
Записи из HestiaCP заводит синхронизация. У них логин не редактируется и нет кнопки удаления — в карточке об этом написано «ведётся в HestiaCP». Записи, заведённые вручную, правятся целиком.
Обратно в панель уходят только имя и контакт — поля с пометкой «уходит в HestiaCP». Платёжные данные в панель не пишутся никогда. Если панель отклонит изменение, запись всё равно сохранится локально, а сверху появится предупреждение: потерять правку хуже, чем разойтись с панелью.
Суммы и даты
«Сумма платежа» — месячная. Счёт всегда годовой и считается из неё: двенадцать месяцев со скидкой 10%, то есть «сумма × 12 × 0,9». В карточке годовой суммы нет намеренно, чтобы не путать, что именно вы правите.
Дата в карточке одна — дата следующего платежа. Прошлые оплаты живут на вкладке «Платежи»: своего поля у них нет.
Сохранение
Уходят только изменённые поля, а не форма целиком — иначе сохранение затирало бы то, что параллельно записала синхронизация. Если ничего не менялось, система так и скажет и никуда не пойдёт. Каждая правка попадает на вкладку «Изменения» с автором, полем, старым и новым значением.
4. Создание, удаление и слияние
«Добавить клиента» заводит запись вручную. Обязательны логин и страна; страна определяет и систему биллинга, и язык писем — отдельно их выбирать не нужно.
Удаление мягкое: запись пропадает из обычной выборки, но остаётся в базе вместе со всей историей. Найти её можно фильтром по статусу «Удалён». Записи из HestiaCP не удаляются вовсе — если пользователь исчез из панели, синхронизация сама пометит запись неактивной.
Слияние нужно, когда один клиент завёлся дважды. В диалоге выбираются цель (остаётся) и источник (уходит в архив), а система показывает предпросмотр результата до того, как что-то произойдёт. Правило простое: непустые значения цели побеждают, пустые поля берутся из источника. Кнопка «Поменять местами» меняет роли, если вы выбрали их наоборот.
5. Сверка с биллингом
Сверка отвечает на один вопрос: то, что записано у нас, совпадает ли с тем, что происходит в биллинге. Маршрут выбирается типом оплаты: у подписок проверяется автосписание, у остальных — оплаченный счёт.
- — оплачено: счёт или автосписание найдены в биллинге.
- — срок ещё далеко, текущий период оплачен. Счёт на следующий год пока не нужен.
- — до срока 30 дней или меньше: проформа выставлена, ждём оплату.
- — срок прошёл, оплаты нет. Это должник, по нему идёт цепочка напоминаний.
- — документ нашёлся, но сумма другая. В подсказке указаны обе; частая причина — счёт выписан на месяц, а не на год, или в карточке старая цена.
- — сумма сходится, но документ выписан вне периода оплаты.
- — у подписки нет активного автосписания. Самый важный случай: клиент числится подписчиком, но деньги не списываются, и заметить это иначе нечем.
- — тип оплаты деньгами через биллинг не ходит (QA, Free, Check и подобные). Это не пропуск, а решение.
- — до биллинга не достучались либо не разобрали ссылку на клиента. Прошлый результат при этом не портится.
- — запись ещё не сверялась.
Кнопка «Проверить снова» в карточке сверяет одну запись немедленно. Галочка «Только расхождения» в фильтрах оставляет в таблице лишь те, где что-то не сошлось.
6. Рассылки и сообщения
Цепочка напоминаний привязана к дате платежа и состоит из шести шагов:
- −30 Проформа — выписывается счёт и уходит клиенту.
- −10 Напоминание.
- 0 Срок оплаты.
- +15 Просрочка.
- +30 Второе напоминание.
- +45 Последнее предупреждение.
Отдельно стоит шаг «Списание не прошло» — он уходит подпискам, когда автосписание отклонили, и несёт ссылку на замену карты.
Флажок «Напоминания включены»
Пока он снят, клиенту не уходит ничего. Это рубильник на каждой записи, и снятое положение — состояние по умолчанию. Включать имеет смысл по одному, наблюдая за журналом: отправленное письмо не отзывается.
Отправка вручную
Кнопка «Отправить сообщение» в карточке умеет две вещи: повторить шаг цепочки (текст берётся из шаблона) и отправить произвольное сообщение (текст пишете вы, токены в нём тоже работают). Каналы выбираются галочками; без выбранного канала кнопка не нажимается.
Пользуйтесь предпросмотром. Он собирает сообщение ровно так, как оно уйдёт, и ничего не отправляет. Если данных не хватает — например, счёт ещё не выписан и подставить нечего, — система откажется собирать сообщение и назовёт, чего нет. Это сделано намеренно: письмо с пустым номером счёта хуже неотправленного.
Вкладка «Сообщения»
Журнал отправок: дата, канал, шаг, статус, адрес и тема. Клик по теме разворачивает полный текст того, что ушло — он сохраняется целиком, потому что через месяц шаблон будет другим, а знать, что именно получил клиент, всё равно понадобится.
Статусы: sent — доставлено отправителю; queued — не ушло, будет три попытки с нарастающими паузами, причина видна тут же; failed — попытки исчерпаны. Один шаг в одном платёжном цикле отправляется один раз, даже если прогон повторится.
7. Шаблоны
Раздел «Шаблоны» в меню. Шаблон определяется тройкой «шаг × канал × страна». Отдельного выбора языка нет: израильским клиентам пишем на иврите, болгарским — по-английски, и это следует из страны записи.
В тексте работают токены вида {{firstName}},
{{amount}}, {{nextPayDate}} —
полный список кнопками под полем, клик вставляет токен в текст. Опечатка в имени
токена не проходит молча: система откажется собрать сообщение и назовёт неизвестное имя.
«Предпросмотр на клиенте» подставляет данные конкретной записи — введите её логин и посмотрите, что получится. Переключатель «Шаг включён» выключает шаг целиком, не удаляя текст.
8. Отключение хостинга
Кнопка «Отключить в Hestia» останавливает хостинг клиента — его сайт перестаёт открываться. Это единственное действие во всей системе, которое видит клиент, поэтому оно всегда ручное: ни один шаг цепочки напоминаний сюда не ведёт, включая «+45 Последнее предупреждение».
Перед выполнением спрашивается подтверждение. После успеха запись сразу становится неактивной, а в журнал изменений попадает отметка. Если панель откажет, запись не меняется: пометить отключённым работающий хостинг хуже, чем не пометить вовсе. Вернуть в работу — той же кнопкой.
9. Что происходит само
- Синхронизация с HestiaCP — раз в час. Заводит новых пользователей панели, обновляет данные, пропавших помечает неактивными. Кнопка «Синхронизация» в шапке запускает её немедленно; рядом видно, чем кончился прошлый прогон по каждому серверу.
- Сверка с биллингом — ночью, по всем записям.
- Рассылка — раз в сутки утром, только по записям с включёнными напоминаниями.
- Разбор очереди отправки — каждые десять минут: повторяет то, что не ушло с первого раза.
10. Чего система не делает
Знать границы полезнее, чем гадать о них.
- Не отключает хостинг сама. Никогда и ни при какой просрочке.
- Не пишет платёжные данные в HestiaCP. Суммы, даты и типы оплаты живут только здесь.
- Не заводит записи HestiaCP руками. Они приходят только синхронизацией.
- Не удаляет ничего насовсем. Удаление мягкое, история остаётся.
- Не отправляет неполное сообщение. Если подставить нечего — откажется и скажет, чего не хватает.
11. ИИ-ассистент
Ассистент (Claude и любой другой клиент по протоколу MCP) работает с таблицей от вашего имени: видит ровно то, что видите вы, и пишет в журнал изменений вашим именем, а не безличным «mcp». Доступ выдаёте вы сами на странице «Интеграции» и там же отзываете.
Адрес сервера один: https://mcp-hosting.s.ai-dev.co.il/mcp. Подключиться
можно двумя способами.
- Claude в браузере — Settings → Connectors → Add custom connector, адрес сервера, вход и кнопка «Разрешить» на экране согласия. Токен вы не видите: его выдаёт и хранит сам клиент, а подключение появляется на вкладке «Подключённые приложения».
- Claude Code или скрипт — выпустите личный токен на вкладке «Токены»
и передайте его заголовком
Authorization: Bearer. Значение показывается один раз: на сервере остаётся только отпечаток.
Права выбираете вы. Токен только сужает доступ и никогда не расширяет: «смотреть» отдельно, «править» отдельно, отправка сообщений и отключение хостинга — каждое своим правом. Инструмент, на который права нет, ассистент даже не увидит.
Что нельзя отменить — требует подтверждения. Слияние записей, отправка сообщения и отключение хостинга по умолчанию только показывают, что произойдёт; чтобы выполнить их на самом деле, ассистент должен повторить вызов с явным подтверждением. Создавать и удалять записи через ассистента нельзя вовсе.
Отзыв действует сразу: следующий же вызов ассистента получит отказ. Доступ, которым не пользовались полгода, отзывается сам.