Commit Graph

727 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
62480db8af - пробел 2026-01-17 16:24:21 +03:00
959642b882 Ретерн 2026-01-17 15:00:10 +03:00
75b33526b2 refactor(uom_views): удалить неиспользуемую аннотацию usage_count 2026-01-17 14:42:15 +03:00
89da5eb4bb xnjj 2026-01-17 14:24:22 +03:00
1a35660ac2 sds 2026-01-17 14:14:44 +03:00
7e15eb5c7a er 2026-01-17 14:08:23 +03:00
7f360c56f4 йй 2026-01-17 13:58:53 +03:00
4caa1ac0f2 ww 2026-01-17 13:34:08 +03:00
96baff47f0 тест 2026-01-17 13:31:36 +03:00
9de3ed624c WOW тест 2026-01-17 13:09:50 +03:00
2f1f0621e6 feat: упростить создание заказов и рефакторинг единиц измерения
- Добавить inline-редактирование цен в списке товаров
- Оптимизировать карточки товаров в POS-терминале
- Рефакторинг моделей единиц измерения
- Миграция unit -> base_unit в SalesUnit
- Улучшить UI форм создания/редактирования товаров

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 03:34:43 +03:00
928b340486 style(pos): улучшить адаптивность сетки товаров
- Изменить брейкпоинт для 5 колонок с 992px на 1100px
- Увеличить ширину правой панели с 4/12 до 5/12 колонок

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 03:11:00 +03:00
18cca326af feat(pos): улучшить адаптивность POS-терминала для мобильных устройств
- col-md-8/4 → col-12 col-md-8/4 для корректного отображения на мобильных
- Кнопки действий: height: 60px → min-height: 44px (минимальный размер для тапа)
- Модальные окна: добавлен modal-fullscreen-sm-down/md-down
- Колонки внутри модалок: добавлен col-12 для мобильной адаптивности
- Увеличена мелкая кнопка отмены скидки: 32px → 40px
- CSS: добавлены медиа-запросы для мобильных устройств
  * min-height: 44px для полей ввода и кнопок
  * font-size: 16px предотвращает зум на iOS
  * Оптимизация отступов в модалках
  * UX улучшения для тач-устройств
  * Плавная прокрутка на iOS
- Исправлено перекрытие товаров корзиной на мобильных (position: absolute → relative)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 19:21:05 +03:00
c8284a6ac5 fix(pos): отключить автофокус на мобильных устройствах
Добавлено определение мобильных устройств через User-Agent и ширину экрана.
Фокус на поле поиска и поле ввода количества теперь устанавливается только
на десктопах, чтобы избежать появления экранной клавиатуры на мобильных.
2026-01-16 19:06:36 +03:00
edad388ea8 feat(orders): добавить WYSIWYG редактор для резюме заказа
Интеграция библиотеки Quill.js для форматирования текста в поле
резюме заказа. Добавлено отображение резюме в списке заказов с
возможностью раскрытия длинного текста. Обновлен вид резюме
в детальной странице заказа для поддержки HTML-разметки.
2026-01-16 18:46:04 +03:00
39e050f087 refactor(user_roles): использовать CustomUser напрямую 2026-01-16 12:57:29 +03:00
14188fbac4 feat(orders): добавить поле резюме заказа
Добавлено текстовое поле `summary` в модель `Order` для хранения краткого
описания заказа на естественном языке.

Обновлена форма `OrderForm` с добавлением виджета textarea, плейсхолдера и
стилей. В шаблоны `order_form.html` и `order_detail.html` добавлены элементы
для ввода и отображения резюме заказа. Создана соответствующая миграция.
2026-01-15 18:39:05 +03:00
ce486f35ca Перенос встроенных стилей из шаблона detail.html в отдельный CSS-файл transformation_detail.css 2026-01-15 15:09:38 +03:00
2ef537fff6 Добавлена возможность выбора анонимного системного клиента в форме заказа
- Убрана фильтрация системного клиента из результатов поиска (api_search_customers)
- Добавлен флаг is_system_customer в результаты API поиска
- Создан новый API endpoint api_get_system_customer для быстрого получения системного клиента
- Добавлена кнопка 'Аноним' для быстрого выбора системного клиента
- Системный клиент выделяется жёлтым цветом и иконкой инкогнито в выпадающем списке
- Улучшена компактность результатов поиска (уменьшен шрифт до 13px)
- Изменены пропорции полей: клиент 9 колонок, статус 3 колонки (было 6:6)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 12:54:56 +03:00
c7e03d258b Обновление админки и представлений для интеграций 2026-01-15 12:20:39 +03:00
fb3074a2ed Обновление конфигурации и зависимостей для AI сервисов 2026-01-15 12:20:25 +03:00
607c5ac8f4 Обновление структуры моделей интеграций 2026-01-15 12:19:44 +03:00
a23d714128 Добавление интеграции OpenRouter AI 2026-01-15 12:19:29 +03:00
401993526b Обновление GLM моделей до GLM-4 2026-01-15 12:16:56 +03:00
caeb3f80bd refactor(db): консолидация миграций и рефакторинг кода
Объединены изменения из промежуточных миграций в начальные миграции для упрощения истории базы данных.
Удалены миграции: accounts/0002, discounts/0002, orders/0003-0004, products/0002-0005, user_roles/0002, system_settings/0001-0002, integrations/0001-0002.
Добавлена автоматическая creation пользователя при установке пароля.
Обновлен UI страницы установки пароля с кастомным стилем.
Добавлен conditional rendering для кнопки синхронизации Recommerce.
Исправлены редиректы с 'index' на '/' в accounts views.
Добавлена проверка request.tenant в navbar и authenticate метод в auth backend.
2026-01-14 16:30:28 +03:00
e7672588c6 refactor: rename primary_category to external_category 2026-01-14 02:59:11 +03:00
1fb280607a feat(integrations): добавить поле primary_category и маппинг категорий для интеграций
Добавлена поддержка выбора основной категории (primary_category) для товаров и наборов, а также новая модель IntegrationCategoryMapping для связи категорий с внешними площадками. Теперь можно указать категорию товара, которая будет использоваться при экспорте на внешние площадки (Recommerce, WooCommerce и др.), с возможностью настройки маппинга категорий для каждого типа интеграции.
2026-01-14 01:53:38 +03:00
7fd361aaf8 docs(products): обновить описание синхронизации флагов
Уточнена инструкция в модалке: акцент на выборе флагов для
синхронизации, а не на изменении значений.
Удалены временные скрипты отладки API.
2026-01-13 22:55:12 +03:00
06a9cc05ca feat(products): добавить пояснение к маркетинговым флагам в модалке синхронизации
Добавлен информационный блок с объяснением, что флаги синхронизируются
с текущими значениями из системы на удалённый сайт.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 15:47:40 +03:00
eff9778539 fix(recommerce): использовать in_stock для определения наличия в API
- Добавить константу RECOMMERCE_INFINITY_COUNT = 999999 в mappers.py
- Изменить логику: product.in_stock определяет count (0 или 999999)
- Добавить test_count.py для тестирования поля count
- Обновить документацию recommerce_api.md с секцией Product Availability

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:35:10 +03:00
36090382c1 feat(products): улучшить интерфейс массовой синхронизации с Recommerce
- Добавить секцию маркетинговых флагов в модалку синхронизации
- Добавить кнопки "Выбрать все" для групп полей
- Улучшить UX отображения списка товаров

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 13:21:08 +03:00
3cffa9b05d fix(recommerce): исправить имена полей маркетинговых флагов для API
- is_new → new (API ожидает 'new', не 'is_new')
- is_popular → popular (API ожидает 'popular', не 'is_popular')
- добавить тестовый скрипт test_is_new.py для проверки флагов

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 13:06:39 +03:00
2aa3de7bfa feat(products): добавить интерфейс маркетинговых флагов
Добавлены поля is_new, is_popular, is_special в форму продукта.
Настроено отображение полей в виде переключателей (switch).
Добавлено отображение бейджей флагов в списке товаров
и на странице детализации продукта.
2026-01-13 10:04:48 +03:00
ec9fd1c78b feat(products): маркетинговые флаги is_new, is_popular, is_special
- Добавлены поля в BaseProductEntity (наследуются в Product, ProductKit)
- Исправлен формат флагов в Recommerce mappers (1/0 вместо true/false)
- Добавлены чекбоксы в админку Product и ProductKit
- special = is_special OR has_discount (ручное + автоматическое)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 00:27:04 +03:00
52422ee8df feat(recommerce): флаг special для акционных товаров
- Исправлен формат флага: special=1/0 вместо is_special="true"/"false"
- Добавлен тестовый скрипт test_is_special.py для отладки API

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 00:04:35 +03:00
74d7d1186a fix(recommerce): сброс зачеркнутой цены через price_old=0
- Передаем price_old[amount]="0" для сброса старой цены
- Добавлены флаги is_new и is_popular в маппер
- Добавлен debug логгер для отладки типов данных

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 23:26:29 +03:00
707b45b16d feat: добавлена интеграция синхронизации с Recommerce 2026-01-12 21:45:31 +03:00
a5ab216934 feat(integrations): добавлена полная интеграция с Recommerce
Реализован клиент для работы с API Recommerce, включая:
- Клиент с методами для работы с товарами и заказами
- Сервисный слой для высокоуровневых операций
- Мапперы данных между форматами
- Обработку исключений

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 17:56:53 +03:00
9fceab9de1 feat(integrations): реализованы методы работы с API Recommerce
Добавлены методы для управления категориями и товарами (CRUD), а также
получение списка заказов с поддержкой пагинации и фильтрации.
2026-01-12 03:51:08 +03:00
b1b56fbb2e feat(integrations): добавлена проверка соединения для Recommerce
- Добавлен endpoint /test/<integration_id>/ для тестирования соединений
- RecommerceService упрощён под реальное API (x-auth-token + store_url)
- Кнопка "Проверить подключение" в UI с обработкой статусов
- Миграция для удаления IntegrationConfig и обновления полей

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 00:57:35 +03:00
37394121e1 feat(integrations): архитектура включения/выключения интеграций
- Удалена лишняя модель IntegrationConfig из system_settings
- Singleton-паттерн: одна запись на интеграцию с is_active тумблером
- Добавлено шифрование токенов (EncryptedCharField с Fernet AES-128)
- UI: тумблеры слева, форма настроек справа
- API endpoints: toggle, settings, form_data
- Модель Recommerce: store_url + api_token (x-auth-token)
- Модель WooCommerce: store_url + consumer_key/secret

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 00:29:04 +03:00
4629369823 feat(integrations): добавлена заготовка интеграции Recommerce
- Создана структура marketplaces/ для маркетплейсов
- Модели: MarketplaceIntegration, WooCommerceIntegration, RecommerceIntegration
- Сервисы: MarketplaceService, WooCommerceService, RecommerceService
- RecommerceService содержит методы для работы с API:
  - test_connection(), sync(), fetch_products()
  - push_product(), update_stock(), update_price()
- IntegrationConfig обновлён с новой интеграцией

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 23:19:42 +03:00
4450e34497 feat(integrations): добавлен фундамент для интеграций с внешними сервисами
- Создано приложение integrations с базовой архитектурой
- BaseIntegration (абстрактная модель) для всех интеграций
- BaseIntegrationService (абстрактный сервисный класс)
- IntegrationConfig модель для тумблеров в system_settings
- Добавлена вкладка "Интеграции" в системные настройки
- Заготовка UI с тумблерами для включения интеграций

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 23:02:42 +03:00
b562eabcaf refactor(admin): удален избыточный admin_access_middleware
- Удален TenantAdminAccessMiddleware (избыточен — Django Admin уже проверяет is_staff)
- CustomUser.create_superuser теперь устанавливает is_staff=False (нет доступа к /admin/)
- PlatformAdmin с is_staff=True сохраняет доступ к админке
- Обновлен комментарий в onboarding.py

Доступ к /admin/ теперь контролируется стандартным механизмом Django Admin
через has_permission() + существующие authentication backends.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 22:00:14 +03:00
a1e81b97bf Update Celery configuration and add customer tasks 2026-01-11 20:59:35 +03:00
2369cfc997 feat(ui): улучшения UX для промокодов и форм заказа
- Добавлена кнопка копирования промокода в клипборд с визуальной обратной связью
- Улучшено отображение ошибок валидации в форме заказа (is-invalid класс)
- Добавлен флаг _draftFieldsFilled для корректной обработки пустого черновика
- Убран value="1" для quantity чтобы избежать конфликтов с draft-data

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 19:07:19 +03:00
ed4d509a4e Оптимизация N+1 запросов к ролям пользователей через select_related в middleware 2026-01-11 14:19:28 +03:00