Files
TrainigPlaner/docs/verification.md
T

21 KiB
Raw Blame History

Проверка первой версии — 24 сентября 2026

Выполнено

  • Решение .NET 10 собирается без ошибок и предупреждений.
  • Пять тестов Application проходят: независимое копирование подходов, сохранение нагрузок при объединении/разделении и перемещении, запрет потери подходов при разном их количестве, добавление круга, проверка отрицательного веса и схемы видеоссылки.
  • Docker-образ собирается; публикация отдельно проверяет наличие скрипта Blazor.
  • Два контейнера запускаются в общей сети; PostgreSQL проходит healthcheck, миграция применяется, первый тренер создаётся из окружения.
  • В Chrome проверены вход, создание клиента и программы, ручное добавление упражнения, разные веса 40/45/50 и 12/14/16 по подходам, сохранение и повторное открытие.
  • Проверены объединение/разделение сета, изменение порядка, перетаскивание, библиотека и отмена удаления блока.
  • Проверена независимая копия программы: изменение её веса не затрагивает оригинал.
  • Проверены две вкладки: устаревшая версия не перезаписывает более новую.
  • Неавторизованный запрос PDF перенаправляется на вход.
  • PDF скачан из приложения и отрендерен: кириллица, значки камеры, веса и шесть кликабельных ссылок присутствуют.
  • Отдельная длинная тренировка экспортирована на шесть страниц: все 18 упражнений и 54 ссылки сохранены; переносы страниц просмотрены.

Границы проверки

Проверка проведена локально в Docker на macOS и в настольном Chrome. Публичный TLS-прокси, нагрузка нескольких тренеров и мобильный интерфейс не проверялись. Данные проверки явно помечены как демонстрационные. Результаты и скрипты ручной браузерной проверки находятся в игнорируемом artifacts/qa; это не данные реальных клиентов.

Общие параметры упражнений — 25 сентября 2026

  • Убраны индивидуальные подходы и сеты. Добавлены общие повторения, текстовый вес, разминка, примечание, ручной процент, отдых в минутах и ручное время тренировки.
  • 8 тестов: независимое копирование полей, валидация, порядок блоков, общий отдых с паузой после последнего подхода.
  • Перед миграцией создана локальная резервная копия в игнорируемом каталоге backups. Миграция проверена на отдельной копии PostgreSQL: 19 упражнений из 15 блоков перенесены в одиночные блоки; проверены порядок, названия, ссылки, камера, число подходов, первые вес/повторения и перевод секунд в минуты.
  • Браузерные проверки выполнялись на отдельном временном экземпляре приложения и копии БД: ввод новых полей, сохранение и перезагрузка, независимая копия блока, текстовый вес, дробный отдых, итоги 6 и 10,5 минуты, отсутствие управления сетами, экспорт HTTP 200.
  • PDF проверен по тексту и структуре без рендеринга страниц: альбомная ориентация, новые колонки, кликабельные аннотации, встроенные камеры, итог отдыха и ручное время. Длинный PDF: все 18 упражнений на 3 страницах, повтор заголовков, текст в границах страниц.
  • По просьбе пользователя скриншоты и визуальная проверка PDF не выполнялись.

Единая PDF-таблица недели — 25 сентября 2026

  • Каждая неделя экспортируется одной таблицей с общими заголовками и последовательными тренировками; после каждой тренировки свой итог.
  • Проверена структура документа: одна таблица на неделю, только две общие строки заголовка повторяются при переносе.
  • Тестовый PDF: две короткие тренировки на одной странице без повторения заголовков между ними; длинная тренировка на следующих страницах, пустая тренировка, отдельные итоги и кликабельные ссылки. Проверены альбомная ориентация, повтор общих заголовков и границы текста.
  • Проверки без скриншотов и рендеринга страниц.

Группы библиотеки и поиск — 25 сентября 2026

  • 11 тестов проходят, включая точные/начальные совпадения, поиск по нескольким словам, регистр, «ё/е» и отсутствие результатов.
  • Миграция ExerciseGroups соответствует модели EF Core. На отдельной копии PostgreSQL проверен переход старых упражнений к nullable GroupId без удаления исходных записей.
  • На отдельном тестовом экземпляре проверены создание и переименование групп, независимое копирование упражнения между группами, drag and drop в группу и «Без группы», сохранение после перезагрузки.
  • Проверены отмена удаления группы, удаление группы с упражнениями, сохранение независимой копии в другой группе и индивидуальная корзина.
  • В конфигураторе проверены фильтр группы, поиск, пустой результат, блокировка добавления без выбранного упражнения; добавленное в программу упражнение остаётся после удаления библиотечной группы.
  • Заодно подтверждены значения по умолчанию: время новой тренировки «1 час», процент нового упражнения 80.
  • Все UI-проверки выполнены без скриншотов. Тестовые изменения делались только в отдельной базе.

Выпадающий поиск — 26 сентября 2026

  • Постоянный список заменён popover со строкой поиска; ширина соответствует полю, высота и направление раскрытия зависят от свободного места.
  • На отдельной копии базы проверены: скрытое начальное состояние, фильтрация, двойной клик без повторного добавления, одиночный выбор с кнопкой «Добавить», стрелки и Enter, Escape, закрытие по клику снаружи, отсутствие результатов и сохранение после перезагрузки.
  • Проверено размещение внутри уменьшенного окна и двойной клик при создании независимой копии упражнения в группе.
  • Сборка прошла. Скриншоты не выполнялись.

Удаление клиента — 29 сентября 2026

  • В карточку клиента добавлена корзина с подтверждением удаления клиента и всех его программ.
  • Сборка без предупреждений и ошибок, 11 тестов прошли; приложение обновлено в Docker.
  • В браузере на специально созданном тестовом клиенте проверены отмена удаления с сохранением программы, подтверждение, возврат к списку и недоступность удалённых клиента и программы по прямым ссылкам. Тестовый клиент удалён. Скриншоты не выполнялись.

Данные клиента в PDF — 29 сентября 2026

  • Миграция ClientProfile добавляет Goal, TrainingSchedule и HealthStatus с пустыми значениями; существующий столбец Notes сохраняется без изменений.
  • 11 тестов прошли; EF Core не обнаружил расхождений модели и миграций. Сборка Docker и применение миграции успешны.
  • На специально созданном клиенте проверены порядок полей, сохранение и загрузка после обновления страницы, экспорт PDF. Тестовые клиент и программа удалены после проверки.
  • Из PDF извлечены все новые значения; таблица содержит четыре строки и два столбца, находится перед неделями и встречается один раз. Проверены альбомные страницы и отсутствие приватной тестовой заметки. Скриншоты и визуальный рендер не выполнялись.

Удаление программы — 29 сентября 2026

  • В истории программ клиента добавлена корзина с подтверждением по названию программы. Удаление ограничено текущим тренером; дочерние недели и тренировки удаляются каскадно.
  • Сборка без предупреждений и ошибок, 11 тестов прошли; Docker-приложение обновлено.
  • В браузере без скриншотов на собственных тестовых данных проверены отмена, подтверждение, обновление счётчика, закрытие формы копирования удалённой программы, сохранение результата после перезагрузки и недоступность удалённой программы по ссылке. Клиент и другая программа сохранились. Тестовые данные удалены после проверки.

Импорт упражнений из таблицы — 29 сентября 2026

  • Сборка без предупреждений и ошибок, 16 тестов прошли. Тесты разбора буфера покрывают кавычки Excel, переносы внутри ячеек, пустые ячейки, CR/LF/CRLF, большие вставки и лимиты; проверена валидация ссылок и номера ошибочной строки.
  • В Docker-приложении без скриншотов проверена вставка 250 строк одним событием буфера обмена, автоматическое расширение таблицы, сохранение после перезагрузки, импорт в новую/существующую группу и без группы.
  • Ошибочная ссылка оставляет данные в модальном окне и не создаёт ни группу, ни упражнения. Проверены лишний столбец, обязательность названия новой группы, ручное исправление ячеек, вставка только в столбец ссылки, добавление/удаление строк, отмена и Escape.
  • Сохранённая ссылка проверена в библиотеке. Собственные тестовые записи удалены после проверки. Настоящее приложение Excel не автоматизировалось: использовалось событие paste с табличным текстом формата Excel.

Очистка поиска после добавления — 29 сентября 2026

  • После успешного добавления сбрасываются текст поиска и активный пункт, список закрывается; фильтр группы сохраняется. Сброс явно запрашивается родителем, поэтому обычный ввод и перерисовка не стирают следующий запрос.
  • Сборка успешна; приложение обновлено в Docker. В браузере без скриншотов проверены добавление кнопкой, двойным кликом и Enter, очистка поиска и выбора, закрытие списка и сохранение следующего введённого запроса. Собственные тестовые данные удалены.

Плашка отмены удаления — 29 сентября 2026

  • Плашка видна только в тренировке, где удалён блок, и исчезает через Planner:UndoDeleteDurationSeconds (по умолчанию 10 секунд). Повторное удаление заменяет предыдущую отмену и перезапускает таймер.
  • Таймер отменяется при восстановлении блока, удалении исходной тренировки/недели, смене программы и закрытии редактора.
  • Сборка успешна, 16 тестов прошли. В браузере без скриншотов на собственных тестовых данных проверены переключение тренировок, восстановление блока, автоматическое исчезновение и отсутствие повторного появления. Тестовые данные удалены; Docker-приложение обновлено.

PDF без названия программы — 29 сентября 2026

  • Название программы удалено из содержимого и метаданных PDF.
  • Сборка успешна, Docker-приложение обновлено. В тестовом экспорте проверено отсутствие названия на всех четырёх страницах и в метаданных, наличие данных клиента. Собственные тестовые записи удалены. Скриншоты не выполнялись.

Отступ после данных клиента в PDF — 29 сентября 2026

  • Добавлены пять пустых строк только между таблицей данных клиента и первой неделей. Настройка: Pdf:ClientDetailsGapLines, переопределение через .env.
  • Сборка и Docker-обновление успешны. Координаты текста тестового PDF подтверждают смещение первой недели вниз при неизменных следующих неделях и количестве страниц. Скриншоты не выполнялись; собственные тестовые записи удалены.

Ширина таблицы и ресурс камеры — 29 сентября 2026

  • Ширина таблицы PDF увеличена с 25,5 до 27,5 см настройками столбцов. Приложенный PNG без изменений включён как EmbeddedResource в Infrastructure; размер камеры 18 pt настраивается через Pdf:CameraSizePoints.
  • Иконка выровнена по центру абзаца и вертикально по центру ячейки. Сборка и Docker-обновление успешны.
  • Из PDF, экспортированного Docker-приложением, извлечена иконка: пиксели совпадают с исходным PNG. По координатам проверены ширина таблицы, границы страницы и центрирование (горизонтальное отклонение 0 pt, вертикальное менее 1 pt).
  • Скриншоты не выполнялись. Собственные тестовые данные удалены после экспорта.

Полные ссылки и центрирование в PDF — 29 сентября 2026

  • Вместо «Открыть видео» выводится полный URL с невидимыми возможностями переноса; адрес гиперссылки остаётся исходным.
  • Все столбцы после «Примечания», включая заголовки и итоговые значения, выровнены по горизонтальному и вертикальному центру.
  • Сборка и Docker-обновление успешны. В тестовом PDF проверены полный длинный URL внутри ячейки, неизменный адрес перехода в аннотациях PDF и центрирование числовых ячеек по координатам (отклонение менее 1 pt). Скриншоты не выполнялись; собственные тестовые данные удалены.

Имя PDF — 30 сентября 2026

  • Имя скачиваемого файла: «Имя клиента — dd.MM.yyyy.pdf», дата создания программы без времени, в том же локальном времени сервера, что и история программ. Недопустимые символы имени файла заменяются подчёркиванием.
  • Сборка и Docker-обновление успешны. Проверен Content-Disposition с кириллическим именем клиента и форматом даты. Собственные тестовые записи удалены, скриншоты не выполнялись.

Список процентов — 14 октября 2026

  • Поле процента заменено компактным списком из девяти значений с ориентиром повторений. Значения вынесены в Planner:IntensityPresets. Сохранённые нестандартные проценты отображаются отдельным пунктом.
  • Локальная сборка и Docker-обновление выполнены. Без скриншотов проверены все девять значений, значение по умолчанию 80, сохранение 85 после перезагрузки и неизменность поля повторений. Собственные тестовые данные удалены.
  • По уточнению пользователя убран title списка (подсказка при наведении). Сервер и его данные не затрагивались, миграций нет.