arch/page-templates: page_template_references пишется, но не читается (мёртвая поверхность) + триплицированный sync + дубль lookup-context #94
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
Найдено в multi-aspect code review (грань: architecture, forward-looking, не блокирует мерж).
Область: apps/server/src/database/repos/page-template-references/ + transclusion.service.ts (syncPageTemplateReferences, insertTemplateReferencesForPages) + persistence.extension.ts:438 + page.service.ts:835 + миграция 20260620T131000; клиент: page-embed-lookup-context.tsx vs transclusion-lookup-context.tsx
Наблюдение
Граф page_template_references строится и подключён ко всем трём путям записи (collab save, дублирование, per-save sync), но нигде не читается (единственный read-аксессор не вызывается). Плюс три структурно идентичных потока «продиффить набор ссылок против контента» (syncPageTransclusions/syncPageReferences/syncPageTemplateReferences) + их bulk-insert двойники. Плюс page-embed-lookup-context.tsx — копия transclusion-lookup-context.tsx (батчинг/дедуп/кэш).
Значимость
Не баг корректности (записи в try/catch, данные безвредны). Но реальная площадь поверхности и нагрузка на сопровождение без текущего потребителя; триплицированный sync расходится при будущей правке.
Опции
collectNodes(doc, type, mapper). Pros: сохраняет данные для скорого потребителя. Cons: мёртвый код пока остаётся.syncReferenceSet({collect,repo,key}). Pros: меньше поверхности. Cons: повторная работа позже.Рекомендация
Option 1 если читатель — конкретно следующая задача; иначе Option 2. Дубль lookup-context оставить до третьего потребителя.
Связанные: #71