Files

7.6 KiB
Raw Permalink Blame History

Правила разработки

Обязательные требования пользователя

  • Использовать C#, .NET 10 и PostgreSQL. Приложение и БД запускаются в отдельных Docker-контейнерах в общей сети.
  • Писать небольшие, читаемые классы с одной ясной ответственностью. Не создавать сложные объёмные классы и абстракции без практической необходимости.
  • Не использовать record и record struct. Модели и DTO — обычные классы со свойствами get; set;.
  • Использовать привычные типы данных. Не вводить экзотические типы и конструкции без обсуждения.
  • Соблюдать инверсию зависимостей. Domain не зависит от инфраструктуры и UI; Application не зависит от Infrastructure или Web.
  • Не зашивать настраиваемые значения в код. Значения по умолчанию и параметры поведения выносить в appsettings.json, секреты — в переменные окружения. Поддерживать переопределение через .env и Docker Compose.
  • Не хранить пароли, строки подключения с секретами или реальные клиентские данные в репозитории.
  • При неясности в архитектуре или устройстве конкретного класса остановиться и задать пользователю вопрос до реализации спорного решения.
  • Не добавлять функциональность вне согласованного объёма.
  • Не проверять результат скриншотами, пока пользователь явно не попросит об этом. Для проверки UI использовать состояние страницы и функциональные проверки без снимков.

Согласованный объём первой версии

  • Рабочее место одного тренера с возможностью расширения на нескольких.
  • Вход по логину и паролю, без регистрации и клиентского кабинета.
  • Клиенты и библиотека упражнений; добавление упражнений также вручную.
  • Группы содержат независимые упражнения. Удаление группы удаляет её упражнения из библиотеки; тренировки сохраняют свои снимки. Корзина внутри группы удаляет упражнение полностью из библиотеки.
  • Drag and drop переносит упражнение в другую группу или в «Без группы». Добавление упражнения из другой группы создаёт независимую копию.
  • В конфигураторе — адаптивный выпадающий список с текстовым поиском и фильтром по группе. Двойной клик сразу применяет выбранное упражнение.
  • Персональная месячная программа: недели, тренировки, упорядоченные блоки.
  • Упражнение: общие количество подходов, текстовые повторения и вес; разминка и примечание текстом; процент от максимума вручную; ссылка на видео и флаг камеры.
  • Сеты удалены из функционала. Один блок содержит ровно одно упражнение.
  • Отдых в минутах (дробные значения допустимы). Общий отдых: сумма количества подходов × отдых, включая паузу после последнего подхода. Время тренировки вводится вручную.
  • Перестановка блоков, тренировок и недель с автоматической перенумерацией.
  • История программ клиента и независимое копирование для следующего месяца.
  • Экспорт PDF: альбомная таблица, цветные заголовки недель и тренировок, кликабельные ссылки. Видео не загружаем и не принимаем.
  • Приоритет — компьютер. Полноценная адаптация под iPhone 15 — следующий этап.

Работа с проектом

  • С 13 октября 2026 года сервер содержит рабочие данные. Не выполнять серверные операции без согласованной задачи; прежнее разрешение на первоначальное развёртывание не разрешает последующие обновления.
  • При обновлении сохранять серверные .env, app.env и существующие учётные записи без изменений, если пользователь отдельно не поручил их изменить.
  • Резервные копии рабочей БД хранить вне сервера приложения и вне Git. Для текущего окружения использовать ~/Documents/TrainingPlannerBackups; временный серверный дамп удалять только после успешного переноса и сверки контрольных сумм.
  • Миграции должны сохранять текущие данные. Перед применением на сервере проверить SQL, создать резервную копию и проверить её восстановление и миграцию в отдельной тестовой БД. Не запускать тесты на рабочей базе.
  • Не пересоздавать рабочую БД, не удалять её тома и не заменять её локальной базой. Потенциально разрушающие изменения требуют отдельного согласования и плана переноса данных.
  • Учитывать автоматическое применение миграций при запуске приложения: перезапуск новой версии также может изменить БД. При обнаружении проблемы на сервере остановиться и спросить пользователя до исправления.
  • После изменений выполнять сборку и проверки, соответствующие изменению.
  • Поддерживать README и .env.example в соответствии с реальной конфигурацией.
  • Не заявлять о проверке Docker, БД, PDF или UI, если соответствующая проверка не выполнена.