Files

3.6 KiB
Raw Permalink Blame History

Spec Delta — icq-services

ADDED Requirements

Requirement: Жизненный цикл сервисов — только docker compose

Все сервисы проекта /opt/icq (prosody, webchat, slidgram) управляются исключительно через docker compose up -d --force-recreate <service>, а не ручными docker start или docker create. Каждый сервис подключён к сети icq_default и резолвится по имени сервиса (DNS-алиас из compose) внутри этой сети.

Scenario: prosody запущен штатно через compose

  • GIVEN сервис prosody пересоздан командой docker compose up -d --force-recreate prosody
  • WHEN выполняется docker ps --format '{{.Names}} {{.Networks}}'
  • THEN у icq-prosody непустая колонка Networks, содержащая icq_default

Scenario: prosody подключён к сети icq_default

  • GIVEN контейнер prosody в сети icq_default
  • WHEN выполняется docker network inspect icq_default
  • THEN в списке контейнеров есть icq-prosody с IPv4-адресом из 172.27.0.0/16

Scenario: резолвинг имени из веб-чата

  • GIVEN контейнер веб-чата в той же сети
  • WHEN выполняется docker exec icq-webchat getent hosts icq-prosody
  • THEN возвращается IP 172.27.0.x (просоди виден из веб-чата)

MODIFIED Requirements

Requirement: Доступность веб-чата chat.nixg.ru

Контейнер icq-prosody имеет IP-адрес в сети icq_default и доступен из icq-webchat по имени icq-prosody; веб-клиент Converse.js подключается к wss://xmpp.nixg.ru без бесконечной загрузки.

Scenario: веб-клиент открывается

  • GIVEN prosody в сети icq_default и доступен из webchat
  • WHEN браузер открывает https://chat.nixg.ru
  • THEN страница Converse.js загружается и показывает форму входа (не бесконечная загрузка)

Scenario: WebSocket-сессия устанавливается

  • GIVEN веб-клиент открыт
  • WHEN Converse.js соединяется с wss://xmpp.nixg.ru
  • THEN handshake завершается HTTP 101 и появляется форма входа

Requirement: Мост Telegram (Slidge)

Компонент telegram.nixg.ru продолжает аутентифицироваться с prosody (external component XEP-0114, порт 5347) после пересоздания prosody; данные моста (./slidgram/data) не затрагиваются.

Scenario: компонент аутентифицирован после пересоздания

  • GIVEN prosody пересоздан через compose
  • WHEN выполняется docker logs icq-prosody --tail 100
  • THEN в логах нет ошибок аутентификации, компонент telegram.nixg.ru в списке активных (или нет критических ошибок)

Scenario: мост жив после пересоздания

  • GIVEN prosody пересоздан через compose
  • WHEN выполняется docker logs icq-slidgram --tail 50
  • THEN нет ошибок подключения/аутентификации; мост в статусе Up