#!/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())
