56 lines
2.2 KiB
Python
56 lines
2.2 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import argparse
|
||
|
|
import sys
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
ROOT_DIR = Path(__file__).resolve().parent.parent
|
||
|
|
sys.path.insert(0, str(ROOT_DIR))
|
||
|
|
|
||
|
|
from app.review_filler import fill_review_docx_from_analysis, write_decisions_json
|
||
|
|
|
||
|
|
|
||
|
|
def build_arg_parser() -> argparse.ArgumentParser:
|
||
|
|
parser = argparse.ArgumentParser(description="Fill Appendix A DOCX review results from an analysis Markdown file.")
|
||
|
|
parser.add_argument("--analysis-md", type=Path, required=True, help="Path to the analysis Markdown file.")
|
||
|
|
parser.add_argument("--review-docx", type=Path, required=True, help="Path to the Appendix A review DOCX file.")
|
||
|
|
parser.add_argument("--output-docx", type=Path, required=True, help="Path for the filled review DOCX file.")
|
||
|
|
parser.add_argument("--output-json", type=Path, help="Optional path for review decision details.")
|
||
|
|
parser.add_argument("--target-heading", help="Optional review table heading filter, such as A.2.")
|
||
|
|
return parser
|
||
|
|
|
||
|
|
|
||
|
|
def main() -> None:
|
||
|
|
args = build_arg_parser().parse_args()
|
||
|
|
result = fill_review_docx_from_analysis(
|
||
|
|
analysis_markdown_path=args.analysis_md,
|
||
|
|
review_docx_path=args.review_docx,
|
||
|
|
output_docx_path=args.output_docx,
|
||
|
|
target_heading=args.target_heading,
|
||
|
|
)
|
||
|
|
if args.output_json:
|
||
|
|
write_decisions_json(result, args.output_json)
|
||
|
|
|
||
|
|
counts: dict[str, int] = {}
|
||
|
|
for decision in result.decisions:
|
||
|
|
counts[decision.result] = counts.get(decision.result, 0) + 1
|
||
|
|
|
||
|
|
print(f"target_heading={result.target_heading}")
|
||
|
|
print(f"decisions={len(result.decisions)}")
|
||
|
|
for result_name in ("通过", "未通过", "不适用"):
|
||
|
|
print(f"{result_name}={counts.get(result_name, 0)}")
|
||
|
|
print(f"output_docx={result.output_docx}")
|
||
|
|
if args.output_json:
|
||
|
|
print(f"output_json={args.output_json}")
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|
||
|
|
|
||
|
|
"""
|
||
|
|
python scripts/fill_review_docx.py --analysis-md test/中央处理机正常模式软件任务书V1_00_094006f6_analysis.md --review-docx test/附录A文档审查.docx --output-docx test/中央处理机正
|
||
|
|
│ 常模式软件任务书V1_00_094006f6_附录A文档审查.docx --output-json test/中央处理机正常模式软件任务书V1_00_094006f6_附录A文档审查.json
|
||
|
|
"""
|
||
|
|
|
||
|
|
|