/** * 图片引用路径修正:把 pandoc 写出的图片路径统一转为「相对 MD 文件」的正斜杠路径。 * * 实测 pandoc 行为(gfm writer + --extract-media=DIR): * —— 相对 cwd 的完整路径(HTML 标签) * ![x](DIR/media/rId9.png) —— 同上的 markdown 形态 * 旧版 pandoc 偶发简写 ![x](media/rId9.png) —— 相对 MD 文件所在目录 * 而 MD 文件落在 converted/ 子目录——相对 cwd 的路径从 MD 文件位置解析是错的, * 必须剥掉前缀换成「MD 文件 → assets/extracted」的相对路径。 * Windows 上 join 产出反斜杠,pandoc src 也会带反斜杠(Markdown 转义符,必裂),统一归一化。 */ export declare function fixImageRefs(content: string, mdDir: string, imageDir: string): string; /** * v8.3.386: 提取 .md 文档引用的本地图片到 assets/extracted/(BUG-1 修复) * * 此前 .md 直接导入只做 fixImageRefs(仅处理 pandoc media/ 形态),原始相对路径 * (./order-list.png、assets/x.png)原样保留 → converted 引用断链、图片 0 张。 * 现扫描 markdown/HTML 图片引用:本地存在的文件复制到 imageDir,引用统一改写为 * 「MD 文件 → assets/extracted」的相对路径;外链(http/https/data:)、锚点不动; * 重名文件加 -2/-3 序号;复制失败保持原引用(doc-validator 兜底提示)。 */ export declare function extractLocalImages(content: string, sourceMdDir: string, // 源 MD 文件所在目录(解析相对引用的基准) imageDir: string, // 目标图片目录 assets/extracted mdDir: string): Promise<{ content: string; extracted: number; }>; export declare const PANDOC_FORMAT_MAP: Record; interface Word2SpecOptions { file: string; iter: string; platform?: string; task?: string; files?: string; ai?: boolean; normalize?: boolean; prompt?: boolean; response?: string; classify?: boolean; split?: boolean; translateEn?: string; translateResponse?: string; onDuplicate?: string; } export declare function doc2specCommand(options: Word2SpecOptions): Promise; export interface TitleRename { from: string; to: string; } /** 提取文档标题大纲(含原层级),供 AI 参照重写(导出供测试) */ export declare function buildTitleOutline(content: string): string; /** 解析 AI 返回的标题映射 JSON(容忍 markdown 代码围栏等噪声,导出供测试) */ export declare function parseTitleRenames(text: string): { renames: TitleRename[]; docTitle: string; } | null; /** * CLI 确定性回写标题映射:只替换标题行文字,正文一字不动。 * from 匹配时两侧都剥离章节编号(容忍 AI 带不带编号),同名标题按出现顺序一一对应。 * 未匹配到的 from 记入 skipped(章节原样保留),绝不静默丢章节。 */ export declare function applyTitleRenames(content: string, renames: TitleRename[], docTitle: string): { content: string; applied: number; skipped: string[]; }; interface ScannedUnit { title: string; level: number; startLine: number; endLine: number; sourceSection: string; /** v8.3.228+: 单元类型——feature(页面/业务流程)或 global-rule(跨端业务规则) */ unitType: 'feature' | 'global-rule'; } /** * 将转换后的文档拆分为功能单元,写入 features/ * v8.3.191+: 导出供 run 流水线「切分功能单元」步骤复用(对已转换文档切分,无需 --file) */ export declare function splitDocumentToUnits(iterDir: string, outputPath: string, platformLabel: string, sourceFileName: string, translateEn?: string, translateResponse?: string, onDuplicate?: string, titles?: string[]): Promise; /** * v8.3.334+: 标题过滤——用户指定只切某些标题的章节时,过滤功能单元列表。 * * 匹配语义:归一化(去章节编号前缀/去空白/小写)后双向包含—— * 「预订管理」命中「3.1 预订管理」「预订管理流程」;「预订管理」与「会议预订管理」也命中。 * 返回 kept(保留)/ dropped(被过滤的单元标题)/ unmatched(用户指定但未命中的标题名)。 */ export declare function filterUnitsByTitles(units: ScannedUnit[], titles: string[]): { kept: ScannedUnit[]; dropped: string[]; unmatched: string[]; }; export {}; //# sourceMappingURL=doc2spec.d.ts.map