Сводная ОСВ: сопоставление контрагента «Указать» → «Связать» по макету [32] (#14) #15
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/14-osv-map-counterparty"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #14
Что сделано
osv-table__inn-cell--requiredмакета), рядом с ИНН из файла — красная ссылка «Указать».scope=all; короче 3 символов запрос не уходит, показана подсказка.POST …/osv/entries/{entry_ids.at(-1)}/counterparty. Ответы 409:ALIAS_TAKEN→ «Имя уже закреплено за <владельцы>. Перенести?» → повтор сmove_alias: true;LOCK_REQUIRED→ «Взять версию в работу?» →POST …/lock→ повтор;LOCKED_BY_OTHER→ «Версию держит <имя>» (имя из ответа lock или из карточки);После успеха: сообщение (с кем связано, сколько записей сопоставлено автоприменением, создан/перенесён алиас), модалка закрывается, перечитываются строки и
…/osv/summary.counterpartyMapping.ts(14 тестов), API —getCounterpartyCandidates,mapCounterparty,lockVersion; типыCandidateOut,MapCounterpartyIn/Out.consolidated-osv-ui: требование «Ручное сопоставление контрагента».Проверка
make check: biome — 0 ошибок (7 старых предупреждений, T2.3 из #6),tsc --noEmitчисто, vitest 20 файлов / 116 тестов,rsbuild buildсобирается.В браузере (dev-сервер ветки :3001, Playwright 1600×1000, версия РБ 2025 К1, «Осталось: 1367»):
scope=all. Блок «Рекомендуемые» сверен с [32-osv-map-counterparty] на подменённом флагеrecommended(см. R-6).LOCK_REQUIRED→ «Взять в работу» →POST …/lock→ALIAS_TAKEN→ «Перенести» →move_alias: true→ успех → перечитаныosv?unmapped=trueиosv/summary;LOCKED_BY_OTHER→ «Версию держит другой пользователь». POST сопоставления и lock в этом прогоне подменены (R-5).Rulings I made
LOCK_REQUIRED→ подтверждение «Взять версию в работу?» прямо в модалке. Кнопки «Взять в работу» в arm-web нет. Цена ошибки: н��зкая (подтверждение явное, блокировку можно снятьDELETE …/lock).LOCKED_BY_OTHER→ только сообщение, перехвата нет (место перехвата — карточка [35]). Цена ошибки: низкая.scope=all) — в макете её нет, там поиск только по группе. Без неё внешнего контрагента вне ГК не связать. Цена ошибки: низкая.Deferred
ConsolidatedRowOut(arm-core).🤖 Generated with Claude Code
https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
- ИНН-ячейка строк без сопоставления подсвечена, ссылка «Указать» рядом с ИНН из файла [32-osv-no-inn]. - Модалка «Выбор организации для связи с …» [32-osv-map-counterparty]: поиск с паузой 300 мс, scope group / весь справочник (от 3 символов), блок «Рекомендуемые», «Связать». - POST …/osv/entries/{последняя entry_id}/counterparty; 409 ALIAS_TAKEN → перенос алиаса (move_alias), LOCK_REQUIRED → «Взять версию в работу?» → POST …/lock → повтор, LOCKED_BY_OTHER → имя держателя. - После успеха перечитываются строки и сводка («Осталось N»). - Чистые функции counterpartyMapping.ts + тесты; спека consolidated-osv-ui. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2