Epic: #34 · Issue: #42 (F6). Обновлено: ребейз на main (F2 #45, F4 #43) + встроенные вложения PDF.
Что
PDF-контент стал искомым, включая текст встроенных вложений. oo search --content "S1021" --backend own находит PDF-счёт; индекс OnlyOffice
(files_file) не трогаем.
Вывод: PDF исключён настройкой. Решение — вариант c: свой индекс oo_docs_text, наполняемый internal/docpipe; сервер OO не трогаем.
Зафиксировано в docs/elasticsearch.md.
Встроенные вложения
Оцифрованные PDF несут вложения (<doc>.md — текст скана, .yaml/.json —
метаданные, .xml — EN 16931/ZUGFeRD; см. office-assistant/docs/reference/document-metadata.md). TextIndexer вызывает docpipe.ToMarkdownWithAttachments: тело + по секции на
вложение с маркером [attachment: <имя>].
Ребейз: file_facade.go — убран дубликат ProviderPG (main не собирался
после мержа F4+F2); тестовый fakeStore переименован (textFakeStore) —
конфликт с фасадом.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Epic: #34 · Issue: #42 (F6). Обновлено: ребейз на
main(F2 #45, F4 #43) + встроенные вложения PDF.Что
PDF-контент стал искомым, включая текст встроенных вложений.
oo search --content "S1021" --backend ownнаходит PDF-счёт; индекс OnlyOffice(
files_file) не трогаем.Research: почему PDF исключён
В
ONLYOFFICE/CommunityServer:web/core/ASC.Web.Core/Files/FileUtility.cs—CanIndexчитает сервернуюнастройку
files.index.formats(default".pptx|.xlsx|.docx").Products/Files/Core/Search/FilesWrapper.cs—GetDocumentStream*→nullпри
!CanIndex/encrypted/большой файл.ASC.ElasticSearch/Core/WrapperWithDoc.cs+ маппинг — формат-агностичны.Вывод: PDF исключён настройкой. Решение — вариант c: свой индекс
oo_docs_text, наполняемыйinternal/docpipe; сервер OO не трогаем.Зафиксировано в
docs/elasticsearch.md.Встроенные вложения
Оцифрованные PDF несут вложения (
<doc>.md— текст скана,.yaml/.json—метаданные,
.xml— EN 16931/ZUGFeRD; см.office-assistant/docs/reference/document-metadata.md).TextIndexerвызываетdocpipe.ToMarkdownWithAttachments: тело + по секции навложение с маркером
[attachment: <имя>].internal/docpipe/pdfattach.go—ListAttachments(pdfdetach -list),SaveAttachment(-save),JoinWithAttachments,xmlToText(снятие теговдля XML/HTML-вложений), безопасные имена.
.md/.txt/PDF/картинки — штатный docpipe (OCR для сканов);.json/.csv— как текст; нечитаемое — пропускается;
pdfdetachотсутствует — только тело.file_id, upsert идемпотентен.Реализация
file_es_text.go—ESTextIndex:Ensure/Put/Delete/Search(
multi_matchtitle^2+content, фильтры folder/ext, highlight).file_text_index.go—TextIndexer(FileStore.List/Stat/Download→docpipe →
TextIndex; пул воркеров;PlanFolder/PlanFiles).oo index folder|files(--recursive --exts --limit --workers --dry-run),oo search --backend oo|own.ONLYOFFICE_ES_TEXT_INDEX, defaultoo_docs_text).file_facade.go— убран дубликатProviderPG(main не собиралсяпосле мержа F4+F2); тестовый
fakeStoreпереименован (textFakeStore) —конфликт с фасадом.
Тесты
Unit (без сети):
TestESTextSearchRequestShape,TestESTextBulkBody,TestParseESTextResponse,TestNewESTextIndexDefaults,TestESTextConfigFromEnvIndexDefault,TestTextIndexerIndexEntries,TestTextIndexerRecordsExtractionFailure,TestTextIndexerPlanFolder.TestParseAttachmentList,TestParseAttachmentListEmptyAndMalformed,TestSafeAttachmentName,TestJoinWithAttachments,TestJoinWithAttachmentsNoAttachments,TestListAttachmentsWithoutTool,TestXMLToText,TestAttachmentMarkdownFallback,TestToMarkdownWithAttachmentsFixture(реальный pdfdetach+pdftotext),TestToMarkdownWithAttachmentsPlainPDF.TestIndexCommandRegistered,TestIndexSearchBackendFlag,TestSplitList. Все PASS.Integration (
-tags=integration, skip безONLYOFFICE_ES_URL):TestIntegrationESTextIndex,TestIntegrationESTextIndexPDFAttachment(fixture → реальный конвейер → поиск токена только из вложения),
регрессия
TestIntegrationESSearch— PASS live.go build ./...,go vet ./...,go test -race ./...— зелёные.gitleaks — no leaks;
po scan— clean.Live-проверка (индекс
oo_docs_text)Встроенные вложения (реальный OO-файл 21749,
factur-x.xml):oo index files 21749→ маркер[attachment: factur-x.xml]в индексе;DE26330403100827038100из XML → найден--backend own,--backend oo— пусто; тот же OO-файл без вложений — не находился.
Шесть номеров (папки 634/639, 22 PDF; вложений в этих PDF нет):
S1055 → 3591 и 3584 — все найдены по телу (не по вложению);
вложениях).
Не мержу и не закрываю.
7c3a0b8b6eto3cc288d281