# Повторное использование в DocumentAutomation | Компонент | Классификация | Решение | |---|---|---| | DTO title block и строки таблицы | REUSE_AFTER_ISOLATION | сделать чистые record-модели | | группировка материалов/элементов | REIMPLEMENT_WITH_SAME_BEHAVIOR | покрыть golden tests, не переносить DataRow-зависимости | | DCF/Plant чтение | USE_AS_REFERENCE_ONLY | отдельный Plant 2019/2026 adapter | | жесткое заполнение `Tables[1]`/`Cells[n]` | REIMPLEMENT_WITH_SAME_BEHAVIOR | schema/slot IDs, диагностика отсутствующих слотов | | копирование шаблона и временный output | REUSE_AFTER_ISOLATION | безопасный atomic output и cleanup | | Word COM cleanup | DO_NOT_REUSE | переписать с STA worker, try/finally и release proxy | | SautinSoft fallback | USE_AS_REFERENCE_ONLY | отдельно подтвердить лицензию и round-trip | | обновление полей | REUSE_AFTER_ISOLATION | адаптер Word/Open XML и тест headers/footers | DocumentAutomation уже имеет смысл использовать как единый document engine, но контракт P_Rec_BOP сначала нужно зафиксировать на golden sample. Существующий P_Rec_BOP-код не переносить автоматически. ## Required DocumentAutomation Skills 1. Legacy DOCX template inventory и безопасная копия шаблона — источник `Worder.Load`, приоритет P0. 2. Table-slot mapping/clone-row — `Worder.AddNewRowToTable`, P0. 3. Header/footer field update — `Worder.UpdateAllFields` и `WriteOutTitleBlock`, P1. 4. Plant DTO → document slots — `ReportWithWorder`, `SetMainTitle`, P0. 5. Word COM STA lifecycle/cleanup — `Worder.Load/SaveAndUnload`, P0. 6. PDF export и deterministic filename — в старом коде PDF не найден, требуется отдельный контракт, P2. 7. Plant project data adapter — `Program`, `PipingElements`, `Welds`, P0.