Приложение 1. Бэклог
Полная таблица эпиков и историй приведена в табл. П.1.1.
Табл. П.1.1. Бэклог: эпики и истории
| ID | Эпик | История | Критерии приёмки | MoSCoW |
|---|---|---|---|---|
| US-1.1 | E1 | Запись зоны. Как оператор съёмки, я хочу записать участок на телефоне с LiDAR, чтобы получить съёмку с глубиной в метрах. | 1) Дано телефон с LiDAR и камера отслеживает положение, когда оператор начинает запись, тогда на полу фиксируется зона 0,8 × 0,8 м. 2) Дано запись остановлена, когда съёмка сохраняется, тогда в ней есть видео, позы камеры, служебные данные и кадры глубины. 3) Дано камера ещё не отслеживает положение, когда оператор пытается начать запись, тогда кнопка «Запись» недоступна и показана подсказка «AR инициализируется — медленно поводите камерой над полом». 4) Дано запись идёт 30 с, когда время истекает, тогда запись останавливается сама. | Must |
| US-1.2 | E1 | Проверка записи до отправки. Как оператор съёмки, я хочу сразу узнать, годится ли запись, чтобы не отправлять брак и переснять на месте. | 1) Дано запись 10–30 с, путь камеры ≥ 0,28 м, смена ракурса ≥ 90°, ширина зоны ≤ 0,92 м и разрыв между позами ≤ 0,5 с, когда проверка завершена, тогда показано «Карта готова» и кнопка «Отправить». 2) Дано запись короче 10 с, когда проверка завершена, тогда показано «Запись должна длиться от 10 до 30 секунд». 3) Дано путь камеры меньше 0,28 м, когда проверка завершена, тогда показано «Нужен обход зоны: пройдите вокруг участка». 4) Дано смена ракурса меньше 90°, когда проверка завершена, тогда показано «Слишком одинаковые ракурсы — пройдите вокруг и покажите все стороны». 5) Дано ширина зоны больше 0,92 м, когда проверка завершена, тогда показано «Зона слишком большая — снимите участок около 80×80 см». 6) Дано разрыв между позами больше 0,5 с, когда проверка завершена, тогда показано «Слишком большой разрыв между кадрами — переснимите плавнее». 7) Дано любая проверка не пройдена, когда оператор смотрит результат, тогда вместо «Отправить» доступна только «Переснять». | Must |
| US-1.3 | E1 | Подсказка обхода. Как оператор съёмки, я хочу видеть во время записи, сколько ещё обойти, чтобы снять участок с первого раза. | 1) Дано запись идёт 5 с и больше, когда путь камеры меньше 0,28 м, тогда на экране видна подсказка «Не стойте на месте — медленно обойдите круг вокруг зоны». | Should |
| US-2.1 | E2 | Отправка с телефона. Как оператор съёмки, я хочу отправить запись на сервер одной кнопкой, чтобы сборка началась без ручной команды. | 1) Дано проверка пройдена, когда оператор нажимает «Отправить», тогда создаётся задание со статусом «в очереди». 2) Дано отправка не удалась из-за сети, когда приходит ошибка, тогда причина показана текстом и отправку можно повторить. 3) Дано задание по этой съёмке уже создано, когда оператор после ошибки сети отправляет ту же съёмку ещё раз, тогда возвращается то же задание и вторая сборка не стартует. 4) Дано у пользователя уже идут три сборки, когда он отправляет ещё одну съёмку, тогда задание не создаётся и показано «Дождитесь окончания текущих сборок: их уже три». | Must |
| US-2.2 | E2 | Загрузка из браузера. Как сборщик карты, я хочу загрузить сохранённую съёмку формой в браузере, чтобы собрать карту без телефона. | 1) Дано открыта форма загрузки, когда выбран файл без видео, поз или служебных данных, тогда до отправки показано, чего не хватает. 2) Дано состав съёмки полный, когда сборщик отправляет форму, тогда создаётся задание и открывается список заданий. 3) Дано файл больше 400 МБ, когда сборщик отправляет форму, тогда задание не создаётся и показано «Файл съёмки больше 400 МБ». | Must |
| US-2.3 | E2 | Мои задания в браузере. Как сборщик карты, я хочу одной кнопкой с телефона открыть в браузере все свои задания, чтобы смотреть отчёты и карты на большом экране. | 1) Дано у пользователя есть задания, когда он нажимает «Открыть в браузере», тогда браузер открывает список всех его заданий с датой и статусом. 2) Дано одноразовая ссылка уже открыта или прошло больше 10 минут, когда её открывают снова, тогда список не открывается и показано «Ссылка уже открыта или истекла». 3) Дано другой браузер без сессии, когда открывается адрес чужого задания, тогда карта и отчёт не показываются и показано «Нужна ссылка с телефона или тестовая ссылка». | Must |
| US-2.4 | E2 | Фильтр по статусу. Как сборщик карты, я хочу отфильтровать задания по статусу, чтобы быстро найти готовые карты и отказы. | 1) Дано открыт список заданий, когда выбран фильтр «готово», тогда видны только готовые задания. | Should |
| US-2.5 | E2 | Удаление съёмки с телефона. Как оператор съёмки, я хочу удалить ненужную съёмку из «Моих карт», чтобы освободить память телефона. | 1) Дано карточка съёмки в «Моих картах», когда оператор подтверждает удаление, тогда файлы съёмки удаляются с телефона. | Could |
| US-3.1 | E3 | Отчёт о сборке. Как сборщик карты, я хочу видеть в отчёте статус, способ построения и метрики, чтобы решать по цифрам, а не на глаз. | 1) Дано сборка успешна, когда сборщик открывает отчёт, тогда видны статус «готово», способ построения «слияние глубины LiDAR», число треугольников видимой модели и опоры, размеры файлов. 2) Дано сборка завершилась отказом, когда сборщик открывает отчёт, тогда вместо метрик показаны статус «отказ» и текст причины из табл. 2.10. | Must |
| US-3.2 | E3 | Отказ с причиной. Как сборщик карты, я хочу получить отказ с понятной причиной на непригодной съёмке, чтобы не принять брак за карту. | 1) Дано съёмка нарушает любое условие из табл. 2.10, когда сборка завершается, тогда статус задания — «отказ», а причина — текст из той же строки табл. 2.10. 2) Дано статус «отказ», когда сборщик открывает задание, тогда геометрия-заглушка не выдаётся, просмотр и скачивание недоступны. 3) Дано съёмка проходит все условия табл. 2.10, когда сборка завершается, тогда статус — «готово», отказа нет. | Must |
| US-3.3 | E3 | Карта в игровом бюджете. Как разработчик игры, я хочу получать карту в пределах бюджета, чтобы не упрощать её вручную. | 1) Дано восстановленная поверхность больше бюджета, когда идёт сборка, тогда система сама упрощает видимую модель до 50 000 треугольников, а опору — до 25% граней видимой модели. 2) Дано сборка успешна, когда пакет записан, тогда видимая модель ≤ 50 000 треугольников и ≤ 25 МБ, опора ≥ 100 граней и ≤ 8 МБ. 3) Дано после упрощения бюджет не выполнен, например в опоре меньше 100 граней или файл видимой модели больше 25 МБ, когда сборка завершается, тогда статус — «отказ», причина — «Карта не уложилась в игровой бюджет, пакет не выдан». | Must |
| US-3.4 | E3 | Сравнение повторной сборки. Как сборщик карты, я хочу сравнить повторную сборку той же съёмки с первой, чтобы убедиться, что результат воспроизводится. | 1) Дано две сборки одной съёмки, когда сборщик сравнивает отчёты, тогда способ построения совпадает, а число треугольников различается не больше чем на 15%. | Should |
| US-4.1 | E4 | Ходьба по карте. Как сборщик карты, я хочу пройти по готовой карте персонажем в браузере, чтобы проверить проходимость без игрового движка. | 1) Дано сборка успешна, когда сборщик открывает просмотр, тогда персонаж стоит на опоре не меньше 5 с и не проваливается. 2) Дано открыт просмотр, когда сборщик ведёт персонажа по диагонали зоны от угла до противоположного угла (около 1,1 м), тогда персонаж проходит маршрут целиком, не проваливаясь и не застревая. 3) Дано сборка завершилась отказом или ещё идёт, когда сборщик открывает просмотр, тогда карта не загружается, показаны статус задания и причина отказа, если она есть. | Must |
| US-4.2 | E4 | Кадр съёмки рядом с картой. Как сборщик карты, я хочу видеть рядом с моделью кадр съёмки, чтобы сравнить карту с реальным местом. | 1) Дано открыт просмотр, когда карта загружена, тогда рядом виден кадр съёмки с той же камеры. 2) Дано другой браузер без сессии, когда открывается адрес кадра чужого задания, тогда кадр не отдаётся. | Must |
| US-4.3 | E4 | Рост персонажа при показе. Как сборщик карты, я хочу менять рост персонажа в просмотре, чтобы примерить карту под разные игры. | 1) Дано открыт просмотр, когда сборщик меняет рост персонажа, тогда персонаж меняется, а геометрия карты и файлы пакета — нет. | Should |
| US-5.1 | E5 | Скачивание пакета. Как разработчик игры, я хочу скачать пакет из пяти файлов, чтобы открыть карту в своём движке. | 1) Дано сборка успешна, когда разработчик нажимает «Скачать», тогда он получает map.glb, collision.glb, manifest.json, bounds.json, report.json. 2) Дано пакет скачан, когда оба GLB открываются в просмотрщике glTF, тогда они открываются без ошибок. 3) Дано задание ещё в очереди, собирается или получило отказ, когда разработчик запрашивает пакет, тогда файлы не выдаются и показано «Пакет есть только у готового задания». |
Must |
| US-5.2 | E5 | Настоящие размеры и описание пакета. Как разработчик игры, я хочу получать карту в метрах датчика с описанием осей, чтобы самому выставить масштаб персонажа. | 1) Дано пакет скачан, когда разработчик читает манифест, тогда там указаны метры, ось Y вверх, факт центрирования и масштаб 1. 2) Дано пакет собран, когда сравниваются размеры карты и съёмки, тогда масштаб геометрии не менялся. 3) Дано в манифесте единицы не метры или масштаб не равен 1, когда выполняется проверка пакета, тогда пакет не выдаётся. | Must |
| US-5.3 | E5 | Инструкция для Godot. Как разработчик игры, я хочу короткую инструкцию, как открыть пакет в Godot, чтобы не разбираться с импортом самому. | 1) Дано открыт отчёт, когда разработчик переходит по ссылке «Как открыть в Godot», тогда видны шаги импорта видимой модели и опоры. | Should |
| US-6.1 | E6 | Тестовая ссылка на эталоны. Как команда сервиса, я хочу выпустить многоразовую ссылку на четыре эталонных задания, чтобы продукт можно было проверить без телефона с LiDAR. | 1) Дано выпущена тестовая ссылка, когда её открывают в любом браузере, тогда видны только четыре эталонных задания с отчётами и ходьбой. 2) Дано открыта тестовая ссылка, когда смотрят список, тогда личные задания пользователей не видны. 3) Дано открыта тестовая ссылка, когда пытаются загрузить новую съёмку, тогда задание не создаётся и показано «По тестовой ссылке можно только смотреть эталоны». | Must |
| US-6.2 | E6 | Замена тестовой ссылки. Как команда сервиса, я хочу заменить тестовую ссылку, чтобы закрыть доступ по старой. | 1) Дано ссылка заменена, когда открывают новую, тогда видны четыре эталонных задания. 2) Дано ссылка заменена, когда открывают старую, тогда задания не открываются и показано «Нужна ссылка с телефона или тестовая ссылка». | Must |