feat: 添加 Cross 模式统计报告功能
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Dev Workflow CLI
|
||||
|
||||
开发工作流命令行工具,包含 Cross 模式统计报告功能。
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# 添加当前目录到路径
|
||||
sys.path.insert(0, str(Path(__file__).parent))
|
||||
|
||||
from stats import record_event, get_stats, format_stats_report
|
||||
|
||||
|
||||
def cmd_stats(args):
|
||||
"""显示统计报告"""
|
||||
stats = get_stats()
|
||||
report = format_stats_report(stats)
|
||||
print(report)
|
||||
|
||||
|
||||
def cmd_record_event(args):
|
||||
"""记录一个事件"""
|
||||
# 构建 metadata
|
||||
metadata = {}
|
||||
if args.metadata:
|
||||
for item in args.metadata:
|
||||
if "=" in item:
|
||||
key, value = item.split("=", 1)
|
||||
metadata[key] = value
|
||||
|
||||
success = record_event(
|
||||
event_type=args.type,
|
||||
mode=args.mode,
|
||||
metadata=metadata if metadata else None,
|
||||
status=args.status
|
||||
)
|
||||
|
||||
if success:
|
||||
print(f"✅ 事件记录成功: type={args.type}, mode={args.mode}, status={args.status}")
|
||||
else:
|
||||
print(f"❌ 事件记录失败")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def cmd_clear_stats(args):
|
||||
"""清除统计数据(谨慎使用)"""
|
||||
from stats import STATS_FILE
|
||||
import os
|
||||
|
||||
if STATS_FILE.exists():
|
||||
if args.force or input("确认清除所有统计数据? [y/N]: ").lower() == "y":
|
||||
os.remove(STATS_FILE)
|
||||
print("✅ 统计数据已清除")
|
||||
else:
|
||||
print("操作已取消")
|
||||
else:
|
||||
print("统计数据文件不存在")
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Dev Workflow - 开发工作流工具",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
epilog="""
|
||||
示例:
|
||||
# 查看统计报告
|
||||
python3 dev_workflow.py stats
|
||||
|
||||
# 记录一个 Cross 模式辩论事件
|
||||
python3 dev_workflow.py record-event --type debate --mode cross
|
||||
|
||||
# 记录一个失败的事件(带元数据)
|
||||
python3 dev_workflow.py record-event --type review --mode normal --status failed --metadata pr_id=123
|
||||
|
||||
# 清除统计数据
|
||||
python3 dev_workflow.py clear-stats --force
|
||||
"""
|
||||
)
|
||||
|
||||
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", "-t",
|
||||
required=True,
|
||||
choices=["debate", "review", "audit"],
|
||||
help="事件类型: debate(辩论), review(评审), audit(审计)"
|
||||
)
|
||||
record_parser.add_argument(
|
||||
"--mode", "-m",
|
||||
required=True,
|
||||
choices=["cross", "normal"],
|
||||
help="运行模式: cross 或 normal"
|
||||
)
|
||||
record_parser.add_argument(
|
||||
"--status", "-s",
|
||||
default="success",
|
||||
choices=["success", "failed"],
|
||||
help="事件状态 (默认: success)"
|
||||
)
|
||||
record_parser.add_argument(
|
||||
"--metadata",
|
||||
nargs="*",
|
||||
help="元数据,格式: key=value key2=value2"
|
||||
)
|
||||
record_parser.set_defaults(func=cmd_record_event)
|
||||
|
||||
# clear-stats 命令
|
||||
clear_parser = subparsers.add_parser("clear-stats", help="清除统计数据")
|
||||
clear_parser.add_argument("--force", "-f", action="store_true", help="强制清除,不询问")
|
||||
clear_parser.set_defaults(func=cmd_clear_stats)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.command is None:
|
||||
parser.print_help()
|
||||
sys.exit(0)
|
||||
|
||||
args.func(args)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user