Skip to content

Multi-chat fan-out: chat_id через запятую на всех эндпоинтах (единый ответ) - #21

Merged
lavr merged 3 commits into
mainfrom
multi-chat-fanout
Jul 10, 2026
Merged

Multi-chat fan-out: chat_id через запятую на всех эндпоинтах (единый ответ)#21
lavr merged 3 commits into
mainfrom
multi-chat-fanout

Conversation

@lavr

@lavr lavr commented Jul 9, 2026

Copy link
Copy Markdown
Owner

Единый механизм отправки в несколько чатов через запятую в chat_id (chat_id=a,b,c)
на всех точках отправки, с общим форматом ответа.

⚠️ Ломающее изменение

Все эндпоинты теперь всегда возвращают единую форму ответа, даже для одного чата:

{"ok": true,
 "results": [{"chat":"a","sync_id":"..."}, {"chat":"b","request_id":"...","queued":true}],
 "errors":  [{"chat":"c","error":"resolving chat: ..."}]}
  • Per-chat: sync_id (sync) либо request_id+queued (async).
  • Request-level ошибки (битый JSON, пустой chat_id, invalid status) остаются {ok:false,error} с 400/415.
  • Коды: 200 sync (≥1 доставлен) / 202 async / 502 если во все не удалось.

Охват

  • POST /send (sync + async), POST /alertmanager, POST /grafana, POST /gitlab, CLI send, CLI enqueue.
  • Общие parseChatIDs (split , + trim + dedup + порядок) + best-effort fan-out коллектор.
  • /gitlab переведён на общий механизм; sender-путь и изоляция per-sender токенов сохранены (цели = sender.chats, ?chat_id/routes для sender игнорируются).
  • sync /send парсит mentions per-target-bot.
  • async /send + CLI enqueue: chat_id=a,bN отдельных сообщений в очередь (expand; per-chat независимый retry/ack, worker без изменений — обоснование в код-комментарии).

Прочее

Обновлены OpenAPI, docs (configuration/integrations/README) с пометкой breaking, примеры, бамп версии chart+app.

@lavr lavr self-assigned this Jul 10, 2026
@lavr
lavr merged commit 913e32c into main Jul 10, 2026
9 checks passed
@lavr
lavr deleted the multi-chat-fanout branch July 10, 2026 22:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant