]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/log
erp24_rep/yii-erp24/.git
28 hours agofix(ERP-372): синхронизировать фильтры getSalesCountSum с getSalesSum fix_filippov_ERP-372_avg_check_dashboard origin/fix_filippov_ERP-372_avg_check_dashboard
Aleksey Filippov [Thu, 30 Apr 2026 08:04:00 +0000 (11:04 +0300)]
fix(ERP-372): синхронизировать фильтры getSalesCountSum с getSalesSum

На дашборде /dashboard/sales для магазинов с большой долей доставки
(например, 07 Аэродромная 28) средний чек расходился с суммой продаж:
avg = sum_count_query / cnt_count_query, при этом колонка «сумма продаж»
показывала результат другого запроса (getSalesSum) с более узким
фильтром.

Привожу getSalesCountSum к тем же условиям:
- LEFT JOIN sales sc ON sc.id = s.sales_check
- sc.order_id IS NULL OR IN ('','0')   — отбрасываем строки, привязанные
  через sales_check к доставочной продаже;
- s.marketplace_order_id IS NULL OR =''  — отбрасываем продажи маркетплейсов.

После фикса avg = sum / cnt совпадает с тем, что выводится в колонке
«сумма продаж».

Тесты (9/9 GREEN): unit на структуру SQL и биндинг параметров +
интеграционные на реальной БД (insert/rollback в транзакции),
проверяющие исключение маркетплейс- и доставочно-связанных продаж.

29 hours agotest(ERP-372): добавить тесты для getSalesCountSum
Aleksey Filippov [Thu, 30 Apr 2026 07:42:41 +0000 (10:42 +0300)]
test(ERP-372): добавить тесты для getSalesCountSum

Unit-тесты на SQL-структуру, биндинг параметров, payType-ветку
и пустой результат. Интеграционный тест на реальной БД проверяет,
что метод исключает маркетплейс-продажи и записи, связанные через
sales_check с доставкой. На текущем (нефиксенном) коде воспроизводят
баг — RED-состояние перед применением правки.

40 hours agoMerge branch 'feature_filippov_task22_widen_sync_window_to_4months' into 'develop' origin/develop
Aleksey Filippov [Wed, 29 Apr 2026 20:40:10 +0000 (20:40 +0000)]
Merge branch 'feature_filippov_task22_widen_sync_window_to_4months' into 'develop'

fix(task_22): расширить окно выборки админов с 1 до 4 месяцев

See merge request gitlab-instance/yii-erp24!1161

40 hours agofix(task_22): расширить окно выборки админов с 1 до 4 месяцев origin/feature_filippov_task22_widen_sync_window_to_4months
Aleksey Filippov [Wed, 29 Apr 2026 20:29:06 +0000 (23:29 +0300)]
fix(task_22): расширить окно выборки админов с 1 до 4 месяцев

Сотрудники с пустым guid выпадали из синхронизации с 1С после месяца —
расширяем окно date_add до 4 месяцев. Добавлена документация по каналу
ERP→1С create_employee (pull через API2 DataController::actionRequest).

9 days agoMerge branch 'feature_fomichev_ERP-300J_suppliers_dict' into 'develop' develop
Aleksey Filippov [Wed, 22 Apr 2026 09:35:40 +0000 (09:35 +0000)]
Merge branch 'feature_fomichev_ERP-300J_suppliers_dict' into 'develop'

feat(ERP-300): справочник закупщика

See merge request gitlab-instance/yii-erp24!1159

9 days agofeat: добавить группу 82 (менеджер контроля качества) в RBAC ERP-300 feature_fomichev_ERP-300J_suppliers_dict origin/feature_fomichev_ERP-300J_suppliers_dict
fomichev [Wed, 22 Apr 2026 09:04:29 +0000 (12:04 +0300)]
feat: добавить группу 82 (менеджер контроля качества) в RBAC ERP-300

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 days agofix: подсказка кнопки экспорта — .xlsx → .csv
fomichev [Wed, 22 Apr 2026 08:40:24 +0000 (11:40 +0300)]
fix: подсказка кнопки экспорта — .xlsx → .csv

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 days agofix: экспорт — убрать sendFile(), отдавать CSV через response->content
fomichev [Wed, 22 Apr 2026 08:34:02 +0000 (11:34 +0300)]
fix: экспорт — убрать sendFile(), отдавать CSV через response->content

sendFile() конфликтовал с nginx на сервере. Теперь CSV генерируется
в php://temp и отдаётся напрямую через FORMAT_RAW без файла на диске.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 days agofix: экспорт — один JOIN-запрос со скалярами вместо AR + eager loading
fomichev [Wed, 22 Apr 2026 08:24:49 +0000 (11:24 +0300)]
fix: экспорт — один JOIN-запрос со скалярами вместо AR + eager loading

Убирает OOM: GUID-ы фильтруются отдельно, данные — одним SQL с
STRING_AGG для маркировок. Никаких ActiveRecord-объектов в памяти.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 days agofix: экспорт маппинга переведён с XLSX на CSV
fomichev [Wed, 22 Apr 2026 08:04:26 +0000 (11:04 +0300)]
fix: экспорт маппинга переведён с XLSX на CSV

PhpSpreadsheet роняет процесс по памяти на больших выборках.
CSV: нет зависимостей, минимум памяти, UTF-8 BOM для Excel.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 days agofix: заменить yii.getCsrfToken() на meta[csrf-token] во всех модулях buyer-reference
fomichev [Wed, 22 Apr 2026 08:00:49 +0000 (11:00 +0300)]
fix: заменить yii.getCsrfToken() на meta[csrf-token] во всех модулях buyer-reference

yii объект недоступен в контексте внешних JS-файлов. Читаем токен напрямую
из <meta name="csrf-token"> — так же работает во всех браузерах.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 days agofix: перехват ошибки экспорта — возврат JSON вместо 500
fomichev [Wed, 22 Apr 2026 07:57:40 +0000 (10:57 +0300)]
fix: перехват ошибки экспорта — возврат JSON вместо 500

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 days agofix: правильный регистр исключённых категорий (строчные буквы)
fomichev [Wed, 22 Apr 2026 07:52:57 +0000 (10:52 +0300)]
fix: правильный регистр исключённых категорий (строчные буквы)

В БД категории хранятся строчными: 'букет', 'сборка', 'сервис'.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 days agofix: фильтрация категорий Букет/Сборка/Сервис после кэша
fomichev [Wed, 22 Apr 2026 07:46:39 +0000 (10:46 +0300)]
fix: фильтрация категорий Букет/Сборка/Сервис после кэша

Перенесена фильтрация исключённых категорий из SQL-запроса внутри кэша
в PHP-фильтр после getOrSet — работает немедленно независимо от состояния кэша.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 days agofix cache
fomichev [Wed, 22 Apr 2026 07:43:55 +0000 (10:43 +0300)]
fix cache

9 days agofix mapping
fomichev [Wed, 22 Apr 2026 07:29:26 +0000 (10:29 +0300)]
fix mapping

9 days agofix marking
fomichev [Wed, 22 Apr 2026 07:13:27 +0000 (10:13 +0300)]
fix marking

9 days agofix producer
fomichev [Wed, 22 Apr 2026 07:03:22 +0000 (10:03 +0300)]
fix producer

9 days agofix plantation
fomichev [Wed, 22 Apr 2026 06:48:20 +0000 (09:48 +0300)]
fix plantation

9 days agofix plantation
fomichev [Wed, 22 Apr 2026 06:32:56 +0000 (09:32 +0300)]
fix plantation

9 days agodelete
fomichev [Tue, 21 Apr 2026 14:01:26 +0000 (17:01 +0300)]
delete

9 days agomigration
fomichev [Tue, 21 Apr 2026 12:58:08 +0000 (15:58 +0300)]
migration

10 days agofix button
fomichev [Tue, 21 Apr 2026 12:36:47 +0000 (15:36 +0300)]
fix button

10 days agofix button
fomichev [Tue, 21 Apr 2026 12:20:54 +0000 (15:20 +0300)]
fix button

10 days agofix button
fomichev [Tue, 21 Apr 2026 12:18:37 +0000 (15:18 +0300)]
fix button

10 days agoфикс появления после создания
fomichev [Tue, 21 Apr 2026 10:19:41 +0000 (13:19 +0300)]
фикс появления после создания

10 days agoфикс удаления
fomichev [Tue, 21 Apr 2026 08:36:43 +0000 (11:36 +0300)]
фикс удаления

10 days agoфикс удаления
fomichev [Tue, 21 Apr 2026 06:56:40 +0000 (09:56 +0300)]
фикс удаления

10 days agoфикс вкладки
fomichev [Tue, 21 Apr 2026 06:56:09 +0000 (09:56 +0300)]
фикс вкладки

2 weeks agoФикс по фильтры
fomichev [Fri, 17 Apr 2026 10:48:07 +0000 (13:48 +0300)]
Фикс по фильтры

2 weeks agoФикс по фильтры
fomichev [Fri, 17 Apr 2026 09:40:36 +0000 (12:40 +0300)]
Фикс по фильтры

2 weeks agoФикс по js
fomichev [Fri, 17 Apr 2026 09:23:38 +0000 (12:23 +0300)]
Фикс по js

2 weeks agoФикс по маппингу
fomichev [Fri, 17 Apr 2026 07:26:57 +0000 (10:26 +0300)]
Фикс по маппингу

2 weeks agoКаталог поставщика
Vladimir Fomichev [Tue, 14 Apr 2026 07:32:43 +0000 (10:32 +0300)]
Каталог поставщика

2 weeks agoКаталог поставщика
Vladimir Fomichev [Tue, 14 Apr 2026 07:32:34 +0000 (10:32 +0300)]
Каталог поставщика

3 weeks agofeat(ERP-318): справочник поставщиков — Model + Controller + View + JS
Vladimir Fomichev [Thu, 9 Apr 2026 06:39:09 +0000 (09:39 +0300)]
feat(ERP-318): справочник поставщиков — Model + Controller + View + JS

Реализован CRUD справочника поставщиков с модальными окнами (AJAX),
GridView + PJAX и каскадной деактивацией связанных записей.

Компоненты:
- Supplier (AR модель с TimestampBehavior + BlameableBehavior)
- SupplierSearch (search модель без пагинации)
- SupplierController (AJAX CRUD, наследует BaseController)
- views/supplier/index.php (GridView + модалка + JS)
- views/supplier/_form.php (форма для модалки)
- BuyerReferenceController + view (контейнер с табами)

Бейджи типа и статуса — по UI-guideline из spec-supplier-reference.html.
Валидация: name unique varchar(200), lead_time >= 0, type/currency enum.
Soft delete через is_active=false с каскадом на markings и product_mappings.
Write-операции обёрнуты в DB-транзакции.

Артефакты workflow: docs/jira/ERP-318/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4 weeks agoMerge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'
Aleksey Filippov [Thu, 2 Apr 2026 16:11:58 +0000 (16:11 +0000)]
Merge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'

fix(BC-248): защита миграции purchase_date от повторного применения

See merge request gitlab-instance/yii-erp24!1158

4 weeks agofix(BC-248): защита миграции purchase_date от повторного применения origin/fix_filippov_BC-248_max_chatbot_source
Aleksey Filippov [Thu, 2 Apr 2026 16:11:06 +0000 (19:11 +0300)]
fix(BC-248): защита миграции purchase_date от повторного применения

Проверка наличия колонки через getTableSchema перед ALTER TABLE.

4 weeks agoMerge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'
Aleksey Filippov [Wed, 1 Apr 2026 16:12:06 +0000 (16:12 +0000)]
Merge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'

feat(BC-248): добавить поле purchase_date в обращения KikFeedback

See merge request gitlab-instance/yii-erp24!1156

4 weeks agofeat(BC-248): добавить поле purchase_date в обращения KikFeedback
Aleksey Filippov [Wed, 1 Apr 2026 16:08:35 +0000 (19:08 +0300)]
feat(BC-248): добавить поле purchase_date в обращения KikFeedback

- Миграция: колонка purchase_date (date, nullable) в kik_feedback_request
- Модель KikFeedbackRequest: PHPDoc, rules, attributeLabels
- API2 KikController: приём purchase_date из bodyParams
- API3 KikService + FeedbackInput: приём purchase_date, маппинг max_chatbot
- View: отображение "Дата покупки" в карточке обращения

4 weeks agoMerge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'
Aleksey Filippov [Wed, 1 Apr 2026 14:42:40 +0000 (14:42 +0000)]
Merge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'

fix(BC-248): actionGetStores — вернуть UUID из Products1c вместо числового ID из CityStore

See merge request gitlab-instance/yii-erp24!1155

4 weeks agofix(BC-248): actionGetStores — вернуть UUID из Products1c вместо числового ID из...
Aleksey Filippov [Wed, 1 Apr 2026 14:41:26 +0000 (17:41 +0300)]
fix(BC-248): actionGetStores — вернуть UUID из Products1c вместо числового ID из CityStore

Max-бот ожидает UUID магазинов (Products1c.id), а не числовой ID из CityStore.
Удалён закомментированный дубликат метода.

4 weeks agoMerge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'
Aleksey Filippov [Wed, 1 Apr 2026 13:40:14 +0000 (13:40 +0000)]
Merge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'

fix(BC-248): добавить источник max_chatbot в маппинг KikFeedback

See merge request gitlab-instance/yii-erp24!1154

4 weeks agofix(BC-248): добавить источник max_chatbot в маппинг KikFeedback
Aleksey Filippov [Wed, 1 Apr 2026 13:33:38 +0000 (16:33 +0300)]
fix(BC-248): добавить источник max_chatbot в маппинг KikFeedback

Обратная связь из Max-бота записывалась с source=0 (неизвестный)
вместо source=11 (Макс), т.к. маппинг не содержал max_chatbot.

4 weeks agoMerge branch 'feature_filippov_ERP-280_reduce_cleanup_period' into 'develop'
Aleksey Filippov [Wed, 1 Apr 2026 07:44:17 +0000 (07:44 +0000)]
Merge branch 'feature_filippov_ERP-280_reduce_cleanup_period' into 'develop'

feat(ERP-280): клиентская валидация суммарного размера файлов (лимит 2.5 ГБ)

See merge request gitlab-instance/yii-erp24!1153

4 weeks agofeat(ERP-280): клиентская валидация суммарного размера файлов (лимит 2.5 ГБ) origin/feature_filippov_ERP-280_reduce_cleanup_period
Aleksey Filippov [Wed, 1 Apr 2026 06:39:53 +0000 (09:39 +0300)]
feat(ERP-280): клиентская валидация суммарного размера файлов (лимит 2.5 ГБ)

Предотвращает отправку формы списания, если суммарный размер вложений
превышает 2.5 ГБ. Показывает пользователю фактический и допустимый размер.

4 weeks agoMerge branch 'feature_filippov_ERP-280_reduce_cleanup_period' into 'develop'
Aleksey Filippov [Tue, 31 Mar 2026 14:54:24 +0000 (14:54 +0000)]
Merge branch 'feature_filippov_ERP-280_reduce_cleanup_period' into 'develop'

fix(ERP-280): сократить срок подготовки файлов списания до 5 дней

See merge request gitlab-instance/yii-erp24!1152

4 weeks agofix(ERP-280): сократить срок подготовки файлов списания до 5 дней
Aleksey Filippov [Tue, 31 Mar 2026 14:53:26 +0000 (17:53 +0300)]
fix(ERP-280): сократить срок подготовки файлов списания до 5 дней

Было: -1 month, стало: -5 days в export-old, print-old и связанных методах модели.

5 weeks agoMerge branch 'fix_filippov_batch_sync_pdo_binding' into 'develop'
Aleksey Filippov [Tue, 24 Mar 2026 17:04:00 +0000 (17:04 +0000)]
Merge branch 'fix_filippov_batch_sync_pdo_binding' into 'develop'

fix: BatchSyncService PDO binding — $N плейсхолдеры → :pN

See merge request gitlab-instance/yii-erp24!1150

5 weeks agofix: BatchSyncService PDO binding — $N плейсхолдеры → :pN origin/fix_filippov_batch_sync_pdo_binding
Aleksey Filippov [Tue, 24 Mar 2026 16:46:06 +0000 (19:46 +0300)]
fix: BatchSyncService PDO binding — $N плейсхолдеры → :pN

PDO::bindValue() требует индекс ≥ 1, а $params был 0-индексированным
массивом с PostgreSQL-нативными $1,$2,$3 плейсхолдерами. Это вызывало:

  PDOStatement::bindValue(): Argument #1 ($param) must be >= 1

Результат на проде: Balances::deleteAll() удалял данные магазина,
BatchSyncService->upsertBalances() падал → магазин терял ВСЕ строки.

Fix: именованные :p1,:p2,:p3 плейсхолдеры вместо $1,$2,$3.
Проверено на реальной БД: 5 магазинов (419-499 товаров) + characteristics.

5 weeks agoMerge branch 'feature_filippov_ERP-33_stock_state_scd2' into 'develop'
Aleksey Filippov [Tue, 24 Mar 2026 14:19:31 +0000 (14:19 +0000)]
Merge branch 'feature_filippov_ERP-33_stock_state_scd2' into 'develop'

Feature filippov erp 33 stock state scd2

See merge request gitlab-instance/yii-erp24!1149

5 weeks agofix(ERP-33): SendTelegramMessageJob namespace app\jobs, не yii_app\jobs origin/feature_filippov_ERP-33_stock_state_scd2
Aleksey Filippov [Tue, 24 Mar 2026 14:16:52 +0000 (17:16 +0300)]
fix(ERP-33): SendTelegramMessageJob namespace app\jobs, не yii_app\jobs

5 weeks agoMerge branch 'task-JIRA-ERP-33-20260324070448' into 'develop'
Aleksey Filippov [Tue, 24 Mar 2026 13:59:46 +0000 (13:59 +0000)]
Merge branch 'task-JIRA-ERP-33-20260324070448' into 'develop'

Task jira erp 33 20260324070448

See merge request gitlab-instance/yii-erp24!1148

5 weeks agoMerge branch 'develop' into 'task-JIRA-ERP-33-20260324070448'
Aleksey Filippov [Tue, 24 Mar 2026 13:59:15 +0000 (13:59 +0000)]
Merge branch 'develop' into 'task-JIRA-ERP-33-20260324070448'

# Conflicts:
#   erp24/services/StockStateService.php

5 weeks agofix(ERP-33): safe cast components — пустые строки и NULL в products_1c
Aleksey Filippov [Tue, 24 Mar 2026 13:41:41 +0000 (16:41 +0300)]
fix(ERP-33): safe cast components — пустые строки и NULL в products_1c

5 weeks agofix(ERP-33): safe cast components — пустые строки и NULL в products_1c
Aleksey Filippov [Tue, 24 Mar 2026 13:41:41 +0000 (16:41 +0300)]
fix(ERP-33): safe cast components — пустые строки и NULL в products_1c

5 weeks agoMerge branch 'feature_filippov_ERP-33_stock_state_scd2' into 'develop'
Aleksey Filippov [Tue, 24 Mar 2026 13:39:32 +0000 (13:39 +0000)]
Merge branch 'feature_filippov_ERP-33_stock_state_scd2' into 'develop'

[ERP-33]: cast components::jsonb + TelegramTarget multiline fix

See merge request gitlab-instance/yii-erp24!1147

5 weeks agofix(ERP-33): cast components::jsonb + TelegramTarget multiline fix
Aleksey Filippov [Tue, 24 Mar 2026 13:36:36 +0000 (16:36 +0300)]
fix(ERP-33): cast components::jsonb + TelegramTarget multiline fix

1. StockStateService: pp.components::jsonb cast — products_1c хранит
   components как text, stock_state ожидает JSONB
2. TelegramTarget: экранировать \n при записи в error_tracking.log —
   многострочные ошибки ломали формат файла и спамили stderr

5 weeks agofix(ERP-33): cast pp.components::jsonb в INSERT для совместимости с products_1c
Aleksey Filippov [Tue, 24 Mar 2026 13:26:39 +0000 (16:26 +0300)]
fix(ERP-33): cast pp.components::jsonb в INSERT для совместимости с products_1c

5 weeks agoMerge branch 'task-JIRA-ERP-33-20260324070448' into 'develop'
Aleksey Filippov [Tue, 24 Mar 2026 13:15:10 +0000 (13:15 +0000)]
Merge branch 'task-JIRA-ERP-33-20260324070448' into 'develop'

fix(ERP-33): TelegramTarget — экранировать \n в error_tracking.log

See merge request gitlab-instance/yii-erp24!1146

5 weeks agorefactor(ERP-33): убрать actionCleanup — очистка не нужна
Aleksey Filippov [Tue, 24 Mar 2026 11:57:09 +0000 (14:57 +0300)]
refactor(ERP-33): убрать actionCleanup — очистка не нужна

5 weeks agofix(ERP-33): TelegramTarget — экранировать \n в error_tracking.log
Aleksey Filippov [Tue, 24 Mar 2026 11:49:26 +0000 (14:49 +0300)]
fix(ERP-33): TelegramTarget — экранировать \n в error_tracking.log

Многострочные ошибки (содержащие $_SERVER dump) ломали формат
файла error_tracking.log: file() разбивала одну запись на
множество строк, каждая выводилась как "Некорректная строка".

Фикс: str_replace \n → \\n при записи, убран error_log спам.

5 weeks agoMerge branch 'task-JIRA-ERP-33-20260324070448' into 'develop'
Aleksey Filippov [Tue, 24 Mar 2026 11:42:53 +0000 (11:42 +0000)]
Merge branch 'task-JIRA-ERP-33-20260324070448' into 'develop'

fix(ERP-33): namespace app\ → yii_app\ для совместимости с продом

See merge request gitlab-instance/yii-erp24!1145

5 weeks agofix(ERP-33): namespace app\ → yii_app\ для совместимости с продом
Aleksey Filippov [Tue, 24 Mar 2026 11:38:04 +0000 (14:38 +0300)]
fix(ERP-33): namespace app\ → yii_app\ для совместимости с продом

5 weeks agoMerge branch 'task-JIRA-ERP-33-20260324070448' into 'develop'
Aleksey Filippov [Tue, 24 Mar 2026 10:01:19 +0000 (10:01 +0000)]
Merge branch 'task-JIRA-ERP-33-20260324070448' into 'develop'

[ERP-33]: add unit tests for StockHistoryService (11 tests)

See merge request gitlab-instance/yii-erp24!1144

5 weeks agofeat(ERP-33): заменить StockHistory (snapshot) на StockState (SCD-2)
Aleksey Filippov [Tue, 24 Mar 2026 09:48:40 +0000 (12:48 +0300)]
feat(ERP-33): заменить StockHistory (snapshot) на StockState (SCD-2)

Полная переделка подхода хранения остатков:
- StockHistory (полные снимки 11400 INSERT/запуск) → StockState (SCD-2, 2 SQL)
- Без партиций — одна таблица с valid_from/valid_to (TIMESTAMP)
- valid_to = '2100-01-01 00:00:00' для активных, закрытие на секунду раньше
- is_active boolean для быстрой фильтрации
- batch_ts — единый timestamp пакета на запуск
- Экономия ~78% объёма (660 MB vs 3 GB за 2 года)
- 10 unit-тестов, 29 assertions

5 weeks agofeat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 08:04:06 +0000 (08:04 +0000)]
feat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день

5 weeks agofeat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 08:02:44 +0000 (08:02 +0000)]
feat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день

5 weeks agofeat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 08:00:24 +0000 (08:00 +0000)]
feat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день

5 weeks agofeat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:38:26 +0000 (07:38 +0000)]
feat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день

5 weeks agofeat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:36:00 +0000 (07:36 +0000)]
feat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день

5 weeks agofeat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:30:52 +0000 (07:30 +0000)]
feat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день

5 weeks agofeat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:28:15 +0000 (07:28 +0000)]
feat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день

5 weeks agofeat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:22:01 +0000 (07:22 +0000)]
feat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день

5 weeks agofeat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:18:45 +0000 (07:18 +0000)]
feat(task-JIRA-ERP-33-20260324070448): Сбор данных по остаткам на день

6 weeks agoMerge branch 'feature_filippov_ERP-237_missing_indexes' into 'develop'
Aleksey Filippov [Thu, 19 Mar 2026 13:57:44 +0000 (13:57 +0000)]
Merge branch 'feature_filippov_ERP-237_missing_indexes' into 'develop'

feat(ERP-237): 6 индексов для устранения медленных запросов

See merge request gitlab-instance/yii-erp24!1143

6 weeks agofeat(ERP-237): 6 индексов для устранения медленных запросов из pg_stat_statements origin/feature_filippov_ERP-237_missing_indexes
Aleksey Filippov [Thu, 19 Mar 2026 13:31:35 +0000 (16:31 +0300)]
feat(ERP-237): 6 индексов для устранения медленных запросов из pg_stat_statements

export_import_table(entity, export_id, export_val) — 2.3M запросов, 511s
marketplace_orders(guid) — 247K запросов, 412s
marketplace_flowwow_emails(subject, from, date) — 253K запросов, 409s
marketplace_order_items(order_id) — 376K запросов, 307s
timetable_fact(admin_id, date, is_opening) — 52K запросов, 298s
admin_payroll_days(admin_id, date) — 27K запросов, 278s

6 weeks agoMerge branch 'feature_filippov_ERP-218-J_fix_db_long_request' into 'develop'
Aleksey Filippov [Thu, 19 Mar 2026 13:20:42 +0000 (13:20 +0000)]
Merge branch 'feature_filippov_ERP-218-J_fix_db_long_request' into 'develop'

feat(ERP-218-J): интеграция BatchSyncService и ProductPropTypeCacheService в UploadService

See merge request gitlab-instance/yii-erp24!1142

6 weeks agofeat(ERP-218-J): интеграция BatchSyncService и ProductPropTypeCacheService в UploadSe... feature_filippov_ERP-218-J_fix_db_long_request origin/feature_filippov_ERP-218-J_fix_db_long_request
Aleksey Filippov [Thu, 19 Mar 2026 13:11:17 +0000 (16:11 +0300)]
feat(ERP-218-J): интеграция BatchSyncService и ProductPropTypeCacheService в UploadService

- Исправлена миграция: indexExists() через pg_indexes вместо $schema->indexes
- ProductPropTypeCacheService: null-safe обращение к Yii::$app->cache
- UploadService: Products1cPropType::findOne() заменён на ProductPropTypeCacheService (10M→1 запрос)
- UploadService: balances INSERT в цикле заменён на BatchSyncService::upsertBalances (6M→2k запросов)
- UploadService: characteristics INSERT/UPDATE заменён на BatchSyncService::upsertProductCharacteristics (11M→1.2k)
- 20 unit-тестов: BatchSyncServiceTest (9) + ProductPropTypeCacheServiceTest (11)

6 weeks agoMerge branch 'feature_filippov_ERP-255_fix_marketplace_concurrency' into 'develop'
Aleksey Filippov [Thu, 19 Mar 2026 12:40:35 +0000 (12:40 +0000)]
Merge branch 'feature_filippov_ERP-255_fix_marketplace_concurrency' into 'develop'

fix(ERP-255): защита от гонки процессов в маркетплейс-командах

See merge request gitlab-instance/yii-erp24!1141

6 weeks agotest(ERP-255): unit-тесты для mutex-защиты cron-команд и null-check в SendBonusInfoTo... feature_filippov_ERP-255_fix_marketplace_concurrency origin/feature_filippov_ERP-255_fix_marketplace_concurrency
Aleksey Filippov [Thu, 19 Mar 2026 11:38:08 +0000 (14:38 +0300)]
test(ERP-255): unit-тесты для mutex-защиты cron-команд и null-check в SendBonusInfoToSiteJob

MarketplaceControllerMutexTest — 7 тестов: пропуск при занятом mutex,
release в finally, уникальность ключей.
SendBonusInfoToSiteJobTest — 5 тестов: null-check, детерминированность hash.

6 weeks agoMerge branch 'feature_filippov_ERP-258_telegram_429_fix' into 'develop'
Aleksey Filippov [Tue, 17 Mar 2026 08:36:09 +0000 (08:36 +0000)]
Merge branch 'feature_filippov_ERP-258_telegram_429_fix' into 'develop'

fix(ERP-258): агрегация сообщений и дедупликация в TelegramTarget

See merge request gitlab-instance/yii-erp24!1139

6 weeks agofix(ERP-258): агрегация сообщений и дедупликация в TelegramTarget origin/feature_filippov_ERP-258_telegram_429_fix
Aleksey Filippov [Tue, 17 Mar 2026 06:46:45 +0000 (09:46 +0300)]
fix(ERP-258): агрегация сообщений и дедупликация в TelegramTarget

- Обработка всех сообщений буфера вместо только первого
- Включён shouldSendMessage() для дедупликации (1 раз в день на ошибку)
- Лимит 800 символов на сообщение, 4000 итого
- disableNotification только если нет ERROR-уровня

6 weeks agoMerge branch 'feature_filippov_ERP-257_heic_already_readable' into 'develop'
Aleksey Filippov [Mon, 16 Mar 2026 13:26:53 +0000 (13:26 +0000)]
Merge branch 'feature_filippov_ERP-257_heic_already_readable' into 'develop'

fix(ERP-257): graceful fallback для HEIC-файлов, которые уже являются JPEG

See merge request gitlab-instance/yii-erp24!1138

6 weeks agochore: trigger MR creation origin/feature_filippov_ERP-257_heic_already_readable
Aleksey Filippov [Mon, 16 Mar 2026 13:25:26 +0000 (16:25 +0300)]
chore: trigger MR creation

6 weeks agofix(ERP-257): graceful fallback для HEIC-файлов, которые уже являются JPEG
Aleksey Filippov [Mon, 16 Mar 2026 13:17:43 +0000 (16:17 +0300)]
fix(ERP-257): graceful fallback для HEIC-файлов, которые уже являются JPEG

iPhone иногда сохраняет JPEG с расширением .HEIC. Библиотека heic2any
бросала ERR_USER вместо того, чтобы пропустить файл. Теперь при ошибке
"already browser readable" файл передаётся как есть с корректным расширением.

6 weeks agoMerge branch 'feature_filippov_ERP-256_cabinet_last_month_button' into 'develop'
Aleksey Filippov [Fri, 13 Mar 2026 13:21:39 +0000 (13:21 +0000)]
Merge branch 'feature_filippov_ERP-256_cabinet_last_month_button' into 'develop'

feat(ERP-256): добавлена кнопка «за прошлый месяц» на странице ошибки смен

See merge request gitlab-instance/yii-erp24!1137

6 weeks agofeat(ERP-256): добавлена кнопка «за прошлый месяц» на странице ошибки смен origin/feature_filippov_ERP-256_cabinet_last_month_button
Aleksey Filippov [Fri, 13 Mar 2026 13:16:13 +0000 (16:16 +0300)]
feat(ERP-256): добавлена кнопка «за прошлый месяц» на странице ошибки смен

Добавлен $buttonParams2 с диапазоном дат прошлого месяца.
Кнопка отображается рядом с «за неделю» при ошибке cs1.

7 weeks agofix(ERP-255): защита от гонки процессов в маркетплейс-командах
Aleksey Filippov [Sat, 7 Mar 2026 21:36:28 +0000 (00:36 +0300)]
fix(ERP-255): защита от гонки процессов в маркетплейс-командах

- Добавлен компонент PgsqlMutex в console.php для advisory locks
- Обёрнуты 4 action MarketplaceController в мьютекс (yandex-orders,
  flowwow-orders, flowwow-retry, check-ready-to-1c) — повторный запуск
  cron пропускается без ошибок
- Добавлен try-catch IntegrityException в processOrders() вокруг
  save() нового заказа — дубликат marketplace_order_id при гонке
  теперь логируется как warning, а не падает в ошибку
- Исправлен NPE в SendBonusInfoToSiteJob: добавлена проверка на null
  перед обращением к ->status++ (Fatal Error при отсутствии записи)
- Добавлен layout => false в api1.config.php

7 weeks agoMerge branch 'feature_filippov_ERP-254_fix_close_shift_null_fact' into 'develop'
Aleksey Filippov [Sat, 7 Mar 2026 17:59:55 +0000 (17:59 +0000)]
Merge branch 'feature_filippov_ERP-254_fix_close_shift_null_fact' into 'develop'

fix(ERP-254): throw 404 when no open shift found on close

See merge request gitlab-instance/yii-erp24!1135

7 weeks agofix(ERP-254): throw 404 when no open shift found on close origin/feature_filippov_ERP-254_fix_close_shift_null_fact
Aleksey Filippov [Sat, 7 Mar 2026 17:48:54 +0000 (20:48 +0300)]
fix(ERP-254): throw 404 when no open shift found on close

TimetableFactModel::getLast() returns null if no open fact exists
for the admin on the current/previous date. Accessing checkin_start_id
on null caused PHP Warning and 500 response. Now returns proper 404.

7 weeks agoMerge branch 'feature_filippov_20260307_fix_mp_telegram_429' into 'develop'
Aleksey Filippov [Sat, 7 Mar 2026 17:31:11 +0000 (17:31 +0000)]
Merge branch 'feature_filippov_20260307_fix_mp_telegram_429' into 'develop'

fix(marketplace): aggregate missing MarketplaceStore errors before Telegram send

See merge request gitlab-instance/yii-erp24!1134

7 weeks agofix(marketplace): aggregate missing MarketplaceStore errors before Telegram send origin/feature_filippov_20260307_fix_mp_telegram_429
Aleksey Filippov [Sat, 7 Mar 2026 17:18:17 +0000 (20:18 +0300)]
fix(marketplace): aggregate missing MarketplaceStore errors before Telegram send

Instead of sending one Telegram message per order with missing store
inside processOrders() loop, collect unique warehouse GUIDs and send
a single aggregated message after the loop to avoid Telegram 429.

7 weeks agoMerge branch 'feature_fomichev_2026-03-06_TO8-22_promobonuses' into 'develop'
Aleksey Filippov [Fri, 6 Mar 2026 22:53:35 +0000 (22:53 +0000)]
Merge branch 'feature_fomichev_2026-03-06_TO8-22_promobonuses' into 'develop'

fix(TO8-22): is_promo_balance boolean validation in Promocode model

See merge request gitlab-instance/yii-erp24!1133

7 weeks agofix(TO8-22): is_promo_balance boolean validation in Promocode model feature_fomichev_2026-03-06_TO8-22_promobonuses origin/feature_fomichev_2026-03-06_TO8-22_promobonuses
Aleksey Filippov [Fri, 6 Mar 2026 22:52:31 +0000 (01:52 +0300)]
fix(TO8-22): is_promo_balance boolean validation in Promocode model

Колонка is_promo_balance в PostgreSQL — boolean, а валидатор был integer.
PDO возвращает PHP false → IntegerValidator падает: "должно быть целым числом".

7 weeks agoMerge branch 'feature_fomichev_2026-03-06_TO8-22_promobonuses' into 'develop'
Aleksey Filippov [Fri, 6 Mar 2026 15:46:43 +0000 (15:46 +0000)]
Merge branch 'feature_fomichev_2026-03-06_TO8-22_promobonuses' into 'develop'

feat(TO8-22): промокоды БЛАГО — активация и промо-списание бонусов

See merge request gitlab-instance/yii-erp24!1132

7 weeks agoдубликаты
Vladimir Fomichev [Fri, 6 Mar 2026 14:57:12 +0000 (17:57 +0300)]
дубликаты

7 weeks agoблокирование строки
Vladimir Fomichev [Fri, 6 Mar 2026 14:26:51 +0000 (17:26 +0300)]
блокирование строки

7 weeks agoлогирование
Vladimir Fomichev [Fri, 6 Mar 2026 14:23:17 +0000 (17:23 +0300)]
логирование

7 weeks agofix(TO8-22): skip Yii validation on UsersBonus save in activatePromocode
VVF [Fri, 6 Mar 2026 14:18:44 +0000 (17:18 +0300)]
fix(TO8-22): skip Yii validation on UsersBonus save in activatePromocode

Множество полей БД (dell, status, check_id и др.) не имеют дефолтов
на уровне модели. save(false) пропускает валидацию Yii — аналогично
actionSale() строка 902.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>