"""异常 Case 管理 CLI。""" import argparse from defect_analysis.cases import create_root_cause_case, list_cases, update_case_status def main(): parser = argparse.ArgumentParser(description="管理缺陷根因异常 Case") subparsers = parser.add_subparsers(dest="command", required=True) create_parser = subparsers.add_parser("create", help="创建 Case") create_parser.add_argument("--db", default="defect_analysis.db") create_parser.add_argument("--title", required=True) create_parser.add_argument("--candidate-type", required=True) create_parser.add_argument("--candidate-value", required=True) create_parser.add_argument("--defect-type", default="") create_parser.add_argument("--panel-zone", default="") create_parser.add_argument("--owner", default="") create_parser.add_argument("--created-by", default="system") create_parser.add_argument("--recommendation", default="") update_parser = subparsers.add_parser("update", help="更新 Case 状态") update_parser.add_argument("--db", default="defect_analysis.db") update_parser.add_argument("--case-id", type=int, required=True) update_parser.add_argument("--status", required=True) update_parser.add_argument("--actor", default="system") update_parser.add_argument("--note", default="") list_parser = subparsers.add_parser("list", help="列出 Case") list_parser.add_argument("--db", default="defect_analysis.db") list_parser.add_argument("--status") args = parser.parse_args() if args.command == "create": case_id = create_root_cause_case( args.db, title=args.title, candidate_type=args.candidate_type, candidate_value=args.candidate_value, defect_type=args.defect_type, panel_zone=args.panel_zone, owner=args.owner, created_by=args.created_by, recommendation=args.recommendation, ) print(f"已创建 Case: {case_id}") elif args.command == "update": update_case_status( args.db, case_id=args.case_id, status=args.status, actor=args.actor, note=args.note, ) print(f"已更新 Case {args.case_id} 状态为 {args.status}") elif args.command == "list": cases = list_cases(args.db, status=args.status) if cases.empty: print("暂无 Case") else: print(cases.to_string(index=False)) if __name__ == "__main__": main()