Маркетплейс с AI-помощником: отдельная регистрация покупателей и продавцов, подтверждение email, оплата (YooKassa / mock), админ-панель.
cd store_with_AI/backend
cp .env.example .env
# Добавьте OPENROUTER_API_KEY в .env
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runservercd store_with_AI/frontend
npm i
npm run dev- Frontend: http://127.0.0.1:5173
- API / Swagger: http://127.0.0.1:8000/api/schema/swagger-ui/
- Django Admin: http://127.0.0.1:8000/admin/
| Роль | Регистрация | Возможности |
|---|---|---|
| Покупатель | /auth/buyer |
Каталог, корзина, AI, заказы |
| Продавец | /auth/seller |
Публикация товаров, входящие заказы, AI-аналитика |
| Админ | createsuperuser |
/admin в SPA + Django Admin |
В dev письма выводятся в консоль backend (EMAIL_BACKEND=console).
Для production (Yandex SMTP) в .env:
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.yandex.ru
EMAIL_PORT=587
EMAIL_HOST_USER=your@yandex.ru
EMAIL_HOST_PASSWORD=app-password
EMAIL_USE_TLS=1
FRONTEND_URL=https://your-domain.ru
Без ключей YooKassa заказы автоматически помечаются оплаченными (mock-режим для разработки).
Для production:
YOOKASSA_SHOP_ID=...
YOOKASSA_SECRET_KEY=...
Webhook: POST /api/products/payments/webhook/
- Создайте Container Registry, получите
REGISTRY_ID - Настройте Managed Kubernetes
- Скопируйте секреты:
cp k8s/secret.example.yaml k8s/secret.yamlи заполните - Обновите
FRONTEND_URLвk8s/configmap.yaml - Замените
<REGISTRY_ID>вk8s/backend.yamlиk8s/frontend.yaml
export REGISTRY_ID=crpXXXXXXXX
chmod +x deploy.sh
./deploy.shПосле деплоя:
kubectl exec -it deploy/backend -n store-ai -- python manage.py createsuperuser
kubectl get svc frontend -n store-aiПолучите ключ на https://openrouter.ai и добавьте в .env:
OPENROUTER_API_KEY=sk-or-v1-...
OPENROUTER_MODEL=openrouter/free
Без ключа AI работает в fallback-режиме (базовые рекомендации по каталогу).
Файлы для начального заполнения базы данных
Создание фикстур и определенной products.category
python manage.py dumpdata products.category --indent 2 > products/fixtures/categories.json
Загрузка данных из фикстур
python manage.py loaddata products/fixtures/categories.json
python manage.py loaddata products/fixtures/products.json
python manage.py shell -c "from products.models import Product; Product.objects.all().delete()"