Files
iAOP/docs/_check_network_doc.py

57 lines
1.6 KiB
Python

# -*- coding: utf-8 -*-
"""网络拓扑与隔离策略文档(docs/网络拓扑与隔离策略.md)一致性检查。
检查项:
1. 必备章节齐全(拓扑模型 / 隔离策略 / 通信矩阵 / 现场勘查清单 / 落地检查表);
2. 只读/不反控红线关键词存在(PRD 5.1 / 9 章安全-网络);
3. 通信矩阵包含「禁止」反向行(写寄存器拦截);
4. 引用文件路径存在。
用法:python _check_network_doc.py
"""
import os
import sys
HERE = os.path.dirname(os.path.abspath(__file__))
DOC_PATH = os.path.join(HERE, "网络拓扑与隔离策略.md")
REQUIRED_SECTIONS = [
"## 2. 三网拓扑模型",
"## 3. 各网段职责与设备",
"## 4. 隔离策略",
"## 5. 通信矩阵",
"## 6. 现场勘查清单",
"## 7. 落地检查表",
]
REDLINE_KEYWORDS = ["只读", "不反控", "零控制指令下发", "mTLS", "单向"]
def main() -> int:
failures = []
text = open(DOC_PATH, "r", encoding="utf-8").read()
for sec in REQUIRED_SECTIONS:
if sec not in text:
failures.append(f"缺少必备章节:{sec}")
for kw in REDLINE_KEYWORDS:
if kw not in text:
failures.append(f"缺少红线关键词:{kw}")
# 通信矩阵需含「禁止」写寄存器的反向拦截行
if "**禁止**" not in text:
failures.append("通信矩阵缺少『禁止』写寄存器拦截行")
if failures:
print("FAIL")
for f in failures:
print(" -", f)
return 1
print("OK: 章节/红线关键词/通信矩阵校验通过")
return 0
if __name__ == "__main__":
sys.exit(main())