Подтверждённый путь: от ошибки до публикации
На этой странице
Задача выполнена. Реальный запрос редактора восстановлен в существующую версию d720000003 / v1; превью доставлено обоим. Пока выполнялась итоговая проверка, редактор сам нажал «Опубликовать»: Telegram webhook подтверждает успешную публикацию. Оператор не нажимал кнопки и не имитировал callback.
Последовательность по Москве
| Время / выполнение | Что подтверждено |
|---|---|
| 14:33:25 · 339 | Настоящая команда редактора; допуск пройден, v1 создана, локальная ошибка до платного запроса |
| 340 | Статус не отправлен: выражение упало до Telegram HTTP |
| 15:20:08 · 348 → 349 | Операторское продолжение той же v1 по доказанному исходному событию |
| 15:20:10.547 · сообщение 62 | Инициатор получил подтверждённый статус до запроса к модели |
| 349 и 350–355 | Один текст, одна иллюстрация, два одинаковых превью: сообщения 63 и 64 |
| 15:22:26 · 356 | Редактор сам нажал публикацию; Telegram подтвердил одно сообщение в канале |
| 357–358 | Итоговые уведомления и снятие старых кнопок |
Это восстановление ранее отправленной команды, а не отдельный новый /post после исправления. Идентификаторы материала и пользователя в примерах обезличены. Результаты и границы проверок.
Причина
Исходное событие 720000003, message 59, execution 339: 14:33:25 МСК / 11:33:25 UTC. VPS и PostgreSQL используют UTC. Права редактора и /post прошли проверку, создана строка версии 49.
В HTTP-выражениях внутреннего сервиса соседние закрывающие фигурные скобки конфликтовали с разбором шаблона n8n 2.38.7. Узел «Допуск → OpenAI — написать текст» завершился ExpressionExtensionError: invalid syntax. Перед этим дочерний статус 340 получил такую же локальную ошибку; обработчик ошибочно записал notification_outcome_unknown. Telegram-запроса статуса не было. Платные запросы не начинались. Ограничение только на владельца не было причиной.
Исправлены 37 выражений; проверены все 53 актуальных HTTP-выражения внутреннего сервиса установленным движком n8n, с сопоставлением результата обычному JavaScript. Добавлены привязка дочернего execution к участнику и Error Workflow с безопасным уведомлением/кодом выполнения. Техническая ошибка не запускает автоматическую повторную генерацию.
Основной workflow опубликован как 78e2d42b-ab57-4ed2-b22f-c6e54ecd62a3. Сохранённые nodes/connections/settings и опубликованные nodes/connections сверены с внедрёнными файлами. Сервис collaboration — 1.0.1. Активно 10 workflow / 422 узла; отдельный неактивный одноразовый мост — 3 узла.
Подтверждённый результат
- Операторский мост
348→ основной execution349; статусы350–355, все success. Возобновлена прежняя v1 с прежним событием. Новый материал не создавался. - Редактор получил статус
62: ответ Telegram подтверждён 15:20:10.547 МСК, до первого OpenAI-запроса в 15:20:11.925. От входа в основной workflow — 2,208 с, от старта CLI-моста — 9,959 с. Это измерение восстановления, не обещание такой же задержки обычного нового webhook. Цель 1–2 с не объявляется достигнутой. Исходная задержка из-за неисправности была около 46 минут 46 секунд. - 1 запрос текста + 1 генерация изображения, оба HTTP 200. Повторов/сокращений не потребовалось. Подпись — 630 символов, заголовок — 37, подзаголовок — 65.
- Одно общее фото и одинаковая подпись: владелец — message 63, редактор — 64. Обе отправки подтверждены, по одной попытке; кнопки
p|d720000003|1,r|d720000003|1,x|d720000003|1. - Статусы подготовки получает инициатор; отдельного статуса подготовки владельцу не отправляли. Оба получили превью.
- 15:22:26 МСК: настоящий webhook execution 356 — редактор нажал «Опубликовать» на своей копии
64. Проверены numeric from.id, private chat, совпадение sender/chat,is_bot=false, callback и связь с публикацией. В канал отправлено одно сообщение9, без новых запросов к модели. Статусы357–358success. Уведомления о решении: владельцу66, редактору67. - Сейчас версия published. После публикации обе старые клавиатуры сняты штатным обработчиком; старый v1 не предназначен для новой правки. Новый материал можно создавать обычным
/post тема.
Проверки и границы
Реально проверены подготовка текста, иллюстрации, renderer, статусы, две доставки и настоящее нажатие «Опубликовать» редактором. 26 изолированных проверок охватывают владельца/редактора, неизвестного и отключённого участника, дубли, гонки, независимую доставку, неизвестный исход, привязку ForceReply, устаревшие кнопки и одноразовый захват восстановления. Изолированные Telegram-ответы не выдаются за реальные сообщения.
Не проверены новым реальным действием: доработка через ForceReply, отклонение, новый поиск /news, блокировка бота одним адресатом и реальные аварии внешних API. Ранее остановленные запросы владельца 342 и поиска 345/346 не перезапускались. Полный restore VPS из дампа не выполнялся. Сайт документации не публиковался.
Остальные 20 строк версий, 3 подборки, 6 карточек, 4 claims и обе роли сохранены. Credentials, секретные файлы и защищённая конфигурация сверены; DDL не менялся. Единственный Telegram trigger и webhook сохранены; расписаний не добавлено.
Backup и откат
Проверенный дамп и снимки: /opt/bfl-content/backups/20260916T120858Z-before-editor-post-fix.
План точечного отката расширения: python3 /opt/bfl-content/editor-post-fix/rollback-extension.py. Флаг --apply возвращает прежние девять графов и сервис 1.0.0, сохраняя исправление выражений. Он снимает новый Error Workflow, не восстанавливает старую БД и не меняет материалы, публикации, роли или credentials. Применение отката в этой задаче не выполнялось; перед ним проверяются текущие версии и отсутствие активных выполнений. Полное возвращение исходных схем снова внесёт доказанный дефект.
Документация
bfl-multiuser-docs-export.zip — актуальные схемы, код, реестры, команды и результаты. Определения взяты из локальных внедрённых файлов, сверенных с VPS; UUID активных версий прочитаны отдельно. Хеш схемы БД совпал с сохранённым снимком.
Автоматическая проверка запретила перенос расширенной трассы и повторную полную выгрузку: она не сочла доказанным исключение чувствительных данных. В архив включены только минимальные подтверждённые факты выполнения; полные payload, тексты переписки, строки материалов и credentials не включались. Это не мешает проверке точности схем: их равенство на VPS проверено до формирования архива.