Giter VIP home page Giter VIP logo

butler's People

Stargazers

 avatar

Watchers

 avatar

butler's Issues

Интент для проверки выполнения работы

Как пользователь я хочу подтверждать выполнение работы словами: "сделал", "сделано", "сделала", "помыл", "постирал" и т.д., ведь иногда хочется ответить дворецкому глаголом из вопроса вместо "да".

Критерии готовности

  1. Pull request с изменениям создан.
  2. Необходимые тесты изменены.
  3. Название интента в Яндекс.Диалоги: Работа сделана.
  4. ID интента в Яндекс.Диалоги: job.done.yes.
  5. Текст грамматики интента job.done.yes записан в это issue.
  6. Интент job.done.yes одобрен модератором платформы Яндекс.Диалоги
  7. Интент job.done.yes опубликован на платформе Яндекс.Диалоги
  8. В исходном коде навыка все сравнения команды с COMMAND_YES заменены на проверку интента YANDEX.CONFIRM.

Критерии приёмки

  1. Дворецкий считает работу выполненной после таких ответов пользователя на вопрос:
    ага
    да
    готово
    сделал/сделала/сделано
    помыл/помыла/помыто
    постирал/постирала/постирано
    протёр/протёрла/протёрто
    почистил/почистила/чисто
    исполнил/исполнила/исполнено
  2. Дворецкий НЕ принимает подтверждение работы репликами пользователя:
    чё
    аааа
    йо
    ку
    повтори
    не
    приятно
    сделай
    сделай сам
    сделай сама
    помой сама
    протри сама
    почисти сам
    сделай ты
    протри
    помой
    отвали
    чё?

Заменить текст подсказки "скажите принято или дальше" на "скажите хорошо или дальше"

Когда я говорю "принято", Алиса не всегда распознаёт, зато всегда распознаёт "хорошо". Поэтому подсказку "скажите принято или дальше.", лучше заменить на "скажите хорошо или дальше.".

Критерии готовности

  1. Pull request с изменениям создан.
  2. Текст константы HINT_AGREE_NEXT в файле src/Application.php изменён.

Критерии приёмки
1.
д: помойте полы в комнате.
я: чё?
д: помойте полы в комнате. скажите хорошо или дальше.

Саджесты(возможные реплики от лица пользователя) для текстового способа ввода

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

Критерии готовности

  1. Pull request с изменениям создан.
  2. Необходимые тесты изменены.
  3. Сценарии использования обновлены (см. https://docs.google.com/spreadsheets/d/1lZ3Gms6kVfVLNfldUSMWFW42-yUY8f0zmGxsGGVcyaE/edit#gid=1383316135)

Критерии приёмки

  1. В чате Алисы после каждой реплики (которая не завершает сессию) появляются кнопки с вариантами ответов. Нажатие на кнопки отправляет текст кнопки в чат и тем самым диалог с Алисой продолжается

Очистить список работ

Как пользователь я хочу очистить список работ, чтобы создать новый.

Критерии готовности

  1. Pull request с кодом создан.
  2. Необходимые тесты пройдены.
  3. Руководство пользователя (README.md) обновлено.

Критерии приёмки

  1. Список удаляется на всех устройствах, где авторизован пользователь

Команда «Помощь»

Как пользователь, от которого дворецкий ждёт реплики, я могу сказать «Помощь», чтобы дворецкий пояснил, какие команды я могу сказать сейчас.

Критерии готовности

  1. Pull request с изменениям создан.
  2. Необходимые тесты изменены.
  3. Сценарии использования обновлены (см. https://docs.google.com/spreadsheets/d/1lZ3Gms6kVfVLNfldUSMWFW42-yUY8f0zmGxsGGVcyaE/edit#gid=1383316135)
  4. Команда «помощь» даёт минимальную справку по текущему состоянию, необходимую для продолжения диалога.

Критерии приёмки
1.
д: помойте окно
я: помощь
д: скажите хорошо, если хотите заняться этим сейчас, либо скажите дальше, если хотите, чтобы я предложил другое занятие
я: дальше
2.
д: вы помыли окно?
я: помощь
д: скажите да, если работа сделана, либо скажите нет
я: да
3.
д: вы постирали шторы?
я: нет
д: желаете заняться этим сейчас?
я: помощь
д: скажите да, если хотите заняться этим сейчас, либо скажите нет, и я предложу что-нибудь другое

Текст для описания навыка в каталоге Алисы

Как новый пользователь, который смотрит навык в каталоге навыков Алисы, я хочу узнать, как работать с навыком, чтобы понять, подходит мне навык или нет.

Критерии готовности

  1. Pull request с текстом создан.
  2. Текст не содержит ссылок и какой-либо разметки.
  3. Текст навыка записан в файле с именем description.txt

Критерии приёмки

  1. Первые шесть строк текста рассказывают в чём суть навыка, для кого он был сделать и почему им стоит пользоваться (Что? Для кого? Почему я должен этим пользоваться?).
  2. Текст содержит подробную инструкцию, как пользоваться навыком (механика).
  3. Текст написан от третьего лица (Алиса поможет ...).
  4. Текст разбит на абзацы.

Полезные ссылки

Школа Алисы. Как писать текст для описания навыков?

Команда «Что ты умеешь»?

Как пользователь, я хочу получить развёрнутую справку при помощи команд «Что ты умеешь», чтобы понять, как взаимодействовать с навыком.

Критерии готовности

  1. Pull request с кодом создан.
  2. Необходимые тесты пройдены.

Критерии приёмки

  1. В ответ на команду «Что ты умеешь» дворецкий зачитывает подробную справку.

Команда "повтори"

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

Критерии готовности

  1. Pull request с кодом создан.
  2. Необходимые тесты пройдены.
  3. Новые тест кейсы добавлены.
  4. Сценарии использования обновлены https://docs.google.com/spreadsheets/d/1lZ3Gms6kVfVLNfldUSMWFW42-yUY8f0zmGxsGGVcyaE/edit#gid=1383316135
  5. Используй интент по умолчанию YANDEX.REPEAT

Критерии приёмки

  1. В ответ на команду «повтори», дворецкий повторяет предыдущую реплику.

Подсказки после неправильного ответа

Как пользователь который знает что отвечать навыку, я не хочу слышать подсказку "скажите принято или дальше" пока не ошибусь (не скажу неопознанную команду), чтобы не раздражаться (я итак знаю, что сказать)

Критерии готовности

  1. Pull request с кодом создан.
  2. Необходимые тесты пройдены.

Критерии приёмки

д: помойте окно
я: что-то невнятное
д: помойте окно. скажите хорошо или дальше
я: опять что-то невнятное
д: помойте окно. скажите хорошо или дальше
я: помою
д: позовите меня, когда закончите, и я предложу, что делать дальше
2.
д: вы помыли окно?
я: что-то невнятное
д: вы помыли окно? скажите да или нет
я: опять что-то невнятное
д: вы помыли окно? скажите да или нет
я: помыл
д: постирайте шторы
3.
д: вы постирали шторы?
я: нет
д: желаете заняться этим сейчас?
я: что-то невнятное
д: изволите постирать шторы сейчас? скажите да или нет
я: что-то невнятное
д: изволите постирать шторы сейчас? скажите да или нет
я: да
д: позовите меня, когда закончите, и я предложу, что делать дальше

Цепочка обязанностей

Как разработчик я хочу убрать логику обработки запросов из Application.php, чтобы файл не разрастался.

Критерии готовности

  1. Используется паттерн цепочка обязанностей вместо if...elseif...else
  2. Отсутствуют изменения в tests/ApplicationTest.php
  3. Pull request создан

Критерий приёмки

  1. Все тесты из набора проходят

Обработка интентами ответа "не желаю делать эту работу"

Как пользователь я хочу отказываться от работы словами: "нет", "нее", "дальше", "не сейчас", "не хочу", "сделай сам" и т.д., чтобы не тупить и не вспоминать команду "дальше".

Критерии готовности

  1. Pull request с изменениям создан.
  2. Необходимые тесты изменены.
  3. ID интента в Яндекс.Диалоги: job.accept.no.
  4. Текст грамматики интента записан в это issue.
  5. В исходном коде навыка удалена константа COMMAND_DECLINE, а все использования в операциях сравнения заменены на поиск интента в запросе пользователя.

Критерии приёмки

  1. Дворецкий НЕ принимает подтверждение работы репликами пользователя:
    нет
    не хочу
    не буду
    не
    дальше
    сделай сам
    потом
    не сейчас
  2. Дворецкий принимает подтверждение работы репликами пользователя:
    да
    сделаю

Обработка интентами ответа "я займусь этой работой"

Как пользователь я хочу подтверждать работу словами: "хорошо", "да", "сделаю", "почищу", "помою", "постираю" и т.д., чтобы не тупить и не вспоминать команду "принято".

Критерии готовности

  1. Pull request с изменениям создан.
  2. Необходимые тесты изменены.
  3. Руководство пользователя (README.md) обновлено.
  4. ID интента в Яндекс.Диалоги: job.accept.yes.
  5. Текст грамматики интента записан в это issue.
  6. В исходном коде навыка удалена константа COMMAND_ACCEPT, а все использования в операциях сравнения заменены на поиск интента в запросе пользователя.

Критерии приёмки

  1. Дворецкий принимает подтверждение работы репликами пользователя:
    да
    хорошо
    окей
    ок
    принято
    сделаю
    помою
    постираю
    протру
    почищу
    исполню
  2. Дворецкий НЕ принимает подтверждение работы репликами пользователя:
    чё
    аааа
    йо
    ку
    угу
    повтори
    не
    приятно
    сделай
    сделай сам
    сделай сама
    помой сама
    протри сама
    почисти сам
    сделай ты
    протри

Руководство администратора

Как разработчик я хочу прочитать в README.md как создать навык в Яндекс.Диалоги, чтобы создать интенты, задать активационные имена и выбрать веб-хук.

Критерии готовности

  1. Pull request с изменениям создан.
  2. Руководство пользователя (README.md) обновлено.

Критерии приёмки

  1. В README.md раздел Руководство пользователя переименован в Руководство администратора
  2. В README.md после подраздела Деплой в Яндекс.Облако, появился подраздел Создание диалога на платформе Яндекс.Диалоги
  3. В новом разделе записано как создать интент (+ скриншот), задать активационное имя (+ скриншот) и выбрать веб-хук, а так-же тексты всех интентов

Сохранить список работ

Как пользователь я хочу сообщить навыку список работ, чтобы навык предлагал мне работу из списка по порядку, когда я попрошу об этом.

Критерии готовности

  1. Pull request с кодом создан.
  2. Необходимые тесты пройдены.
  3. Руководство пользователя (README.md) обновлено.
  4. Для хранения данных используется сервис, плата за который осуществляется за операции(а не за время работы сервиса, как с кластером БД в Яндекс.Облаке).

Критерии приёмки

  1. Когда список работ пуст, навык предлагает пользователю заполнить список работ.
  2. Список работ сохраняется между сессиями.

Аватарка для каталога навыков Алисы

Как модератор каталога навыков Алисы, я требую аватарку, чтобы разместить навык в каталоге.

Критерии готовности

  1. Pull request с картинкой создан
  2. Размер картинки 224 на 224 пикселя
  3. Имя файла картинки avatar
  4. Картинка находится в директории assets, которая в свою очередь находится в корне проекта

Критерии приёмки

  1. Аватарка не теряет важных элементов, если её обрезать в форму спич бабла
  2. Аватарка не содержит мелкий текст

Полезные ссылки
Школа Алисы. Как сделать аватарку для каталога навыков Алисы?

Навык не отвечает, когда в сессии пользователя другие данные

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

Критерий готовности

  1. Pull request с кодом создан
  2. Необходимые тесты пройдены
  3. Добавлен новый текст кейс с некорректными данными в пользовательской сессии

Критерии приёмки

  1. В случае некорректных данных в сессии пользователя, навык начинает с самого начала списка, как будто перед ним новый пользователь

Переход к следующей задаче в случае неопределённости

Selection_015.png

Диалог
д: вы почистили электровеник? скажите да или нет
я: нет
д: желаете заняться этим сейчас?
я: не знаю
д: вы почистили электровеник? скажите да или нет

По ощущениям, последний ответ Дворецкого может быть:

  1. желаете заняться этим сейчас? скажите да или нет
  2. желаете почистить электровеник сейчас? скажите да или нет
  3. позовите меня, когда решите (завершение сессии)

Управление списком задач

Как пользователь я хочу управлять списком задач через интерфейс, чтобы не пришлось править исходный код навыка.

Приветственная фраза

Как новый пользователь, я хочу получить подсказку при запуске навыка, чтобы сориентироваться.

Критерии готовности

  1. Pull request с кодом создан
  2. Необходимые тесты пройдены

Критерии приёмки

  1. Приветственная фраза заканчивается вопросом который провоцирует ответ и направляет диалог в нужное русло.
  2. Приветственная фраза произносится на одном дыхании (не длиннее).

Обработка ответа "не сделал работу"

Чтобы сказать «нет», я хочу использовать синонимы (не сделал и т.д), когда дворецкий спрашивает, сделал ли я предыдущую работу

Критерии готовности

  1. Pull request с изменениям создан.
  2. Необходимые тесты изменены.
  3. ID интента в Яндекс.Диалоги: job.accept.no.
  4. Текст грамматики интента записан в это issue.
  5. В исходном коде навыка удалена константа COMMAND_NO, а все использования в операциях сравнения заменены на поиск интента в запросе пользователя.

Критерии приёмки

  1. Дворецкий НЕ принимает подтверждение работы репликами пользователя:
    нет
    неа
    не сделал
    не мыл
    не чистил
  2. Дворецкий повторяет вопрос после реплики пользователя:
    не хочу

Ответ на предложение о работе, которая уже выполнена

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

Критерии готовности

  1. Интент job.accept.no изменён.
  2. Обновлённый текст грамматики интента job.accept.no записан в это issue.

Критерии приёмки

  1. Если после предложения дворецким работы, ответить одной из фраз ниже, то дворецкий предложит следующую работу.
    сделано | сделал | сделала
    помыл | помыла | помыто
    постирал | постирала | постирано
    протёр | протёрла | протёрто
    почистил | почистила | чисто
  2. Если после предложения дворецким работы, ответить одной из фраз ниже, то дворецкий посчитает, что пользователь займётся этой работой.
    сделаю
    помою
    постираю
    протру
    почищу

Проверка списка работ перед деплоем

Как разработчик я могу добавить новый тест, чтобы проверять формат файл conf/jobs.php перед заливкой на сервер.

Критерии готовности

  1. Pull request с изменениям создан.
  2. Необходимые тесты изменены.
  3. phpunit сигнализирует об ошибке, если формат списка работ в conf/jobs.php нарушен: неправильные ключи, пустой список и т.п.

Критерии приёмки

  1. Запускаю ./deploy.sh с пустым conf/jobs.php, и получаю сообщение об ошибке. Код не заливается в Яндекс.Облако.
  2. Запускаю с ./deploy.sh с валидным conf/jobs.php и заливска завершает успешно.
  3. В валидном conf/jobs.php убираю у одного элемента ключ 'question', запускаю ./deploy.sh с пустым conf/jobs.php, и получаю сообщение об ошибке. Код не заливается в Яндекс.Облако.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.