Files

59 lines
1.9 KiB
Python
Raw Permalink Normal View History

# -*- coding: utf-8 -*-
"""LIMS/质检接口字段清单(docs/LIMS质检接口字段清单.md)一致性检查。
检查项:
1. 文档必备章节齐全(对接信息 / 批次主数据 / 质量指标字段 / 推送频率分级);
2. qualityTag 命名约定与 PRD 5.3 工艺模板示例一致(LIMS.Ti_purity);
3. pushFrequency 分级枚举完整(per_batch / per_shift / scheduled / realtime / manual)。
用法:python _check_lims_doc.py
"""
import os
import re
import sys
HERE = os.path.dirname(os.path.abspath(__file__))
DOC_PATH = os.path.join(HERE, "LIMS质检接口字段清单.md")
REQUIRED_SECTIONS = [
"## 2. LIMS / 质检系统对接信息",
"## 3. 批次与样品主数据字段",
"## 4. 质量指标字段清单",
"## 6. 推送频率分级",
]
PUSH_FREQ = {"per_batch", "per_shift", "scheduled", "realtime", "manual"}
def main() -> int:
failures = []
text = open(DOC_PATH, "r", encoding="utf-8").read()
# 1) 必备章节
for sec in REQUIRED_SECTIONS:
if sec not in text:
failures.append(f"缺少必备章节:{sec}")
# 2) qualityTag 命名约定与 PRD 5.3 一致
if "LIMS.Ti_purity" not in text:
failures.append("缺少 qualityTag 示例 LIMS.Ti_purity(PRD 5.3 对齐)")
if "`LIMS.<指标标识>`" not in text:
failures.append("缺少 qualityTag 命名约定 `LIMS.<指标标识>`")
# 3) pushFrequency 枚举完整(从文档表格行抽取枚举值)
declared = set(re.findall(r"\b(per_batch|per_shift|scheduled|realtime|manual)\b", text))
if declared != PUSH_FREQ:
failures.append(f"pushFrequency 枚举不完整:{sorted(declared)} != {sorted(PUSH_FREQ)}")
if failures:
print("FAIL")
for f in failures:
print(" -", f)
return 1
print("OK: 章节/qualityTag 命名/pushFrequency 枚举校验通过")
return 0
if __name__ == "__main__":
sys.exit(main())