Files
portal/docs/superpowers
Дмитрий d2100a9bab docs(supplier): brainstorm — supplier platform prefix on write (spec)
Spec для фикса root-cause обнаруженной 26.05.2026 при разборе скриншота
админки поставщика: 11 из первых 12 наших проектов в crm.bp-gr.ru имеют
name без префикса B1_/B2_/B3_, в то время как старые ручные — с префиксом.

Корень в SupplierPortalClient::toPayload() строка 468: name=uniqueKey
без префикса. Допущение портал префиксует сам автоматически (комментарий
2026-05-19, recon Playwright) не подтверждено живым listProjects.

Решения брейншторма (заказчик подтвердил):
- toPayload префиксует name через helper prefixedName():
  "B<n>_<uniqueKey>" если platforms содержит ровно 1 элемент,
  иначе throw LogicException (инвариант 1 POST = 1 платформа).
- saveProjectMultiFlag реструктуризируется: один POST со всеми
  srcrt+srcbl+srcmt -> N последовательных POST'ов, по одному на платформу,
  external_id из ответа rt-project-save напрямую.
- updateProject без изменений сигнатуры -- уже вызывается per-platform,
  через тот же toPayload автоматически реализует нормализацию на лету
  для 11 legacy без префикса.
- partial-failure не откатываем: Laravel job retry создаст возможные
  дубли, чистим вручную (флоу отработан 26.05).
- К1 учебник вебмастера НЕ правим в этом скоупе.
- AjaxProjectChannel read-side не трогаем -- 26.05 фикс DIRECT для
  legacy продолжает работать естественно.

Tests: unit для toPayload, feature для saveProjectMultiFlag с моком HTTP,
live smoke на боевом через UI Лидерры + tinker listProjects.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 16:33:26 +03:00
..