# 方案：批量转换时，模板处理复用/链接优化 (Symlink Strategy)

## 1. 核心目标
解决批量转换时的“文件复制风暴”问题。目前每次生成 PDF，程序都会把巨大的模板目录完整复制一遍，既慢又伤硬盘。我们的目标是：能借用的绝不复制。

## 2. 核心策略：以“软链”代“复制”
在 macOS/Linux 系统上，我们可以创建一个“影子”文件（软链接），它指向原始模板，但不出真实占空间。
- **理想情况**：瞬间创建链接，速度提升 100 倍以上。
- **保底方案**：如果系统不允许创建链接（如权限问题），自动降级为老式的“复制模式”，保证功能永远可用。

## 3. 实现逻辑说明 (伪代码)

我们主要改造“准备工作目录”这一步。

### 3.1 核心算法：智能链接 / 复制
```text
函数 LinkOrCopy (源路径, 目标路径):
    如果 源路径 是 文件夹:
        尝试:
            建立指向源文件夹的软链接 (Symlink)
            记录 "创建了链接" (用于后续清理)
        失败 (如权限拒绝):
            执行标准文件夹复制 (CopyTree)
            记录 "复制了文件夹"
    
    如果 源路径 是 文件:
        尝试:
            建立指向源文件的软链接
            记录 "创建了链接"
        失败:
            执行标准文件复制 (Copy)
            记录 "复制了文件"
```

### 3.2 工作流改造
```text
过程 运行Pandoc转换 (输入文件, 模板路径, ...):
    
    // 1. 准备阶段
    如果 是目录式模板:
        遍历 模板目录 下的每一个项目 (文件或子目录):
            调用 LinkOrCopy(项目, 工作目录/项目名)
            将产生的新路径加入 清理列表
            
    否则 (单文件模板):
        调用 LinkOrCopy(模板文件, 工作目录/文件名)
        将产生的新路径加入 清理列表

    // 2. 执行阶段 (保持不变)
    运行 Pandoc 命令...

    // 3. 收尾阶段
    对于 清理列表 中的每一项:
        如果 是软链接:
            直接解绑 (Unlink) // 极快，不删源文件
        如果 是实体文件/目录:
            执行标准删除
```

## 4. 验证要点
1.  **链接有效性**：生成的临时目录下，应该是带箭头的小图标（链接），而不是实体文件。
2.  **只读安全**：确保 Pandoc 只读取不修改模板（Mark2PDF 逻辑本身就不修改模板），所以多个任务共享一个模板源是安全的。
3.  **异常测试**：手动模拟 `symlink` 失败的情况，确保程序能自动切换回复制模式，不崩溃。
