Commit Graph

12 Commits

Author SHA1 Message Date
cc0b01a922 feat: Add Docker entrypoint script. 2026-01-17 17:02:02 +03:00
9ab4c45448 feat: Add Docker entrypoint script. 2026-01-17 17:00:22 +03:00
c8205cc6f3 feat: Add Docker support with Dockerfile and entrypoint script. 2026-01-17 16:54:26 +03:00
256606f2a0 chore: Реорганизация проекта - очистка и структурирование файлов
- Добавлена папка ДОКУМЕНТАЦИЯ с централизованным хранением всех руководств
- Перенесены утилитарные скрипты в myproject/scripts/
- Удалены временные файлы (current_settings.txt, old_settings.txt, nul)
- Добавлены celerybeat-schedule файлы в .gitignore
- Обновлен .env.example (удалены устаревшие настройки PLATFORM_SUPPORT)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-09 05:50:42 +03:00
0bddbc08c4 feat: Добавлен флаг is_superuser для platform_support и сохранение credentials в файл
- Platform support пользователь теперь создается с is_superuser=True для полного доступа
- Добавлено сохранение credentials (домен:логин:пароль) в support_credentials.txt
- Добавлен support_credentials.txt в .gitignore для безопасности
- Обновлена документация развертывания на NAS

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-09 00:02:10 +03:00
4f57d594c9 Обновления в docker: entrypoint.sh и инструкции по развертыванию 2026-01-08 22:16:39 +03:00
bead5cb76c feat: Add Docker entrypoint script and core project settings. 2026-01-08 02:49:59 +03:00
f5130a79fd Обновлена документация: добавлены предупреждения о правах доступа
- ИНСТРУКЦИЯ_ОБНОВЛЕНИЕ.md:
  * Усилено предупреждение о необходимости настройки прав после КАЖДОГО обновления
  * Добавлены признаки проблемы: crash loop контейнера, 404 на тенантах
  * Подчёркнута критичность выполнения chown/chmod

- DEPLOY_NAS.md:
  * Добавлены команды chown/chmod в раздел 'Обновление приложения'
  * Новый раздел 'Проблема 7': новый тенант возвращает 404
  * Пошаговая диагностика: проверка домена в БД и логов контейнера
  * Объяснение причины: контейнер падает из-за Permission denied

Теперь при проблемах после обновления кода пользователь сразу увидит,
что нужно проверить права доступа на файлы проекта.
2026-01-07 20:50:35 +03:00
1c1a95df76 Добавлена кастомная страница ошибки CSRF и увеличено время сессии
- Создан шаблон templates/403_csrf.html с дружелюбным интерфейсом для пользователей
  * Красивый дизайн с градиентом и анимациями
  * Понятное объяснение причин ошибки (истёкшая сессия, кнопка Назад)
  * Кнопка обновления страницы для быстрого решения
  * Адаптивная вёрстка для мобильных устройств

- Увеличено время жизни сессии в settings.py:
  * SESSION_COOKIE_AGE = 28 дней (было по умолчанию 2 недели)
  * SESSION_SAVE_EVERY_REQUEST = True (продлевать при активности)
  * CSRF_COOKIE_AGE = 1 год (чтобы токен не устаревал быстро)
  * Добавлены флаги безопасности SECURE для прода (HTTPS-only)

Теперь на проде пользователи не увидят технический текст ошибки CSRF,
а получат понятное сообщение с инструкцией по решению проблемы.
2026-01-07 20:40:21 +03:00
efd0a2b66e Обновлена документация деплоя и docker-compose.yml
- Убран блок environment из сервиса db в docker-compose.yml (переменные читаются напрямую из .env.docker)
- Обновлён DEPLOY_NAS.md:
  * Добавлен полный пример .env.docker с CSRF_TRUSTED_ORIGINS и DOMAIN_NAME
  * Добавлено предупреждение о необходимости совпадения DB_PASSWORD и POSTGRES_PASSWORD
  * Расширен раздел про права доступа (chown для всей папки проекта)
  * Добавлены решения для ошибок password authentication failed и Permission denied
- Обновлена ИНСТРУКЦИЯ_ОБНОВЛЕНИЕ.md:
  * Исправлены пути (команды выполняются из /Volume1/DockerYAML/mix)
  * Добавлен раздел Возможные проблемы с решениями
  * Уточнены команды для проверки переменных окружения в контейнерах
2026-01-07 20:32:09 +03:00
0f19542ac9 Добавлен асинхронный импорт товаров с параллельной загрузкой фото + исправлен баг со счётчиком SKU
- Реализован импорт Product из CSV/XLSX через Celery с прогресс-баром
- Параллельная загрузка фото товаров с внешних URL (масштабируемость до 500+ товаров)
- Добавлена модель ProductImportJob для отслеживания статуса импорта
- Создан таск download_product_photo_async для загрузки фото в фоне
- Интеграция с существующим ImageProcessor (синхронная обработка через use_async=False)
- Добавлены view и template для импорта с real-time обновлением через AJAX

FIX: Исправлен баг со счётчиком SKU - инкремент только после успешного сохранения
- Добавлен SKUCounter.peek_next_value() - возвращает следующий номер БЕЗ инкремента
- Добавлен SKUCounter.increment_counter() - инкрементирует счётчик
- generate_product_sku() использует peek_next_value() вместо get_next_value()
- Добавлен post_save сигнал increment_sku_counter_after_save() для инкремента после создания
- Предотвращает пропуски номеров при ошибках валидации (например cost_price NULL)

FIX: Исправлена ошибка с is_main в ProductPhoto
- ProductPhoto не имеет поля is_main, используется только order
- Первое фото (order=0) автоматически считается главным
- Удалён параметр is_main из download_product_photo_async и _collect_photo_tasks

Изменены файлы:
- products/models/base.py - методы для управления счётчиком SKU
- products/models/import_job.py - модель для отслеживания импорта
- products/services/import_export.py - сервис импорта с поддержкой Celery
- products/tasks.py - таски для асинхронного импорта и загрузки фото
- products/signals.py - сигнал для инкремента счётчика после сохранения
- products/utils/sku_generator.py - использование peek_next_value()
- products/views/product_import_views.py - view для импорта
- products/templates/products/product_import*.html - UI для импорта
- docker/entrypoint.sh - настройка Celery worker (concurrency=4)
- requirements.txt - добавлен requests для загрузки фото
2026-01-06 07:10:12 +03:00
bcda94f09a Перемещена папка docker в myproject и защита секретов
- Все docker-файлы теперь в myproject/docker/
- Добавлен docker/.env.docker в gitignore для защиты секретов
- Сохранена обратная совместимость с существующими настройками
- Структура проекта стала более организованной
2026-01-04 00:31:02 +03:00