Описание функциональных характеристик программы для ЭВМ «Апостол CSMS»

Дата публикации: 19.08.2026

Документ описывает назначение, состав и функциональные возможности программы для ЭВМ «Апостол CSMS» (Apostol CSMS) — программного комплекса управления инфраструктурой зарядных станций для электротранспорта. Описание составлено правообладателем и соответствует версии платформы 1.6.5.

1. Общие сведения

Полное наименование: программа для электронных вычислительных машин «Апостол CSMS». Латинское написание — Apostol CSMS. Оба написания равнозначны и обозначают один и тот же продукт.

Правообладатель — гражданин Российской Федерации Преподобный Ален Алексеевич, он же индивидуальный предприниматель, ОГРНИП 321508100604655, ИНН 861001236321. Автор программы — он же, единолично, без соавторов.

Программа зарегистрирована в Реестре программ для ЭВМ Федеральной службы по интеллектуальной собственности: свидетельство о государственной регистрации № 2026684792 от 17 августа 2026 года, заявка № 2026684697 от 5 августа 2026 года. Компоненты, на которых построена платформа, зарегистрированы отдельно: «Апостол» — свидетельство № 2022610211, «Апостол CRM» — свидетельство № 2021680728.

Тип программы: серверное прикладное программное обеспечение с веб-интерфейсом и прогрессивными веб-приложениями. Способ поставки — установка в контейнерной среде на серверы под управлением операционных систем семейства Linux.

2. Назначение и область применения

Программа предназначена для управления сетями зарядных станций для электромобилей и для организации всего цикла обслуживания зарядной сессии: от подключения станции к системе и авторизации водителя до расчёта стоимости, приёма оплаты и выдачи фискального документа.

Область применения — деятельность операторов зарядной инфраструктуры, владельцев отдельных зарядных станций, автопарков с собственным электротранспортом, а также организаций, предоставляющих зарядную инфраструктуру как сопутствующий сервис: торговых центров, гостиниц, бизнес-центров, автостоянок.

Программа рассчитана на многопользовательскую работу и на одновременное обслуживание нескольких независимых организаций в одном развёртывании. Каждая организация видит и администрирует только собственную инфраструктуру, при этом водитель видит станции всех организаций, открытых для публичного доступа.

3. Состав программного обеспечения

Сервер приложений — модуль обработки запросов, реализующий интерфейс прикладного программирования, протокол авторизации OAuth 2.0, обмен по веб-сокетам, планировщик заданий, почтовый и файловый обмен, формирование отчётов. Написан на языке C++ стандарта C++20 и работает с базой данных напрямую.

Центральная система зарядных станций — отдельный серверный модуль, принимающий подключения зарядного оборудования по протоколам OCPP и выполняющий двусторонний обмен командами и телеметрией. В состав входит эмулятор зарядной станции, позволяющий проверять работу системы без физического оборудования.

База данных — прикладная логика системы, реализованная на процедурном языке PL/pgSQL в среде СУБД PostgreSQL. В базе данных находятся сущности предметной области, правила разграничения доступа, конечные автоматы состояний документов, расчёт стоимости и формирование расчётных документов.

Веб-приложение оператора — рабочее место организации-оператора и её сотрудников: управление станциями, тарифами, клиентами, платежами, отчётность, настройки.

Приложение водителя — прогрессивное веб-приложение с картой станций, запуском и остановкой зарядки, историей поездок, кошельком и платёжными средствами.

Приложение оплаты по QR-коду — отдельное приложение для разовой оплаты зарядки без регистрации, предназначенное для сценария, при котором водитель пользуется станцией однократно.

Приложение авторизации — интерфейс входа и федеративной аутентификации по протоколу OAuth 2.0.

Сервис поддержки на основе языковой модели — необязательный компонент, обслуживающий диалог водителя со справочным агентом.

Вспомогательные компоненты поставки: обратный прокси-сервер, пул соединений к базе данных, средство веб-доступа к базе данных для администратора.

4. Управление зарядной инфраструктурой

Программа поддерживает промышленный протокол взаимодействия с зарядным оборудованием OCPP в версиях 1.5 (транспорт SOAP), 1.6 (транспорт JSON поверх веб-сокета) и 2.0.1. Версия определяется при подключении станции; трансляция между версиями выполняется автоматически, поэтому оборудование разных поколений работает в одной сети.

Реализованы регистрация и учёт станций и разъёмов, приём телеметрии и показаний счётчиков, отслеживание состояния каждого разъёма в реальном времени, удалённый запуск и остановка зарядной сессии, резервирование разъёма, разблокировка кабеля, перезагрузка станции, изменение конфигурации станции, разблокировка и смена доступности.

Для версии 2.0.1 дополнительно поддержаны модель устройства, интеллектуальное управление зарядкой, локальный список авторизации, обновление встроенного программного обеспечения станции и передача событий безопасности.

Локальный список авторизации позволяет станции авторизовать известные идентификаторы при потере связи с сервером. Поддержан профиль безопасности с взаимной проверкой при подключении.

Состояние сети отображается в интерфейсе оператора в реальном времени: подключённость станции, состояние каждого разъёма, текущая мощность и переданная энергия, ошибки оборудования.

5. Обслуживание водителей

Водитель регистрируется самостоятельно через приложение или получает доступ разово, без регистрации, при оплате по QR-коду. Второй сценарий предусмотрен для соответствия требованию о возможности разовой оплаты на публичной зарядной станции.

Поддержаны способы авторизации на станции: идентификация по бесконтактной карте, запуск из приложения, запуск по ссылке или QR-коду, авторизация по идентификатору, полученному от партнёрской сети через роуминг.

Водителю доступны карта станций с фильтрами по типу разъёма, мощности и доступности, построение маршрута к станции, запуск и остановка зарядки, наблюдение за ходом сессии, история зарядок и расчётных документов, управление платёжными средствами и кошельком, извещения о значимых событиях.

Карты станций отображаются через выбранного при развёртывании картографического поставщика. Выбор задаётся параметром развёртывания и не зашит в программу.

6. Тарификация и расчёт стоимости

Тариф задаётся как набор правил, хранящихся в базе данных, и назначается на зарядную станцию, разъём или группу станций. Поддержаны составляющие стоимости: плата за переданную энергию, плата за время зарядки, плата за простой после окончания зарядки, фиксированная плата за сессию.

Тариф может действовать по расписанию — по дням недели и часам, что позволяет строить дневные и ночные ставки. Поддержаны бесплатные тарифы, применяемые для служебных и корпоративных сценариев.

Реализованы три модели расчётов, выбираемые на уровне тарифа. Агентская модель: платформа принимает оплату от водителя и перечисляет её владельцу станции за вычетом вознаграждения. Операционная модель: расчёты ведутся от лица владельца платформы. Модель разделения выручки: расчёты с партнёром ведутся вне системы, а система фиксирует объём для последующего распределения.

Для автопарков предусмотрен режим предоплаченного баланса: организация пополняет счёт, её сотрудники заряжаются на станциях организации, стоимость списывается с баланса по фактически переданной энергии, а расчётный документ формируется на каждую сессию.

Расчёт стоимости выполняется в базе данных при завершении сессии и фиксируется в расчётном документе, который недоступен для изменения задним числом.

7. Приём платежей и фискализация

Приём оплаты организован через подключаемых платёжных провайдеров. Выбор провайдера — параметр развёртывания; в одном развёртывании может быть подключён один провайдер, а для отдельных организаций-операторов — их собственные учётные записи у того же провайдера.

Для российского контура поддержаны ЮKassa, в том числе через партнёрский интерфейс, позволяющий владельцу зарядных станций принимать оплату на собственные реквизиты, и CloudKassir для формирования кассовых чеков в соответствии с Федеральным законом от 22.05.2003 № 54-ФЗ. Чек формируется на идентификационный номер налогоплательщика того лица, которое фактически оказало услугу зарядки.

Для зарубежного контура поддержан платёжный провайдер Stripe, включая режим разделения платежа между платформой и владельцем станции.

Реализованы сценарии предварительного удержания суммы на платёжной карте с последующим списанием фактической стоимости и возвратом неиспользованного остатка, привязка платёжного средства, повторное списание по привязанному средству, возврат средств, пополнение и расходование внутреннего кошелька.

Все операции с денежными средствами отражаются на внутренних счетах по правилам двойной записи: активный счёт не может иметь положительного сальдо, пассивный — отрицательного, поэтому списание со счёта, который фактически не пополнялся, невозможно.

8. Мультиарендная модель и разграничение доступа

Одно развёртывание обслуживает произвольное число независимых организаций. При регистрации организации автоматически создаются её область видимости, сеть станций и расчётный счёт. Принадлежность к организации проставляется автоматически по цепочке: сеть — станция — сессия — расчётный документ — платёж.

Разграничение доступа построено на трёх независимых механизмах: принадлежность объекта области видимости, права на класс объектов, права на конкретный объект. Права выдаются пользователям, группам и ролям и проверяются в базе данных, а не в интерфейсе, поэтому обойти их обращением напрямую к программному интерфейсу невозможно.

Предусмотрены роли: владелец организации, администратор, оператор, инженер, сотрудник поддержки, водитель, партнёр. Состав меню и набор доступных операций определяются ролью автоматически.

Организация видит только собственные станции, клиентов и расчётные документы. Водителю доступны станции всех организаций, открывших свои сети для публичного доступа, — это необходимое свойство публичной зарядной сети.

9. Роуминг между сетями

Программа реализует протокол межсетевого взаимодействия OCPI в версиях 2.2.1 и 2.3.0 в обеих ролях: как оператор зарядной инфраструктуры и как поставщик услуг электромобильности.

Реализованы восемь модулей протокола из десяти: обнаружение версий, обмен учётными данными с полным трёхшаговым рукопожатием и ротацией токенов, публикация и приём сведений о местоположениях и состоянии разъёмов, обмен сведениями о сессиях, обмен расчётными записями, публикация и приём тарифов, синхронизация и проверка идентификаторов водителей, приём и исполнение команд. Не реализованы модули профилей зарядки и сведений об участниках концентратора.

Каждому подключённому партнёру назначается перечень разрешённых модулей и область видимости станций; ограничения проверяются на всех входящих обращениях.

Исходящие уведомления партнёрам ставятся в очередь с повторными попытками доставки, что исключает потерю сведений при временной недоступности партнёра.

10. Мониторинг, извещения и отчётность

Ведётся журнал событий по станциям, сессиям, платежам и действиям пользователей. Неисправности оборудования фиксируются отдельными документами с собственным жизненным циклом и уведомлением ответственных лиц.

Система извещений доставляет сообщения пользователям в интерфейсе, по электронной почте и через веб-сокет в реальном времени. Поддержаны массовые рассылки с пакетной обработкой очереди.

Сводные показатели выводятся на панель управления: число станций и их доступность, число сессий, переданная энергия, выручка, распределение по тарифам и по времени суток. Данные доступны также через программный интерфейс для выгрузки во внешние системы.

11. Справочная служба на основе языковой модели

В состав входит необязательный компонент — справочный агент, отвечающий на вопросы водителя в приложении: где ближайшая свободная станция, почему не запускается зарядка, что означает состояние разъёма, каков остаток по расчётному документу.

Агент работает только в пределах прав задавшего вопрос пользователя: набор доступных ему действий ограничен теми же правилами разграничения доступа, что и обычные обращения к программному интерфейсу.

Поставщик языковой модели выбирается параметром развёртывания. Поддержаны YandexGPT и GigaChat, а также зарубежные поставщики. Компонент может быть полностью исключён из поставки — работоспособность остальных функций от него не зависит.

12. Программные интерфейсы

Программа предоставляет интерфейс прикладного программирования в архитектурном стиле REST: 699 конечных точек, сгруппированных в 59 тематических разделов. Спецификация интерфейса опубликована в формате OpenAPI.

Авторизация обращений выполняется по протоколу OAuth 2.0 с поддержкой выдачи токена по паролю, по учётным данным приложения и по коду авторизации.

Для событий реального времени предусмотрен обмен по веб-сокету: изменение состояния станции, ход зарядной сессии, извещения, ответы справочного агента.

Обмен с внешними системами выполняется исходящими вызовами по протоколу HTTP из базы данных, что позволяет подключать сторонние сервисы без изменения серверного кода.

13. Администрирование и настройка развёртывания

Оформление, доменные имена, платёжный провайдер, картографический поставщик, состав способов входа и перечень включённых функций задаются на уровне развёртывания и хранятся в базе данных. Изменение этих параметров не требует пересборки программы.

Сведения о развёртывании передаются приложениям подписанным документом, целостность которого проверяется на стороне приложения. Наименование продукта и владельца развёртывания входят в лицензионный конверт и не редактируются через интерфейс.

Обновление выполняется без остановки обслуживания: миграции базы данных применяются отдельным шагом, серверные компоненты перезапускаются последовательно. Предусмотрен возврат к предыдущей версии.

Все компоненты поставляются образами контейнеров и запускаются одной конфигурацией. Развёртывание не обращается за компонентами к внешним источникам во время работы.

14. Технологическая основа и системные требования

Серверные компоненты написаны на языке C++ стандарта C++20 и не требуют внешней среды исполнения. Прикладная логика реализована на процедурном языке PL/pgSQL в СУБД PostgreSQL версии 18. Пользовательские приложения построены на веб-технологиях. Необязательный сервис справочной службы написан на языке Python.

Операционная система: любой дистрибутив Linux с поддержкой контейнеризации. Проверенные конфигурации — Debian и Ubuntu. Программа не использует возможностей, специфичных для конкретного дистрибутива.

Минимальная конфигурация для развёртывания небольшой сети: 2 вычислительных ядра, 3 ГБ оперативной памяти, 40 ГБ дискового пространства. Рекомендуемая конфигурация для сети от тысячи станций: 8 ядер, 16 ГБ оперативной памяти, дисковая подсистема на твердотельных накопителях. Параметры СУБД настраиваются под фактическое оборудование переменными окружения.

Клиентское рабочее место: браузер с поддержкой современных веб-стандартов. Установка программного обеспечения на устройство пользователя не требуется; приложения водителя и оплаты могут быть добавлены на домашний экран мобильного устройства как прогрессивные веб-приложения.

15. Языки интерфейса

Интерфейс всех пользовательских приложений локализован на восемь языков: русский, английский, немецкий, французский, итальянский, испанский, чешский, словацкий. Язык выбирается пользователем и сохраняется в его профиле.

Русский язык поддержан полностью во всех приложениях: интерфейс оператора, приложение водителя, приложение оплаты, интерфейс авторизации, извещения и электронные письма, сообщения об ошибках, справочные тексты. Тексты хранятся в базе данных и редактируются администратором развёртывания без изменения программы.

16. Внешние сервисы и независимость развёртывания

Работа программы не зависит от иностранных программных или аппаратных средств. Все компоненты, необходимые для функционирования, входят в поставку: сервер приложений, центральная система зарядных станций, база данных, пользовательские приложения, обратный прокси-сервер.

Внешние сервисы подключаются как заменяемые поставщики и выбираются при развёртывании: платёжный провайдер, поставщик картографических данных, поставщик языковой модели для необязательной справочной службы, почтовый сервер. Для каждой из этих ролей доступен российский поставщик, и ни одна из них не привязана к конкретному иностранному сервису на уровне исходного текста программы.

Программа не обращается к внешним сервисам за собственным обновлением и не содержит механизма принудительного обновления извне. Решение об установке новой версии принимает владелец развёртывания.

Сторонние компоненты с открытым исходным текстом, использованные при разработке, распространяются на условиях разрешительных лицензий, не налагающих обязательств по раскрытию исходного текста производного произведения. Перечень таких компонентов ведётся правообладателем.

17. Условия предоставления прав

Право использования программы предоставляется по лицензионному договору. Условия изложены в публичной оферте, порядок приобретения и состав поставки по каждой модели — в отдельном документе. Оба документа опубликованы на сайте правообладателя и доступны без регистрации.

Программа поставляется без встроенных ограничений функциональности по времени; срок и территория действия права определяются договором.

18. Связанные документы