44 lines
7.6 KiB
Markdown
44 lines
7.6 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 — следующий этап.
|
|
|
|
## Работа с проектом
|
|
|
|
- С 13 октября 2026 года сервер содержит рабочие данные. Не выполнять серверные операции без согласованной задачи; прежнее разрешение на первоначальное развёртывание не разрешает последующие обновления.
|
|
- При обновлении сохранять серверные `.env`, `app.env` и существующие учётные записи без изменений, если пользователь отдельно не поручил их изменить.
|
|
- Резервные копии рабочей БД хранить вне сервера приложения и вне Git. Для текущего окружения использовать `~/Documents/TrainingPlannerBackups`; временный серверный дамп удалять только после успешного переноса и сверки контрольных сумм.
|
|
- Миграции должны сохранять текущие данные. Перед применением на сервере проверить SQL, создать резервную копию и проверить её восстановление и миграцию в отдельной тестовой БД. Не запускать тесты на рабочей базе.
|
|
- Не пересоздавать рабочую БД, не удалять её тома и не заменять её локальной базой. Потенциально разрушающие изменения требуют отдельного согласования и плана переноса данных.
|
|
- Учитывать автоматическое применение миграций при запуске приложения: перезапуск новой версии также может изменить БД. При обнаружении проблемы на сервере остановиться и спросить пользователя до исправления.
|
|
- После изменений выполнять сборку и проверки, соответствующие изменению.
|
|
- Поддерживать README и `.env.example` в соответствии с реальной конфигурацией.
|
|
- Не заявлять о проверке Docker, БД, PDF или UI, если соответствующая проверка не выполнена.
|