---
name: sop-pre-generation
description: "SOP预生成管线V2.0 — 双批次执行架构（Batch-A环境校验 + Batch-B规划承诺）。Round 1全量执行，Round 2+缓存跳过。从 MG-01 q1-step-02a 调用，确保SOP生成前的前置校验和承诺锁定完整执行。"
version: 2.0.0
internal: true
trigger: "Phase 1 Q1 SOP文档包生成之前，必须按顺序执行本skill定义的预生成管线"
inputs:
 - knowledgeBasePath: 知识库路径
 - processName: 流程名称
 - sopOutputPath: SOP输出路径
 - standardRefPath: 标准参考文件路径（可选，默认无）
 - currentRound: 当前轮次（Round 1=全量，Round 2+=缓存跳过）
outputs:
 - 知识库充足性评估报告
 - 标准参考摘要.json（标准参考存在时）
 - Phase-1 承诺清单（SOP/模板/登记表数量锁定）
 - 动态超时参数
 - 字段覆盖计划
 - 业务完整性预检结果
 - 预检缓存.json（供 Round 2+ 跳过用）
---

# sop-pre-generation · SOP预生成管线 V2.0

## 触发条件与执行架构

### 🚀 V2.0 双批次执行架构（性能优化核心）

```
Round 1（全量执行）：Batch-A → Batch-B → 写入预检缓存.json
Round 2+（缓存跳过）：检测预检缓存.json → 验证蓝图未变更 → 直接加载缓存
```

**设计原则**：将原 7 个串行子阶段合并为 2 个批次，每批次在**单次 LLM 交互**中完成全部操作（减少 5 次 LLM 往返，节省 ~6-8 分钟）。

### ⚡ Round 2+ 缓存跳过机制

```
if currentRound >= 2 AND {knowledgeBasePath}/循环轮次/预检缓存.json 存在:
 1. 读取预检缓存.json
 2. 验证蓝图锁定标记（blueprintLocked=true）
 3. 验证承诺清单与 SOP蓝图清单.json 一致
 4. 全部一致 → 输出"⚡ Round {N} 缓存命中，跳过预生成管线"→ 直接使用缓存数据
 5. 不一致 → 回退到全量执行（Batch-A + Batch-B）
```

🚫 **Round 1 禁止跳过** — 首轮必须全量执行以建立基线。

---

## Batch-A：环境校验批次（单次交互完成）

> ⚡ **执行要求**：以下 3 个阶段必须在**同一次工具调用序列**中连续完成，禁止拆分为多次独立交互。读取文件后立即判定，不输出中间分析报告（仅在最终输出汇总）。

### A-1：知识库充足性检查（原 Phase -1.5）

- 统计知识库中独立业务环节描述数量
- 统计审批节点描述数量
- 统计支撑流程描述数量
- 计算：`expectMin = 1(总纲) + 业务环节数 + 审批节点数 + 支撑流程数`
- 判定：≥80% ✅充足 | ≥50% ⚠️基本充足 | <50% 🚫阻断
- 🚫 严重不足时立即阻断，禁止继续

### A-2：标准文件读取（原 Phase -2）

- 若标准参考文件路径有效（非"无"/非空/文件存在）：
 - 读取 + 提取 4 组核心约束 + 5 组扩展约束
 - 输出标准参考摘要.json
- 若无效：跳过，后续依赖锚点+知识库
- 📌 完整提取规则参见 `standard-file-parsing` skill

### A-3：路径验证（原 Step 0）

- 验证 `{sopOutputPath}` 目录存在且可写
- 验证 `{knowledgeBasePath}` 目录存在且可写
- 验证 `{knowledgeBasePath}/循环轮次/` 子目录存在
- 验证失败 → 🚫 阻断

### Batch-A 输出格式（一次性输出）

```
━━━ Batch-A 环境校验完成 ━━━
✅ 知识库充足性：{expectMin}个SOP可推导，评级={✅/⚠️/🚫}
✅ 标准参考：{已提取摘要/路径无效跳过}
✅ 路径验证：{sopOutputPath} + {knowledgeBasePath} 可写
→ 进入 Batch-B
```

---

## Batch-B：规划承诺批次（单次交互完成）

> ⚡ **执行要求**：以下 4 个阶段必须在**同一次工具调用序列**中连续完成。承诺清单、超时计算、字段计划、预检清单作为一次性输出，禁止分步交互。

### B-1：承诺清单生成（原 Phase -1）

**承诺清单格式**：
```
📋 生成承诺清单
📂 SOP文件（共{N}个）：
 □ SOP-000: {流程名称}SOP总纲
 □ SOP-001~0XX: {各SOP名称}

📂 模板文件（共{M}个）：
 □ TMP-001~0XX: {各模板名称}

📊 总计：{N}个SOP + {M}个模板 + 1个登记表 = {Total}个文件
```

**规则**：
- 模板编号集中分配，按SOP生成顺序依次分配
- 承诺即契约：实际生成数 < 承诺数 = 严重流程错误
- PHASE GATE C 强制阻断

### B-2：动态超时计算

```
Q1 动态超时 = 25 + (N × 2.0 + M × 0.5) 分钟
Q2 动态超时 = 20 + (N × 0.5) 分钟
Phase 2 动态超时 = 15 + (N × 0.5 + M × 0.3) 分钟
```
- 动态超时为软超时（提醒），平台硬超时**120分钟**兜底（V13.1.0从60min提升，适配V2.0蓝图66文件规模）
- V2.0规模参考：N=33, M=32 → Q1=25+(66+16)=107min（旧公式=86.5min，硬限60min导致频繁超时）

### B-3：字段覆盖计划（原 Step 0.5）

8维度 × 6项 = 48项覆盖计划，写入 `{knowledgeBasePath}/下一步计划.md`

| # | 覆盖维度 | 对应章节 | 数据来源 |
|:-:|:--------|:--------|:---------|
| 1 | 流程概述与范围 | §1-§2 | 服务类目+岗位职能 |
| 2 | 流程阶段划分 | §3 | 岗位流程映射 |
| 3 | 角色职责定义 | §5 | 岗位职能手册 |
| 4 | 操作步骤详述 | §4 | 服务类目目录 |
| 5 | 输入输出文档 | §6 | 服务类目+最佳实践 |
| 6 | 质量检查标准 | §7 | 岗位职能+服务类目 |
| 7 | 异常处理流程 | §8 | 综合分析 |
| 8 | 术语表与缩略语 | §9 | 全部手册 |

### B-4：业务完整性预检（原 Step 0.6）

28项 + 3项全局级预检（C/E/H/L/S/P/R），预检失败不阻断生成（标注 `📌 待业务确认`）。

### Batch-B 输出格式（一次性输出）

```
━━━ Batch-B 规划承诺完成 ━━━
📋 承诺清单：{N}个SOP + {M}个模板 + 1登记表
⏱️ 动态超时：Q1={X}min / Q2={Y}min
📊 字段覆盖：48项计划已写入下一步计划.md
✅ 业务预检：{通过数}/31项通过，{失败数}项标注待确认
→ 预生成管线完成，进入 SOP-000 正文生成
```

---

## 预检缓存写入（Batch-B 完成后立即执行）

将以下数据写入 `{knowledgeBasePath}/循环轮次/预检缓存.json`：

```json
{
 "version": "2.0",
 "round": 1,
 "blueprintLocked": true,
 "commitmentList": { "sopCount": 0, "tmpCount": 0, "total": 0 },
 "dynamicTimeout": { "q1Min": 0, "q2Min": 0 },
 "kbSufficiency": "sufficient|basic|insufficient",
 "standardRefExtracted": false,
 "fieldCoveragePlanWritten": true,
 "preCheckPassRate": 0,
 "timestamp": "ISO8601"
}
```

🚨 Round 2+ 检测到此文件且 blueprintLocked=true → 跳过整个预生成管线。

---

## 执行顺序总结（V2.0 双批次）

```
Round 1：
 Batch-A（单次交互）：A-1知识库校验 + A-2标准文件 + A-3路径验证
 Batch-B（单次交互）：B-1承诺清单 + B-2超时 + B-3字段计划 + B-4预检
 → 写入预检缓存.json

Round 2+：
 检测预检缓存.json → 验证蓝图一致 → 直接加载（跳过全部预生成）
```

🚫 **Batch-A 返回 🚫 阻断时，禁止执行 Batch-B。
🚫 **Round 1 禁止使用缓存跳过。