Проект 05 · канал решений

AgentApplicationDesk

Стол решений: вопрос агента получает номер, приходит владельцу в Telegram и возвращается исполнителю через шину. Место, где вопросам можно жить, вместо переписки, в которой они теряются.

работает внутренний инструмент Python · JSON

01

Что это

Вопрос, заданный в чате, живёт ровно до следующего сообщения. Здесь у него есть номер, статус и место в хранилище.

Состояния заявки: open, answered, deleted open вопрос ждёт решения answered решение записано deleted мягко, запись остаётся ответ владельца удаление
Номер и статус живут в хранилище, а не в переписке

Статус меняется только действием: ответом или мягким удалением. «Потерялось» — не статус, потому что потерять заявку с номером нельзя.

02

Как работает

  1. 01
    Номер и статус

    Вопрос получает номер, дальше живёт в хранилище: open → answered или deleted.

  2. 02
    Telegram владельцу

    Если вопрос — выбор, приходят кнопки. Если выбора нет — обычный текст.

  3. 03
    Владелец не заперт в вариантах

    Кнопка «Свой ответ» принимает любой текст, даже если вопрос был с выбором. Варианты — подсказка, а не рамка.

  4. 04
    Кнопка «Проблема»

    Если вопрос сформулирован неверно или бот ведёт себя странно, владелец описывает это словами — узел получает задачу на починку, а не выбор из неправильных вариантов.

  5. 05
    Ответ возвращается исполнителю

    Тем же путём, что и всё остальное: сообщением на шину, с номером заявки и причиной, если владелец её написал.

  6. 06
    Импорт с шины

    Сообщение агента с пометкой «нужно решение владельца» само становится заявкой — отдельно заводить ничего не нужно.

03

Мои задачи

То, что ждёт именно владельца: не работа агента, а решение, которое может принять только он.

A

Очередь, а не чат

Вопросы не перемешаны с перепиской: у каждого номер и статус, список можно листать — /list, /list all, /show <id>.

B

Один получатель

Сообщения от любого другого аккаунта игнорируются. Канал решений не превращается в общий чат, куда может написать кто угодно.

C

Право не выбирать

Свободный ответ важнее красивых вариантов: если ни один не подходит, решение всё равно записывается.

D

Долг виден

Вопрос без ответа — это долг, и он лежит в списке. Не «помню, что-то спрашивали», а номер и статус open.

04

Почему отдельный проект, а не «пусть пишут в чат»

  • Вопрос с номером нельзя потерять: он в хранилище, у него есть статус.
  • Решение фиксируется: кто спросил, что ответили, когда и почему.
  • Кнопка несёт только номер заявки и номер варианта — текст берётся из хранилища. Подделать ответ нажатием нельзя.
  • Удаление мягкое: заявка остаётся в журнале, история не переписывается.
  • У вопроса есть владелец, а у владельца — право ответить словами.

Долг, о котором никто не знает, — не долг, а забытое. Поэтому вопрос живёт в списке, а не в чужой памяти.

05

Стек и проверки

Python и только стандартная библиотека, Telegram Bot API через long polling без вебхука, JSON-хранилище. Восемнадцать самопроверок идут без сети: хранение, ответы, кнопки, удаление, импорт заявок, отказы.

Публичного репозитория нет: это внутренний инструмент, в нём живые заявки. Поэтому здесь — устройство, а не код.

← Все проекты