Интеграция
Публичный вход в модуль — фасад SMK::SISZL::Module.
Ниже — сценарий использования без описания внутренней реализации.
Пример приведён для C++; для Web и WinUI API концептуально тот же,
синтаксис и обёртки отличаются.
Подключение
- Подключите библиотеку и каталог публичных заголовков к проекту ИС СМО
- Заполните конфигурацию: endpoints (при необходимости),
clientId,clientSecret, логин/пароль ТУЗ, параметры SSL - Создайте экземпляр модуля и вызовите проверку соединения
- Работайте через сервисы информирования и плановых задач
Публичный фасад
namespace SMK::SISZL {
class Module {
public:
explicit Module(SiszlConfig config);
bool connect(); // проверка учётных данных (получение токена)
InformService& inform(); // задачи и результаты информирования
PlanService& plans(); // плановые мероприятия
SiszlClient& client(); // низкоуровневый доступ к 5 методам API
QString lastError() const;
};
}
Типовой сценарий (C++)
SMK::SISZL::Module siszl(config);
if (!siszl.connect())
return /* обработать siszl.lastError() */;
// 1. Загрузить задачи на информирование
InformTaskFilter filter;
filter.startPeriodDate = QDate(2026, 1, 1);
filter.endPeriodDate = QDate(2026, 12, 31);
filter.getInformResult = InformResultMode::NONE;
const auto tasks = siszl.inform().downloadTasks(filter);
if (!tasks)
return /* tasks.error().localizedMessage */;
// 2. Отправить единичный результат
InformResultRequest req;
req.isSmoId = /* UUID 36 символов с дефисами */;
req.resultCode = "1";
req.communicationMethodCode = "1";
req.reactionCode = "APPROVE";
const auto saved = siszl.inform().submitResult(taskId, req);
// 3. Пакет ≤ 25 результатов (в каждой записи — taskId)
const auto report = siszl.inform().submitResults(batch);
if (report && !report->succeeded()) {
// разобрать report->items[].errors
}
// 4. Плановые мероприятия ДН
const auto planTasks =
siszl.plans().downloadPlanTasks(EventType::DN, start, end);
Сервисы
InformService
- Загрузка списка задач (с автообходом страниц)
- Получение одной задачи по идентификатору
- Отправка единичного и пакетного результата с ФЛК до HTTP
PlanService
- Загрузка плановых задач по типу события и периоду
Конфигурация (публичные поля)
Минимально необходимые параметры со стороны заказчика:
- Учётные данные IAM: client / secret / login / password
- При необходимости — базовые URL IAM и API (значения по умолчанию соответствуют контуру ФОМС)
- Флаг использования SSL
- Путь единичного результата (
resultпо умолчанию)
Потоки и блокирующий API
Методы клиента синхронные. Экземпляр модуля не потокобезопасен:
создавайте и используйте его в одном рабочем потоке. Из GUI-потока тяжёлые операции
не вызывайте — выносите в фоновый поток (как принято в вашей ИС).
Локальное хранилище
Библиотека не навязывает схему БД. При необходимости кэша задач и outbox результатов вы реализуете внешние порты хранения и подключаете их к своему слою данных. На этапе «только библиотека + хедеры» достаточно работы через API без собственного кэша.
Поведение транспорта (для интегратора)
- Заголовки: Bearer-токен,
Accept: application/hal+json, JSON body - При HTTP 401 — обновление токена и один повтор запроса
- При HTTP 429 — ограниченный повтор
- Ошибки API возвращаются структурой с HTTP-статусом и текстовым
message