Files

138 lines
24 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Проверка первой версии — 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 списка (подсказка при наведении). Сервер и его данные не затрагивались, миграций нет.
## Непрерывная страница PDF — 14 октября 2026
- Все недели экспортируются на одну страницу с высотой по содержимому, без уменьшения текста. Цветные заголовки, таблица клиента и отступ перед первой неделей сохранены.
- Сборка успешна, 16 тестов прошли, локальное Docker-приложение обновлено.
- Проверены два экспорта: короткий с четырьмя пустыми неделями и длинный с семью неделями. Оба содержат одну страницу шириной 29,7 см; высота соответственно 493 и 2019 pt. Текст находится внутри границ страницы, после последней таблицы остаётся обычный нижний отступ.
- В длинном экспорте сохранены все 36 гиперссылок «Видео» с исходными адресами и 12 изображений камеры. Проверка выполнена по структуре, тексту и координатам PDF без скриншотов. Собственные тестовые данные удалены.
- Сервер не затрагивался; изменений БД и миграций нет.
## Исправление зависимости PDF — 14 октября 2026
- Для транзитивной зависимости PDFsharp добавлена явная ссылка System.Security.Cryptography.Pkcs 8.0.2 вместо 8.0.1. Это исправленная версия для GHSA-2fmv-rv2c-59x7 и GHSA-846f-f764-76mx; аудит NuGet не отключён.
- Выполнены восстановление пакетов без кеша, сборка без предупреждений, 16 тестов и локальная Docker-сборка. Аудит прямых и транзитивных пакетов Web не обнаружил известных уязвимостей в текущем источнике NuGet.
- После обновления зависимости экспорт из локального Docker снова проверен: одна страница, семь недель, 36 ссылок «Видео», 12 камер; текст внутри страницы. Скриншоты не выполнялись, собственные тестовые записи удалены.