feature/textextract-package-2026-09-29
dev
KTD1:材料解析回归独立能力。
KTD1 third step: material parsing returns to its own capability. - ExtractTextWithAnchors + docx/anchor helpers move from squad/extract.go to internal/textextract (pure stdlib, no workflowdef dep) - squad/extract.go keeps only ExtractAdvisorBriefing (squad domain logic) - callers updated: squad context builders, bizdev materials, server chat_document_reader, materialindex pipeline - reverse dependency materialindex -> squad eliminated (KTD1 explicit goal) - module-boundaries.yaml: textextract declared + 4 edges - verified: build/vet clean, arch green, textextract/squad/materialindex/ bizdev tests green; server pre-existing env-dependent failure unchanged (issue #2, fails with and without this change)
squad -> workspace import eliminated; physical workspace refs stay product-side per KTD1. Arch edge removed from allowlist.
KTD1 fourth step: - squad.Options.TaskPreparer + TaskPreparation (Attachment + Backfills + MirrorTemplateToOutput); squad stays sole writer of its workspace files - CDO quote calc/xlsx/backfill implementation moves to bizdev (quote_preparer.go); squad/quote_backfill.go relocated to bizdev - arch path rule enforced the boundary: bizdev may not name/write output.md; mirroring decided squad-side via flag - squad -> quote import eliminated; engine.go delegations now local - verified: build/vet/arch green, squad+bizdev short tests pass
三步解耦批准:textextract 抽包、workspace 死代码移除、quote 经 TaskPreparer 归 Core(arch path 规则实测有效)。
No dependencies set.
The note is not visible to the blocked user.
KTD1:材料解析回归独立能力。
三步解耦批准:textextract 抽包、workspace 死代码移除、quote 经 TaskPreparer 归 Core(arch path 规则实测有效)。