7.6 KiB
7.6 KiB
Правила разработки
Обязательные требования пользователя
- Использовать 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, если соответствующая проверка не выполнена.