mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
3.6 KiB
3.6 KiB
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