internal/chat: мультиканальный Router (UserID-сессии, routing, pending Ask/ответ) + Channel интерфейс
All checks were successful
build-test / build (push) Successful in 41s

This commit is contained in:
Hermes
2026-08-14 20:33:04 +05:00
parent 4ebafc48d0
commit c9d69594cc
6 changed files with 452 additions and 0 deletions

20
internal/chat/errors.go Normal file
View File

@@ -0,0 +1,20 @@
package chat
import "errors"
// Классы ошибок (M1..M5) — по конвенции проекта. Определены как отдельные
// sentinel-ошибки, чтобы вызывающий мог отличить их errors.Is().
var (
// M1 — нет маршрута для UserID. Send → no-op; Ask → ошибка.
ErrRouteNotFound = errors.New("chat: route not found for user")
// M2 — канал не смог доставить исходящее.
ErrSendFailed = errors.New("chat: send failed")
// M3 — Ask при уже открытом pending-вопросе (не затираем).
ErrWaitingAnswer = errors.New("chat: pending question already open")
// M5 — Run-цикл канала упал фатально (Router перезапускает канал).
ErrChannelFatal = errors.New("chat: channel fatal")
)