1. Разработать не маркетинговый сайт, а внутреннюю систему управления рыбным магазином, ориентированную на реальные бизнес-процессы: учёт товаров, остатков и заказов.
2. Реализовать систему ролей с чётким разделением прав доступа: администратор управляет товарами и заказами, клиент только просматривает каталог и оформляет заказ без регистрации.
3. Спроектировать модели данных таким образом, чтобы финансовая и складская информация оставалась корректной независимо от изменений цен и статусов заказов.
4. Реализовать критичную бизнес-логику: запрет заказа сверх складского остатка, автоматическое списание веса при создании заказа и его возврат при отмене.
5. Исключить действия, нарушающие целостность данных, в том числе удаление товаров, участвующих в активных заказах.
6. Реализовать административный интерфейс для управления системой без необходимости прямого доступа к базе данных.
7. Обеспечить проверяемость и надёжность логики приложения за счёт автоматизированных тестов.
8. Создать проект с чистой архитектурой и понятной структурой, пригодный для дальнейшего расширения и деплоя.
Для реализации проекта был выбран фреймворк Django, так как он позволяет быстро выстроить серверную архитектуру, содержит встроенную систему аутентификации и административную панель, а также хорошо подходит для проектов без фронтенд-фреймворков. Это позволило сосредоточиться на бизнес-логике и данных, а не на вспомогательных технологиях.
Модели Product, Order и OrderItem были спроектированы с учётом реальных сценариев работы магазина. Цена товара фиксируется в момент заказа через поле price_at_order_time, что гарантирует корректность расчётов даже при последующем изменении цен. Остатки хранятся в весе, что отражает специфику торговли рыбой.
Бизнес-логика была вынесена на уровень моделей и сервисных методов: при создании заказа система проверяет доступный остаток, списывает вес товара и изменяет его доступность. При отмене заказа вес автоматически возвращается на склад. Это исключает ручное вмешательство и снижает риск ошибок.
Для защиты целостности данных были добавлены ограничения на удаление товаров, которые присутствуют в активных заказах. Таким образом, система предотвращает появление «битых» заказов и несогласованных данных.
Административная часть была реализована через Django Admin с настройкой отображения списков, inline-элементов и фильтров, что позволило администратору управлять магазином без технических знаний и прямого доступа к базе.
Ключевые сценарии работы системы были покрыты тестами с использованием pytest: проверка невозможности заказа сверх остатка, корректного списания и возврата веса, а также контроль доступа к административному интерфейсу. Это обеспечило устойчивость проекта к изменениям и упростило дальнейшую разработку.
В результате был получен законченный backend-проект, реализующий реальные бизнес-процессы магазина и демонстрирующий умение проектировать модели, писать бизнес-логику и обеспечивать её надёжность.
В результате работы был получен полностью функционирующий backend-проект — система управления рыбным магазином, готовая к использованию в реальной операционной деятельности. Приложение решает ключевые задачи малого торгового бизнеса: учёт товаров по весу, контроль остатков, обработку заказов и фиксацию финансовых данных без искажений. Система стабильно работает, масштабируема и не зависит от внешних сервисов или сложного фронтенда.
На практике результат применяется как внутренний инструмент управления магазином. Администратор использует систему для добавления и обновления товаров, изменения цен, контроля складских остатков и обработки заказов в одном интерфейсе. Это снижает количество ручных операций, уменьшает вероятность ошибок при расчётах и позволяет в любой момент получить актуальную картину по складу и продажам.
Реализованная бизнес-логика обеспечивает автоматический контроль критичных процессов: система не позволяет оформить заказ на объём, превышающий доступный остаток, самостоятельно списывает вес при подтверждении заказа и корректно возвращает его при отмене. За счёт этого исключается расхождение между фактическим и учётным состоянием склада, что особенно важно для торговли продуктами на развес.
Проект также применяется как основа для дальнейшего расширения. Архитектура позволяет без переработки логики подключить PostgreSQL, Docker, систему ролей с расширенными правами, отчётность или внешний пользовательский интерфейс. Это делает систему не одноразовым учебным проектом, а заделом под реальное развитие.
Дополнительно результат используется как демонстрационный кейс в портфолио. Проект показывает умение работать с Django не на уровне шаблонного CRUD, а с пониманием предметной области, проектированием моделей, реализацией бизнес-ограничений и тестированием логики. На практике это может быть использовано при устройстве на стажировку или junior-позицию backend-разработчика, где важна способность решать прикладные задачи, а не просто писать код.
Таким образом, итогом работы стал не абстрактный учебный сайт, а практический инструмент управления магазином и одновременно полноценный профессиональный кейс, применимый как в реальном бизнесе, так и в карьерном развитии.