manage_cases.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. """异常 Case 管理 CLI。"""
  2. import argparse
  3. from defect_analysis.cases import create_root_cause_case, list_cases, update_case_status
  4. def main():
  5. parser = argparse.ArgumentParser(description="管理缺陷根因异常 Case")
  6. subparsers = parser.add_subparsers(dest="command", required=True)
  7. create_parser = subparsers.add_parser("create", help="创建 Case")
  8. create_parser.add_argument("--db", default="defect_analysis.db")
  9. create_parser.add_argument("--title", required=True)
  10. create_parser.add_argument("--candidate-type", required=True)
  11. create_parser.add_argument("--candidate-value", required=True)
  12. create_parser.add_argument("--defect-type", default="")
  13. create_parser.add_argument("--panel-zone", default="")
  14. create_parser.add_argument("--owner", default="")
  15. create_parser.add_argument("--created-by", default="system")
  16. create_parser.add_argument("--recommendation", default="")
  17. update_parser = subparsers.add_parser("update", help="更新 Case 状态")
  18. update_parser.add_argument("--db", default="defect_analysis.db")
  19. update_parser.add_argument("--case-id", type=int, required=True)
  20. update_parser.add_argument("--status", required=True)
  21. update_parser.add_argument("--actor", default="system")
  22. update_parser.add_argument("--note", default="")
  23. list_parser = subparsers.add_parser("list", help="列出 Case")
  24. list_parser.add_argument("--db", default="defect_analysis.db")
  25. list_parser.add_argument("--status")
  26. args = parser.parse_args()
  27. if args.command == "create":
  28. case_id = create_root_cause_case(
  29. args.db,
  30. title=args.title,
  31. candidate_type=args.candidate_type,
  32. candidate_value=args.candidate_value,
  33. defect_type=args.defect_type,
  34. panel_zone=args.panel_zone,
  35. owner=args.owner,
  36. created_by=args.created_by,
  37. recommendation=args.recommendation,
  38. )
  39. print(f"已创建 Case: {case_id}")
  40. elif args.command == "update":
  41. update_case_status(
  42. args.db,
  43. case_id=args.case_id,
  44. status=args.status,
  45. actor=args.actor,
  46. note=args.note,
  47. )
  48. print(f"已更新 Case {args.case_id} 状态为 {args.status}")
  49. elif args.command == "list":
  50. cases = list_cases(args.db, status=args.status)
  51. if cases.empty:
  52. print("暂无 Case")
  53. else:
  54. print(cases.to_string(index=False))
  55. if __name__ == "__main__":
  56. main()