feat(dev-workflow): 添加 Cross 模式统计报告功能
- stats.py: record_event, get_stats, format_stats_report - dev_workflow.py: stats 和 record-event CLI 命令 - 安全特性: 文件权限 600, 文件锁, 敏感数据过滤 - .gitignore: 排除数据文件
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
#!/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())
|
||||
Reference in New Issue
Block a user