Files
gitmost/docs/backlog/remove-broken-import-formats.md
vvzvlad 5d8860e47b docs(backlog): clean up backlog documentation
Remove outdated process sections from several backlog markdown files and add new backlog items for AI chat step limits, endpoint status config, and API key field UI improvements.
2026-06-18 20:02:01 +03:00

6.0 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.tsx
  • M apps/client/src/features/page/components/page-import-modal.tsx

Предложенное сообщение коммита для фронтенд-части уже сформулировано (refactor(import): remove non-functional DOCX/PDF/Confluence import buttons).

Осталось сделать (бэкенд) — ТЕКУЩАЯ ЗАДАЧА: удалить заглушки

Заглушки = EE-require шимы, которые throw/return. Точки правок:

  1. 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 был прерван, нужно перепроверить.)
  2. 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 — нужен).
  3. 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".
  4. apps/server/src/integrations/import/utils/file.utils.ts

    • стр. 13: убрать Confluence = 'confluence' из enum FileImportSource (после удаления ветки значение не используется). ПРОВЕРИТЬ grep'ом, что больше нет ссылок на FileImportSource.Confluence.
  5. apps/server/src/common/features.ts

    • стр. 9: CONFLUENCE_IMPORT: 'import:confluence' — ПРОВЕРИТЬ использование по серверу и клиенту; если не используется — убрать.

Вне 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-модуля?