This document outlines the removal of non‑functional DOCX, PDF, and Confluence import options that relied on a private EE module. It records the completed frontend changes and lists the remaining backend cleanup tasks.
6.5 KiB
Удаление нерабочих импортов (DOCX / PDF / Confluence)
Контекст: DOCX, PDF и Confluence-импорт опирались на приватный EE-модуль, который выпилен из репозитория. В community-сборке эти пути либо бросают "enterprise license" (DOCX/PDF), либо молча ничего не делают (Confluence). Решено убрать эти форматы целиком.
Уже сделано (фронтенд) — лежит в рабочем дереве, НЕ закоммичено
apps/client/src/features/page/components/page-import-modal.tsx— убраны кнопки Word (DOCX), PDF, Confluence + связанный мёртвый код (импорты иконокIconFileTypeDocx/IconFileTypePdf/ConfluenceIcon, рефыdocxFileRef/pdfFileRef/confluenceFileRef, веткаconfluenceвhandleZipUpload, сбросы docx/pdf вhandleFileUpload). Остались рабочие: Markdown, HTML, Notion, generic-zip.apps/client/src/components/icons/confluence-icon.tsx— удалён (git rm), больше нигде не импортируется.
Статус git на момент записи:
D apps/client/src/components/icons/confluence-icon.tsxM apps/client/src/features/page/components/page-import-modal.tsx
Предложенное сообщение коммита для фронтенд-части уже сформулировано (refactor(import): remove non-functional DOCX/PDF/Confluence import buttons).
Осталось сделать (бэкенд) — ТЕКУЩАЯ ЗАДАЧА: удалить заглушки
Заглушки = EE-require шимы, которые throw/return. Точки правок:
-
apps/server/src/integrations/import/services/import.service.ts- удалить метод
processDocx(~160-194) — EE-require → BadRequestException. - удалить метод
processPdf(~196-230) — то же. - в
importPageудалить ветки диспетчераelse if (.docx)иelse if (.pdf)(~76-91); оставить.mdи.html. - удалить вычисление
pageId(~65-69): после удаления docx/pdf оно всегдаundefined, поэтому убрать и спред...(pageId ? { id: pageId } : {})вinsertPage(~115). uuid7(импорт, стр. 26) — НЕ трогать: используется вimportZip(const fileTaskId = uuid7();, ~320).moduleRef(конструктор ~45, импортModuleRefстр. 31) — ПРОВЕРИТЬ: использовался только в processDocx/processPdf? Если да — убрать параметр конструктора и импорт. (grep был прерван, нужно перепроверить.)
- удалить метод
-
apps/server/src/integrations/import/services/file-import-task.service.ts- удалить ветку
if (fileTask.source === FileImportSource.Confluence) {...}(~118-138) — EE-require с тихимreturn. - после удаления проверить, что импорт
FileImportSourceвсё ещё нужен (Generic/Notion используются на ~109-110 — нужен).
- удалить ветку
-
apps/server/src/integrations/import/import.controller.ts- стр. 54:
validFileExtensions = ['.md', '.html', '.docx', '.pdf']→['.md', '.html']. - стр. ~101-106
sourceMap: убрать записи'.docx': 'docx'и'.pdf': 'pdf'. - стр. 164:
validZipSources = ['generic', 'notion', 'confluence']→['generic', 'notion']. - стр. 167: текст ошибки → "must either be generic or notion".
- стр. 54:
-
apps/server/src/integrations/import/utils/file.utils.ts- стр. 13: убрать
Confluence = 'confluence'из enumFileImportSource(после удаления ветки значение не используется). ПРОВЕРИТЬ grep'ом, что больше нет ссылок наFileImportSource.Confluence.
- стр. 13: убрать
-
apps/server/src/common/features.ts- стр. 9:
CONFLUENCE_IMPORT: 'import:confluence'— ПРОВЕРИТЬ использование по серверу и клиенту; если не используется — убрать.
- стр. 9:
Вне scope (НЕ заглушки — рабочий, но теперь недостижимый код)
isConfluenceImport-обвязка вapps/server/src/integrations/import/services/import-attachment.service.ts(стр. 57, 67, 98, 674, 682, 756, 770) и confluence-стриппинг путей вapps/server/src/integrations/import/utils/import.utils.ts(стр. 45-62). Это реальная логика разбора вложений, а не заглушка. После удаления Confluence-импорта флагisConfluenceImportникогда не станет true → код станет мёртвым, но он внутри shared-сервиса, которым пользуются generic/notion. Удаление — отдельный, более рискованный рефакторинг. Решение: пока оставить (либо отдельной задачей).- Комментарий в миграции
20250521T154949-file_tasks.ts:11"(generic, notion, confluence)" — это просто комментарий, схему/старые миграции не трогаем.
Открытые вопросы (проверить перед/во время реализации; grep был прерван)
moduleRefв import.service.ts — используется только docx/pdf?- Все ссылки на
FileImportSource.Confluence— только удаляемая ветка? CONFLUENCE_IMPORT/import:confluence— где используется (сервер+клиент)?isConfluenceImport=trueставится где-то кроме удалённого EE-модуля?
Процесс
- Режим делегирования (по умолчанию). Бэкенд-правка нетривиальна →
делегировать general-purpose кодеру, затем обязательный прогон
review. - Не коммитить; в конце предложить сообщение коммита. Учесть, что фронтенд- правки уже лежат в рабочем дереве (можно одним коммитом или отдельными).