- Детальное планирование:
Функциональные требования: Запишите все функциональные требования к вашему приложению. Что именно оно должно уметь делать? Нефункциональные требования: Определите нефункциональные требования: Производительность: Как быстро должно работать приложение? Масштабируемость: Сколько данных и пользователей оно должно обрабатывать? Надежность: Как часто приложение может выходить из строя? Безопасность: Как защитить данные пользователей и предотвратить несанкционированный доступ? Удобство использования: Насколько удобным должно быть приложение для пользователей? Архитектура: Зафиксируйте, как будет организовано ваше приложение. Какие компоненты будут использоваться? Как они будут взаимодействовать друг с другом? Рассмотрите различные варианты архитектур (монолитное приложение, микросервисы). Технологический стек: Убедитесь, что вы выбрали подходящие технологии (Flask, SQLAlchemy, PostgreSQL, MicroPython, ESP8266). Убедитесь, что вы знакомы с ними. Схема базы данных: Убедитесь, что ваша схема базы данных хорошо спроектирована и соответствует требованиям.
- Дизайн API:
Детальное описание эндпоинтов: Детально опишите все эндпоинты вашего API, включая: HTTP-методы (GET, POST, PUT, DELETE). Параметры запросов (путь, заголовок, тело). Форматы данных (JSON). Коды ответов HTTP. Схемы данных (для запросов и ответов). Документация API: Создайте подробную документацию для вашего API (Swagger/OpenAPI).
- Выбор стратегии тестирования:
Уровни тестирования: Определите, какие уровни тестирования вы будете использовать: Юнит-тестирование: Тестирование отдельных модулей или функций. Интеграционное тестирование: Тестирование взаимодействия между модулями. Функциональное тестирование: Тестирование всей системы. Автоматизация: Планируете ли вы автоматизировать тестирование? Если да, то какие фреймворки вы будете использовать? (pytest или unittest) Покрытие кода: Насколько полным должно быть покрытие кода тестами?
- Подготовка тестового окружения:
Тестовая база данных: Создайте отдельную базу данных для тестирования, чтобы избежать влияния на рабочее окружение. Тестовые данные: Подготовьте тестовые данные, которые будут использоваться для тестирования. Моки: Планируете ли использовать моки для имитации внешних зависимостей (например, ESP8266)?
- Выбор системы контроля версий:
Git: Используйте Git для контроля версий вашего кода. Репозиторий: Создайте репозиторий (например, на GitHub или GitLab).
- Планирование развертывания:
Сервер: Где вы будете развертывать ваше приложение (локальный сервер, облачный сервер)? Процесс развертывания: Как вы будете развертывать ваше приложение? Автоматизация с помощью CI/CD? Docker?
- Обработка ошибок и логгирование:
Обработка исключений: В вашем коде должна быть качественная обработка исключений. Логгирование: Решите, как вы будете логировать события в вашем приложении. Это поможет вам отлаживать ошибки.
- Мониторинг:
Инструменты мониторинга: Планируете ли вы использовать инструменты для мониторинга производительности и доступности вашего приложения
- Настройка окружения (Flask): Установка, структура проекта, настройка Flask, SQLAlchemy, Flask-Migrate, Flask-Login.
---> SKIPPED: 2. Тестирование: Проверка правильности настроек, подключения к БД. Модели и миграции (Flask):
-
Создание моделей, настройка связей, создание миграций. Тестирование: Тестирование моделей (создание, чтение, обновление, удаление записей). Базовая аутентификация (Flask):
-
Создание модели User, маршруты авторизации и регистрации. Тестирование: Тестирование регистрации, авторизации, проверки ролей. Административная панель (Flask):
-
Создание блюпринта admin.py, проверка прав. Тестирование: Тестирование работы административных маршрутов. Личный кабинет пользователя (Flask):
-
Создание блюпринта user.py, маршруты просмотра и управления. Тестирование: Тестирование маршрутов личного кабинета. Сервисы (Flask):
-
Создание сервисных классов. Тестирование: Тестирование логики сервисных классов.
-
Проектирование и реализация API (Flask): Определение требований, создание блюпринта api.py, реализация эндпоинтов. Тестирование: Unit-тестирование: Тестирование каждого эндпоинта отдельно. Интеграционное тестирование: Тестирование взаимодействия между эндпоинтами.
-
Разработка фронтенда (Flask): Выбор подхода: Использовать Flask + Jinja2 + Bootstrap + HTMX.
- Создание шаблонов: Создание шаблонов для административной панели. Создание шаблонов для личного кабинета пользователя. Создание шаблонов для форм (регистрация, авторизация).
- Интеграция с API: Получение данных с API и их отображение на страницах. Отправка запросов на API для управления гаджетами.
- Интеграция с HTMX: Добавить динамичности на страницы с помощью HTMX запросов. Тестирование: Проверка работы фронтенда, корректное отображения данных, и взаимодействия с API.
-
Работа с ESP8266 (MicroPython): Настройка Wi-Fi, пины для датчика, библиотеки. Тестирование: Unit-тестирование: Тестирование драйверов для DHT22, SG90. Функциональное тестирование: Проверка связи с Flask и работы с датчиком. Интеграция: Проверка взаимодействия всех компонентов. Тестирование: Интеграционное тестирование всех модулей.
-
Автоматизация документирования: Использовать docstrings, Sphinx, Swagger. Дополнительные функции:
-
Логирование, другие типы датчиков, графическое отображение данных. Ключевые моменты (с тестированием):
Тестирование на каждом этапе: Включайте тестирование в процесс разработки, не оставляйте его на потом. Разнообразные тесты: Пишите тесты для разных случаев (положительные, отрицательные). Автоматизация: Автоматизируйте тесты, чтобы можно было запускать их после каждого изменения кода.
- Документирование реализуем с помощью PDOC3:
- для генерации доркументации после установки библиотеки запсутить: pdoc3 lab-main/lab-app/ --html --output-dir docs/pdoc
- Утсановка PostgreSQL sudo apt install postgresql postgresql-contrib