/**
* 图片引用路径修正:把 pandoc 写出的图片路径统一转为「相对 MD 文件」的正斜杠路径。
*
* 实测 pandoc 行为(gfm writer + --extract-media=DIR):
*
—— 相对 cwd 的完整路径(HTML 标签)
*  —— 同上的 markdown 形态
* 旧版 pandoc 偶发简写  —— 相对 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