arch/page-templates: page_template_references пишется, но не читается (мёртвая поверхность) + триплицированный sync + дубль lookup-context #94

Closed
opened 2026-06-21 02:33:15 +03:00 by Ghost · 0 comments

Найдено в 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 расходится при будущей правке.

Опции

  • Option 1 (small): оставить запись, добавить читателя (инвалидация/нотификация хост-страниц, «где используется») в follow-up; унифицировать PM-коллекторы в collectNodes(doc, type, mapper). Pros: сохраняет данные для скорого потребителя. Cons: мёртвый код пока остаётся.
  • Option 2 (medium): отложить граф — убрать sync/insert/repo/миграцию из этого PR, вернуть с первым читателем; вынести дженерик syncReferenceSet({collect,repo,key}). Pros: меньше поверхности. Cons: повторная работа позже.

Рекомендация
Option 1 если читатель — конкретно следующая задача; иначе Option 2. Дубль lookup-context оставить до третьего потребителя.

Связанные: #71

Найдено в 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 расходится при будущей правке. **Опции** - *Option 1 (small)*: оставить запись, добавить читателя (инвалидация/нотификация хост-страниц, «где используется») в follow-up; унифицировать PM-коллекторы в `collectNodes(doc, type, mapper)`. Pros: сохраняет данные для скорого потребителя. Cons: мёртвый код пока остаётся. - *Option 2 (medium)*: отложить граф — убрать sync/insert/repo/миграцию из этого PR, вернуть с первым читателем; вынести дженерик `syncReferenceSet({collect,repo,key})`. Pros: меньше поверхности. Cons: повторная работа позже. **Рекомендация** Option 1 если читатель — конкретно следующая задача; иначе Option 2. Дубль lookup-context оставить до третьего потребителя. **Связанные:** #71
Ghost closed this issue 2026-06-21 14:10:34 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#94