- убраны клиент бота, транспорт обновлений, отправитель сообщений, сборка входа при старте, секция настроек и зависимость go-telegram-bot-api; из конвейера ушла доставка ответа отправителю — исход виден опросом готовности. Колонки адресата и значение источника остались в схеме: применённые шаги не переписываются - шаг 202608140003 запрещает пустого владельца у аудиозаписи и у файла; существующие строки он не проверяет, и это принято сознательно — искать их надо запросом до выкладки - ревью нашло два пред-существующих дефекта, оба закрыты: пустой второй ответ распознавателя стирал сохранённую расшифровку, а пустая расшифровка перестала быть заметной вместе с убранной доставкой. Попутно поднят golang.org/x/image до v0.45.0 — красный шаг vulns, воспроизводился и на чистом master
64 lines
5.1 KiB
Markdown
64 lines
5.1 KiB
Markdown
# Вход Telegram убран целиком, а не выключен признаком
|
||
|
||
- **Дата:** 2026-08-15
|
||
- **Источник:** openspec/changes/archive/2026-08-15-remove-telegram-intake/design.md,
|
||
разделы «Context» и «Формы решения, между которыми выбирали»
|
||
|
||
## Решение
|
||
|
||
Вход Telegram убран из сервиса целиком: клиент, транспорт обновлений, отправитель
|
||
сообщений, сборка входа при старте, список допущенных людей, секция настроек и
|
||
зависимость. Убран **временно** — возврат заводится новым изменением вместе со
|
||
связью чата с учётной записью.
|
||
|
||
Хранилище при этом не тронуто: колонки `tg_chat_id`, `tg_reply_message_id` и
|
||
значение `telegram` перечня источников остаются в схеме вместе с записями,
|
||
которые их заполнили.
|
||
|
||
## Почему
|
||
|
||
Цитата источника:
|
||
|
||
> Сервис принимает записи двумя входами, и входы расходятся в главном: у записи,
|
||
> пришедшей из приложения, есть владелец, а у записи, пришедшей от бота, владельца
|
||
> нет и быть не может — связи чата с учётной записью сервис не ведёт. Пока такие
|
||
> записи заводятся, правило «каждая запись принадлежит человеку» действует
|
||
> наполовину.
|
||
|
||
Отвергнуты две формы решения, обе с названной ценой:
|
||
|
||
> **Выключить вход признаком, код оставить.** Признак `telegram.enabled` заведён
|
||
> 2026-08-13 и обязателен, а приём по HTTP владельца уже требует: одна правка
|
||
> ключа в боевом файле даёт «новых записей без владельца не заводится» ценой ноля
|
||
> строк кода и мгновенным возвратом. Отвергнуто по причине из раздела «Why»:
|
||
> двойная модель остаётся в коде, и оговорку про бота продолжает платить каждая
|
||
> следующая задача.
|
||
>
|
||
> **Сузить бота до исходящего канала.** Приём убрать, отправку оставить с одним
|
||
> адресатом — чатом владельца строкой настроек. Отвергнуто потому, что заводит
|
||
> понятие «канал уведомления владельца», которое тут же переделает задача
|
||
> `ntfy-delivery`.
|
||
|
||
Решениями, которые это изменение отменяет, были
|
||
[ADR-2026-08-13-telegram-intent-declared-not-inferred](ADR-2026-08-13-telegram-intent-declared-not-inferred.md)
|
||
и
|
||
[ADR-2026-08-13-telegram-outage-does-not-block-startup](ADR-2026-08-13-telegram-outage-does-not-block-startup.md):
|
||
оба нормировали подъём входа, которого больше нет. Доводы их при этом устояли и
|
||
понадобятся возврату — оба продолжают отвечать на вопрос «что делать с входом,
|
||
чей внешний собеседник недоступен».
|
||
|
||
## Последствия
|
||
|
||
- `+` модель одна: оговорка про запись без владельца ушла из спек приёма,
|
||
доступа, конвейера и хранилища.
|
||
- `+` зависимость `go-telegram-bot-api` ушла из манифеста вместе с двумя путями
|
||
утечки токена, которые проект закрывал двумя задачами.
|
||
- `−` у сервиса не осталось входа, которым человек может воспользоваться:
|
||
приложения нет, личных ключей для программ нет, и до этих задач запись кладут
|
||
собранным руками запросом с сессией из браузера. Владелец окно принял.
|
||
- `−` записи, застрявшие в конвейере на минуту выкладки, доходят до текста, и
|
||
ответа в чат по ним не уходит. Смягчения нет: чат и есть убираемый вход.
|
||
- `−` бот у Telegram остаётся зарегистрированным и на вид живым, а ключ доступа —
|
||
в настройках выкладки под возврат входа (решение владельца от 2026-08-14).
|
||
Отправитель голосового не получит ни ответа, ни отказа.
|