audit: inventory P_Rec_BOP Plant 3D 2019 sources

This commit is contained in:
codex
2026-07-31 07:34:41 +03:00
parent 25e1def353
commit bbe87611bf
33 changed files with 2149 additions and 0 deletions
@@ -0,0 +1,24 @@
# Повторное использование в 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.