Files
multica/server/internal/integrations
Xichang(Seacen) Zhao 03b597dd8a feat(wecom): report a failed run to the chat that asked (#7952)
wecom/outbound.go subscribed to EventChatDone and EventInboxNew only, while
DingTalk, Lark, Slack and Telegram all handle EventTaskFailed. A run that
failed in WeCom therefore said nothing, and logged nothing either, because
no handler ran.

task:failed now goes out on the same route a reply takes — task delivery
row, origin gate, installation status, socket or relay — carrying the
platform's own redacted failure text behind a warning mark, the way DingTalk
delivers it. Nothing is sent while an auto-retry is pending: the retry
attempt reports its own outcome. task:cancelled is subscribed for the log
line only; a cancellation ends the run without an answer and WeCom has
nothing to take back, which is Lark's choice too.

Tests: the failure reaches the bound chat; a retry-pending attempt, a
failure with no text, and a web-UI run's failure all stay silent; the wiring
through a real bus, with a cancellation publishing nothing; and the same
failed run through the real query layer against Postgres. With the two
subscriptions removed the bus-wired tests fail; with the content helper
reverted to chatDoneContent the processEvent test fails.
2026-09-03 14:25:44 +08:00
..