---
name: standard-file-parsing
description: "标准参考文件读取与核心约束自动提取 — 10项基准数据提取规则（sopBlueprint/costStructureTree/businessRulesIndex/versionInheritance/templateBlueprint/roleBlueprint/chapterBlueprint/namingConvention/metricBlueprint/versionBaseline）、标准参考摘要JSON输出格式。"
version: 1.1.1
author: MG-01 SOP编排专家
category: 文件处理
internal: true
triggers:
 - 标准文件解析
 - standard file parsing
 - 约束提取
 - blueprint提取
keywords:
 - standard
 - file
 - parsing
 - blueprint
 - 标准
 - 解析
 - 提取
---

# standard-file-parsing — 标准文件读取与解析

## 触发条件

由 MG-01 SOP编排专家通过 `linkedSkillNames` 自动注入。在 workflow 执行阶段全程可用。

## 核心使命

标准参考文件读取与核心约束自动提取 — 10项基准数据提取规则（sopBlueprint/costStructureTree/businessRulesIndex/versionInheritance/templateBlueprint/roleBlueprint/chapterBlueprint/namingConvention/metricBlueprint/versionBaseline）、标准参考摘要JSON输出格式。

## 详细规则

🚨🚨 **Phase -2: 标准文件读取·自动发现与解析（空路径容错· 为强制约束提取 — 必须在Phase -1之前执行）** 🚨🚨

**在开始任何格式决策之前，先判断标准参考文件路径是否有效，若有效则自动提取核心约束**：

0. 🚨 **首先检查标准参考文件路径是否为空**（容错机制）：
 - 如 `{{标准参考文件路径}}` 为空字符串、null、"无"、"默认"、"default" 或用户未提供 → 🚫 **直接跳过对比
 - 输出 `⏭️ 标准参考文件路径为空，跳过对比，严格按照金标准示例格式生成` 后进入Phase -1
 - 🚫 **禁止尝试读取不存在的文件**：路径为空时禁止拼接任何文件路径
 - 如路径非空 → 继续执行步骤1

1. 检查标准参考文件是否存在：
 - 模板标准：`{{标准参考文件路径}}/模板文件/HY-G-{流程代码}-TMP-001 {模板名称}（V{版本}）.md`
 - SOP标准：`{{标准参考文件路径}}/HY-G-{流程代码}-SOP-001 {SOP名称}（V{版本}）.md`
2. 如存在，**完整读取**模板标准文件（确认：标题→信息表→模板正文→使用说明→变更记录的完整格式）
3. 如存在，**至少读取前50行**SOP标准文件（确认：标题→`## 1. 文档信息`→表格元信息→阿拉伯数字章节的完整格式）
4. 在聊天界面输出`📖 已读取标准文件，格式已确认`后进入Phase -1
5. 如路径非空但文件不存在，输出`⏳ 标准参考文件路径非空但文件不存在，将严格按照金标准示例格式生成`后进入Phase -1

🚨 **步骤6：标准参考核心约束自动提取** 🚨

当标准参考文件路径非空且文件存在时，**自动提取**以下核心约束（通用提取规则，不硬编码任何特定流程内容）：

a. **SOP清单基准（sopBlueprint）提取**：
 - 从标准参考的总纲/SOP-000文件中提取SOP清单（通常位于 §6.3 SOP清单 或类似章节）
 - 提取每个SOP的：编号(code)、名称(name)、适用范围(scope)、关联模板数量(templateCount)
 - 格式：[{"code": "SOP-001", "name": "{标准名称}", "scope": "{适用范围}", "templateCount": N}, ...]

b. **成本结构树（costStructureTree）提取**：
 - 从标准参考的总纲中查找成本结构/定价模型定义（通常位于 §8 质控标准/业务规则 或附录）
 - 提取每个成本类型：代码(code)、定义(definition)、计算公式(formula)、阈值约束(threshold)
 - 格式：[{"code": "A", "definition": "直接人力成本", "formula": "∑各角色工时×单价", "threshold": "不可突破"}, ...]
 - 如无成本结构定义 → 置为空数组[]，_metadata.extractionWarnings 记录

c. **业务规则索引（businessRulesIndex）提取**：
 - 从标准参考的总纲中提取核心业务规则编号和摘要
 - 规则分类：成本校验(C-*)、例外处理(E-*)、混合业务(H-*)、审批逆流程(R-*)、特殊场景(S-*)、循环工作流化(L-*)等
 - 格式：[{"ruleId": "C-1", "category": "成本校验", "summary": "{规则摘要}", "relatedSops": ["SOP-003", "SOP-004"]}, ...]

d. **版本继承链（versionInheritance）提取**：
 - 从标准参考中提取版本基准：总纲版本号、操作性SOP版本号、模板版本号
 - 格式：{"sop000Version": "V{N}", "operationalSopVersion": "V{N}", "templateVersion": "V{N}", "ruleSopVersion": "V{N}"}

📌 **必须写入** `{知识库路径}/循环轮次/标准参考摘要.json`：
```json
{
 "standardReferenceExists": true,
 "sourcePath": "{{标准参考文件路径}}",
 "sopBlueprint": [...],
 "costStructureTree": [...],
 "businessRulesIndex": [...],
 "versionInheritance": {...},
 "_metadata": { "extractedAt": "{timestamp}", "warnings": [] }
}
```

📌 如标准参考文件不存在或路径为空：
```json
{
 "standardReferenceExists": false,
 "sopBlueprint": [],
 "costStructureTree": [],
 "businessRulesIndex": [],
 "versionInheritance": {},
 "_metadata": { "warnings": ["标准参考文件路径为空或文件不存在，降级到自动推导模式"] }
}
```

🚫 **禁止跳过此步骤**：即使之前已读取过，每次执行Q1生成时都必须重新读取标准文件，防止格式记忆漂移。

🚨 **步骤6e~6i：标准参考扩展约束自动提取** 🚨

在步骤6a~6d（sopBlueprint/costStructureTree/businessRulesIndex/versionInheritance）提取完成后，继续提取以下5项扩展约束：

e. **模板清单基准（templateBlueprint）提取**：
 - 从标准参考的模板文件目录中扫描所有模板文件（`*TMP-*.md` 或 `模板文件/` 目录下）
 - 提取每个模板的：编号(code)、名称(name)、类型(type: 表单类/报告类/审批类/配置类)、关联SOP(relatedSop)、版本号(version)
 - 格式：[{"code": "TMP-001", "name": "{标准模板名称}", "type": "表单类", "relatedSop": "SOP-003", "version": "V{N}"}, ...]
 - 📌 同时提取模板编号登记表的完整内容（如存在）
 - 🚫 禁止从SOP文档中反推模板清单，必须以标准参考的实际模板文件为准

f. **角色体系基准（roleBlueprint）提取**：
 - 从标准参考的总纲/SOP-000 §5 角色与职责 中提取完整角色体系
 - 提取每个角色的：代码(code)、标准名称(standardName)、岗位职责(responsibilities)、RACI标准分配(raciStandard)
 - 格式：[{"code": "AR-01", "standardName": "{标准角色名}", "responsibilities": ["{职责1}", "{职责2}"], "raciStandard": {"R": ["{R职责}"], "A": ["{A职责}"], "C": ["{C职责}"], "I": ["{I职责}"]}}, ...]
 - 🚫 禁止简化为仅 code→name 映射，必须包含职责描述和RACI标准分配
 - 📌 如标准参考中角色数量与知识库中角色数量不一致，以标准参考为准

g. **章节结构基准（chapterBlueprint）提取**：
 - 从标准参考的 SOP-000 总纲中提取标准章节结构（不是从Q1生成的SOP-000中提取！）
 - 提取每章的：编号(chapterNumber)、标题(title)、是否必填(required)、子章节列表(subChapters)
 - 格式：[{"chapterNumber": 1, "title": "文档信息", "required": true, "subChapters": []}, {"chapterNumber": 6, "title": "流程架构", "required": true, "subChapters": ["6.1 流程阶段总览", "6.1.2 流程全景图", "6.3 SOP清单"]}, ...]
 - 🚫 禁止从Q1生成的SOP文档中提取章节结构，必须从标准参考SOP-000中提取
 - 📌 此基准用于Step 5.5校验每个SOP的章节结构是否符合标准参考

h. **命名规范基准（namingConvention）提取**：
 - 从标准参考的文件名模式中提取命名规范
 - 提取：SOP文件命名模式(sopPattern)、模板文件命名模式(tmpPattern)、版本号格式(versionPattern)
 - 格式：{"sopPattern": "HY-G-{流程代码}-SOP-{序号} {名称}（V{版本}）.md", "tmpPattern": "HY-G-{流程代码}-TMP-{序号} {名称}（V{版本}）.md", "versionPattern": "V{主版本}.{次版本}"}
 - 📌 此基准用于Step 2c-PLUS精确匹配时校验文件命名一致性

j. **度量指标基准（metricBlueprint）提取**：
 - 从标准参考的所有SOP文件中扫描§10度量指标章节
 - 提取每个度量指标的：编号(code)、名称(name)、计算公式(formula)、目标值(target)、数据来源(source)、监控频率(frequency)、所属SOP(relatedSop)
 - 格式：[{"code": "M-01", "name": "{指标名称}", "formula": "{公式}", "target": "{目标值}", "source": "{数据来源}", "frequency": "{监控频率}", "relatedSop": "SOP-001"}, ...]
 - 同时提取KPI清单（如标准参考中存在）：[{"code": "KPI-01", "name": "{KPI名称}", "formula": "{公式}", "target": "{目标值}", "supportingMetrics": ["M-01", "M-03"]}, ...]
 - 🚫 如无标准参考 → 在SOP-000生成时动态构建metricBlueprint（基于流程复杂度推导KPI和度量指标）
 - 📌 此基准用于Step 4生成时分配全局唯一的度量指标编号

i. **版本基准增强（versionBaseline 扩展 ）**：
 - 在的versionInheritance基础上，增加每个SOP和模板的独立版本号基准
 - 格式：{"sopVersions": {"SOP-000": "", "SOP-001": "V6.0", ...}, "tmpVersions": {"TMP-001": "V2.0", ...}, "ruleSopVersion": "V{N}"}
 - 🚫 禁止所有文件使用统一的V1.0，必须继承标准参考中各文件的独立版本号

📌 **更新标准参考摘要.json**：将步骤6e~6i的提取结果追加写入 `{知识库路径}/循环轮次/标准参考摘要.json`：
```json
{
 "standardReferenceExists": true,
 "sourcePath": "{{标准参考文件路径}}",
 "sopBlueprint": [...],
 "costStructureTree": [...],
 "businessRulesIndex": [...],
 "versionInheritance": {...},
 "templateBlueprint": [...],
 "roleBlueprint": [...],
 "chapterBlueprint": [...],
 "namingConvention": {...},
 "metricBlueprint": [...],
 "versionBaseline": {"sopVersions": {...}, "tmpVersions": {...}},
 "_metadata": { "extractedAt": "{timestamp}", "warnings": [], "version": "" }
}
```

🚫 **禁止凭记忆生成格式**：必须以实际读取的标准文件为准，而非依赖训练数据中的格式记忆。

🚫 **禁止在路径为空时尝试读取文件**：路径为空时直接跳过，禁止拼接无效路径。

---

## 🆕 步骤 6k：全局术语注册表提取

> 与 sop-generation-rules V1.4.1 的 C-02 防御指令对齐。

**无论标准参考文件是否存在，都必须构建全局术语注册表**。

### 提取来源优先级

| 优先级 | 来源 | 提取内容 |
|:------:|:-----|:---------|
| P0 | 标准参考文件（如存在） | 术语、角色、模板的权威定义 |
| P1 | 岗位职能手册 | 角色代码↔名称↔部门↔职责映射 |
| P2 | 服务类目手册 | 业务线定义、服务分类 |
| P3 | LLM 推导（仅当 P0~P2 均无数据时） | 标注 `⚠️ 待确认` |

### 提取规则

#### 6k-1 业务线术语提取
```
从服务类目手册中提取：
- 扫描总纲文件（如 HY-G-SRV-M-001）中的业务线/服务分类定义
- 提取每类服务的：代码(code)、英文全称(full_en)、中文名称(full_cn)、简称(abbr)
- 格式：
 {
 "C": { "full_en": "Contract Research", "full_cn": "注册临床", "abbr": "C类" },
 "R": { "full_en": "Real-World Study", "full_cn": "真实世界研究", "abbr": "R类" },
 ...
 }
```

#### 6k-2 角色体系提取（含 🆕 外部角色）
```
从岗位职能手册中提取：
a. 内部角色：
 - 扫描组织手册和岗位说明书
 - 提取每个角色的：代码(code)、名称(name)、部门(dept)、类型(type)
 - 类型分类：执行/支持/管理/审批

b. 外部角色：
 - EXT-01 客户（甲方）：从流程映射表中识别"客户"触点
 - EXT-02 合作伙伴：从流程映射表中识别"合作方/CRO/CDMO"触点
 - EXT-03 监管机构：从合规相关文档中识别"NMPA/卫健委/伦理委员会"
 - 每个外部角色必须含：code, name, org_type, desc, interfaces[], touchpoints[]
```

#### 6k-3 模板编号映射提取
```
从服务类目手册和岗位职能手册中提取：
- 扫描所有提及的表单/模板/报告名称
- 分配模板编号：HY-G-{流程代码}-TMP-{NNN}
- 提取每个模板的：code, name, relatedSop, version
- 版本号规则：首轮生成统一为 V1.0，后续从物理文件标题行更新
```

### 输出格式

📌 **必须写入** `{知识库路径}/循环轮次/全局注册表.json`：

```json
{
 "version": "V2.0",
 "processName": "{流程名称}",
 "lastUpdated": "{YYYY-MM-DD}",
 "terminology": {
 "businessLines": {
 "C": { "full_en": "...", "full_cn": "...", "abbr": "...", "sop_ref": "..." },
 ...
 },
 "abbreviations": {
 "LTC": "Lead to Cash",
 ...
 }
 },
 "roles": {
 "internal": [
 { "code": "AR-01", "name": "...", "dept": "...", "type": "执行" },
 ...
 ],
 "external": [
 {
 "code": "EXT-01",
 "name": "客户（甲方）",
 "org_type": "医药企业 / 医疗机构",
 "desc": "需求提出方、方案确认方、验收方",
 "interfaces": ["AR-01", "CSR-01"],
 "touchpoints": ["SOP-001 线索接触", "SOP-002 需求调研", ...]
 },
 { "code": "EXT-02", "name": "合作伙伴", ... },
 { "code": "EXT-03", "name": "监管机构", ... }
 ]
 },
 "templates": [
 { "code": "HY-G-LTC-TMP-001", "name": "...", "sop": "SOP-001", "version": "V1.0" },
 ...
 ],
 "validationRules": {
 "CV-1": "§9.2版本号 = 物理文件标题版本号",
 "CV-2": "§7模板名 = §9.2模板名",
 "CV-3": "登记表版本号 = §9.2版本号",
 "CV-4": "登记表模板名 = §9.2模板名",
 "CV-5": "全局注册表模板编号 = §9.2编号",
 "CV-6": "外部角色在RACI矩阵中有出现",
 "CV-7": "所有EX-NNN例外有量化触发条件",
 "CV-8": "所有>500字操作指引已拆分",
 "CV-9": "业务线英文名全文一致（从注册表比对）",
 "CV-10": "质量自评总分 ≥ 70"
 }
}
```

🚫 **禁止跳过此步骤**：即使没有标准参考文件，也必须从岗位职能手册和服务类目手册中推导全局注册表。
🚫 **禁止在后续生成中自行推导术语/角色/模板名称**：必须以全局注册表为唯一权威源。
