fix(controller): приложения-оферты ЦПП к заявлению на повестке (wallet::signagree) #108
Reference in New Issue
Block a user
Delete Branch "fix/agenda-program-offer-links"
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?
Проблема
При регистрации пайщик выбирает программу участия (Генератор / Благорост). Её оферта должна отображаться как приложение к заявлению на странице повестки совета (рядом с заявлением физлица, политикой ПДн, пользовательским соглашением и положением об ЭП). Связь пропала: оферта подписана и видна в реестре документов, но в приложениях к заявлению её нет.
Причина
С Эпика 2 (commit
21e94ce0edc) программные оферты (program_id > 0) уходят на цепь черезwallet::signagree(пишет вwallet::users.programs[]), а не черезsoviet::sndagreement→soviet::newagreementпо такой оферте не создаётся.Агрегатор
document-package-v1.aggregator.tsискал каждое приложение (statement.meta.links[*]) только вsoviet::newagreementпоdoc_hash. Для программной оферты совпадения нет →if (agreement)ложно → оферта молча выпадала изlinks. До Эпика 2 все соглашения шли черезsoviet::sndagreementи линковались.Хэш оферты в
statement.meta.linksприсутствует (иначеregisterParticipantбросил бы ошибку валидации ссылок) — проблема в резолве носителя подписи в агрегаторе.Фикс
linkHashвынесен в общий хелперbuildLinkedAggregate.soviet::newagreement, затем фолбэкомwallet::signagree(полеdocumentимеет тот жеdoc_hash/meta/signatures).Повестка строит агрегат на лету (
agenda.interactor) — фикс действует сразу; БД-проекция реестра (signed_documents) пересобирается тем же агрегатором на следующем soviet-событии пакета.Проверка
jest document-package-v1.aggregator.spec.ts --runInBand — 2 passed.
🤖 Generated with Claude Code
test-probeto fix(controller): приложения-оферты ЦПП к заявлению на повестке (wallet::signagree)