Техническое задание: Android-приложение для шаблонов текста

Основная цель

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

Ключевые функции

1. Плавающая кнопка и интерфейс

  • Плавающая кнопка меняет иконку в зависимости от состояния приложения:
    • Иконка блокнота - когда приложение свёрнуто (открывает список шаблонов).
    • Иконка крестика - когда список открыт (закрывает список без выбора).
    • Иконка плюса - когда список открыт (добавляет новый шаблон).
  • Список шаблонов отображается в полноэкранном режиме.
  • Каждый элемент списка содержит:
    • Название шаблона.
    • Управление: возможность редактирования (иконка карандаша) и удаления (иконка корзины). Альтернатива - реализация свайпа по элементу для отображения действий.

2. Редактор шаблонов

  • Открывается в полноэкранном режиме.
  • Содержит поля:
    • Название шаблона.
    • Текст шаблона (с поддержкой спинтакс-конструкций, например, {вариант1|вариант2}).
  • Кнопки управления: Сохранить, Отменить, Удалить.

3. Обработка текста (спинтакс)

  • При выборе шаблона происходит обработка конструкций вида {вариант1|вариант2|вариант3}.
  • Система случайным образом выбирает один из вариантов внутри конструкции.
  • Поддерживаются вложенные спинтакс-конструкции.
  • Готовый текст автоматически вставляется в активное поле ввода другого приложения (например, чата).
  • Важно: приложение не выполняет автоматическую отправку текста - пользователь подтверждает действие самостоятельно.

4. Синхронизация

  • Через веб-синхронизацию передаются и обновляются XPath или CSS-селекторы, которые определяют поле для вставки текста в целевых приложениях.
  • Это позволяет гибко настраивать приложение для работы с разными программами.

Технические требования

  • Платформа: Android.
  • Доступ к системной функции «поверх поверх других окон» для плавающей кнопки.
  • Реализация логики обработки спинтакса (имеется референсный код на JavaScript и Python).
  • Механизм веб-синхронизации для обновления селекторов.