fix(soviet): возвращать созданный вопрос повестки из publish — мгновенный показ #99
Reference in New Issue
Block a user
Delete Branch "fix/agenda-pending-new-question"
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?
После публикации свободного решения совета повестка показывала «Нет вопросов на повестке» до следующего поллинга (10+ сек).
Корень.
getAgendaсобирается на бэкенде joinом таблицыdecisionsиз блокчейна (доступна сразу) с проиндексированными парсером действиемnewsubmittedи документом-заявлением. Между публикацией и индексацией парсером — лаг в секунды, поэтому только что созданный вопрос появляется вgetAgendaне мгновенно.Решение. Мутация
publishProjectOfFreeDecisionтеперь возвращает созданный пункт повестки. Бэкенд после публикации делает settle-паузу (на индексацию парсером) и извлекает готовый вопрос с повестки по хэшу документа-заявления; фронт вставляет его в таблицу немедленно. Поскольку бэкенд отдаёт пункт только когда он полностью собран (= уже идентичен выдаче getAgenda), голосовать/утверждать по нему можно сразу, без блокировки.Backend
AgendaInteractor.getAgendaItemByHash/AgendaService.getAgendaItemByHash— сборка одного пункта повестки по хэшу заявления (null, пока парсер не проиндексировал).FreeDecisionService.publishProjectOfFreeDecision— settle-пауза (1 c) + короткая страховочная петля; возвращаетAgendaWithDocuments | null. Резолвер: тип возврата сменёнBoolean → AgendaWithDocuments(nullable).AgendaModuleэкспортируетAgendaService;DecisionModuleимпортируетAgendaModule.SDK
rawAgendaSelector); регенерация zeus-клиента (schema.gql→generate-client→sdk build).Frontend
agendaStore: буфер оптимистично вставленных вопросов +computed-мердж с authoritative-списком (страховка от «мигания» при поллинге).CreateProjectButton: вставляет вернувшийся вопрос черезinsertCreated— доступен к голосованию сразу.process-decisions/ страница повестки — без изменений в блокировке (её нет).Бэкенд проверен на рантайме (живой
/v1/graphqlотдаёт новый тип возврата, nodemon перечитал без ошибок). SDK typecheck + frontend ESLint — зелёные.🤖 Generated with Claude Code
31b75ce42etoc2c5aa1d84fix(soviet): закрыть окно «нет вопросов» после предложения решения советаto fix(soviet): возвращать созданный вопрос повестки из publish — мгновенный показ