32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
"""分析历史干预文件,归纳设备枚举和 code 到下发 domain 的映射。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
from pathlib import Path
|
|
|
|
from intervention_common import DEFAULT_EXACT_SOURCE, DEFAULT_REGEX_SOURCE, build_source_summary, json_dumps
|
|
|
|
|
|
def main() -> int:
|
|
parser = argparse.ArgumentParser(description="分析历史干预 TSV")
|
|
parser.add_argument("--exact-source", default=str(DEFAULT_EXACT_SOURCE), help="单句精确干预 TSV 路径")
|
|
parser.add_argument("--regex-source", default=str(DEFAULT_REGEX_SOURCE), help="正则干预 TSV 路径")
|
|
parser.add_argument("--top-mapping", type=int, default=30, help="输出前 N 个 code-domain 映射")
|
|
args = parser.parse_args()
|
|
|
|
summary = build_source_summary(Path(args.exact_source), Path(args.regex_source))
|
|
mapping_items = sorted(
|
|
summary["code_domain_mapping"].items(),
|
|
key=lambda item: item[1]["count"],
|
|
reverse=True,
|
|
)
|
|
summary["code_domain_mapping"] = dict(mapping_items[: args.top_mapping])
|
|
print(json_dumps(summary))
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|