38 lines
5.5 KiB
Markdown
38 lines
5.5 KiB
Markdown
# Правила разработки
|
|
|
|
## Обязательные требования пользователя
|
|
|
|
- Использовать 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 — следующий этап.
|
|
|
|
## Работа с проектом
|
|
|
|
- После изменений выполнять сборку и проверки, соответствующие изменению.
|
|
- Поддерживать README и `.env.example` в соответствии с реальной конфигурацией.
|
|
- Не заявлять о проверке Docker, БД, PDF или UI, если соответствующая проверка не выполнена.
|