#!/usr/bin/env python3 """ Dev Workflow - 开发工作流工具 提供 Cross-Debate 统计报告等功能 """ import sys import argparse from pathlib import Path # 添加当前目录到 Python 路径 sys.path.insert(0, str(Path(__file__).parent)) from stats import record_event, get_stats, format_stats_report def cmd_stats(args): """查看统计报告""" print(format_stats_report()) return 0 def cmd_record_event(args): """记录事件""" try: # 构建 metadata metadata = {} if args.metadata: for item in args.metadata: if '=' in item: key, value = item.split('=', 1) metadata[key] = value # 记录事件 record_event( event_type=args.type, mode=args.mode, metadata=metadata, status=args.status ) print(f"✅ 事件已记录: type={args.type}, mode={args.mode}, status={args.status}") return 0 except ValueError as e: print(f"❌ 错误: {e}", file=sys.stderr) return 1 except Exception as e: print(f"❌ 记录事件失败: {e}", file=sys.stderr) return 1 def main(): """主函数""" parser = argparse.ArgumentParser( description='Dev Workflow - 开发工作流工具', formatter_class=argparse.RawDescriptionHelpFormatter, epilog=""" 示例: # 查看统计报告 python3 dev_workflow.py stats # 记录一个 cross 模式的 debate 事件 python3 dev_workflow.py record-event --type debate --mode cross --status success # 记录带元数据的事件 python3 dev_workflow.py record-event --type review --mode normal --metadata files=5 issues=2 """ ) subparsers = parser.add_subparsers(dest='command', help='可用命令') # stats 命令 stats_parser = subparsers.add_parser('stats', help='查看统计报告') stats_parser.set_defaults(func=cmd_stats) # record-event 命令 record_parser = subparsers.add_parser('record-event', help='记录事件') record_parser.add_argument( '--type', required=True, choices=['debate', 'review', 'audit'], help='事件类型 (debate|review|audit)' ) record_parser.add_argument( '--mode', required=True, choices=['cross', 'normal'], help='模式 (cross|normal)' ) record_parser.add_argument( '--status', default='success', choices=['success', 'failed'], help='事件状态 (success|failed),默认为 success' ) record_parser.add_argument( '--metadata', nargs='*', help='元数据,格式为 key=value(可多个)' ) record_parser.set_defaults(func=cmd_record_event) # 解析参数 args = parser.parse_args() # 如果没有指定命令,显示帮助 if not args.command: parser.print_help() return 0 # 执行命令 if hasattr(args, 'func'): return args.func(args) else: parser.print_help() return 0 if __name__ == '__main__': sys.exit(main())