3efe98e17d
- 添加 stats.py 统计模块 - 添加 dev_workflow.py CLI 工具 - 实现 record_event() 记录事件 - 实现 get_stats() 生成报告 - 支持敏感数据自动过滤 - 使用原子写入保证数据安全 - 添加 README 文档
137 lines
3.3 KiB
Python
137 lines
3.3 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Dev Workflow - 开发工作流工具
|
||
|
||
提供多种工作模式和统计功能
|
||
"""
|
||
|
||
import sys
|
||
import argparse
|
||
from pathlib import Path
|
||
|
||
# 添加当前目录到路径
|
||
sys.path.insert(0, str(Path(__file__).parent))
|
||
|
||
from stats import record_event, get_stats, format_stats_report, clear_stats
|
||
|
||
|
||
def cmd_stats(args):
|
||
"""stats 命令处理函数"""
|
||
# 记录查看统计的事件
|
||
record_event(
|
||
"stats_viewed",
|
||
mode="cross",
|
||
metadata={"filter_mode": args.mode}
|
||
)
|
||
|
||
# 获取统计数据
|
||
stats = get_stats(mode=args.mode)
|
||
|
||
# 输出报告
|
||
report = format_stats_report(stats)
|
||
print(report)
|
||
|
||
return 0
|
||
|
||
|
||
def cmd_record(args):
|
||
"""record 命令处理函数 - 用于测试"""
|
||
success = record_event(
|
||
args.event_type,
|
||
mode=args.mode,
|
||
metadata={"description": args.description} if args.description else None
|
||
)
|
||
|
||
if success:
|
||
print(f"✓ 事件已记录: {args.event_type}")
|
||
return 0
|
||
else:
|
||
print("✗ 记录事件失败")
|
||
return 1
|
||
|
||
|
||
def cmd_clear(args):
|
||
"""clear 命令处理函数"""
|
||
if not args.confirm:
|
||
print("警告: 此操作将清空所有统计数据!")
|
||
print("使用 --confirm 参数确认清空")
|
||
return 1
|
||
|
||
success = clear_stats(confirm=True)
|
||
if success:
|
||
print("✓ 统计数据已清空")
|
||
return 0
|
||
else:
|
||
print("✗ 清空失败")
|
||
return 1
|
||
|
||
|
||
def main():
|
||
"""主函数"""
|
||
parser = argparse.ArgumentParser(
|
||
description="Dev Workflow - 开发工作流工具",
|
||
formatter_class=argparse.RawDescriptionHelpFormatter
|
||
)
|
||
|
||
subparsers = parser.add_subparsers(dest="command", help="可用命令")
|
||
|
||
# stats 命令
|
||
stats_parser = subparsers.add_parser("stats", help="显示统计报告")
|
||
stats_parser.add_argument(
|
||
"--mode", "-m",
|
||
help="筛选特定模式(如 cross, normal)"
|
||
)
|
||
stats_parser.set_defaults(func=cmd_stats)
|
||
|
||
# record 命令(用于测试)
|
||
record_parser = subparsers.add_parser("record", help="记录事件(测试用)")
|
||
record_parser.add_argument(
|
||
"event_type",
|
||
help="事件类型"
|
||
)
|
||
record_parser.add_argument(
|
||
"--mode", "-m",
|
||
default="cross",
|
||
help="工作模式(默认: cross)"
|
||
)
|
||
record_parser.add_argument(
|
||
"--description", "-d",
|
||
help="事件描述"
|
||
)
|
||
record_parser.set_defaults(func=cmd_record)
|
||
|
||
# clear 命令
|
||
clear_parser = subparsers.add_parser("clear", help="清空统计数据")
|
||
clear_parser.add_argument(
|
||
"--confirm",
|
||
action="store_true",
|
||
help="确认清空"
|
||
)
|
||
clear_parser.set_defaults(func=cmd_clear)
|
||
|
||
# 解析参数
|
||
args = parser.parse_args()
|
||
|
||
# 如果没有指定命令,默认显示 stats
|
||
if not args.command:
|
||
args.command = "stats"
|
||
args.func = cmd_stats
|
||
args.mode = None
|
||
|
||
# 执行命令
|
||
try:
|
||
return args.func(args)
|
||
except AttributeError:
|
||
parser.print_help()
|
||
return 1
|
||
except KeyboardInterrupt:
|
||
print("\n操作已取消")
|
||
return 130
|
||
except Exception as e:
|
||
print(f"错误: {e}", file=sys.stderr)
|
||
return 1
|
||
|
||
|
||
if __name__ == "__main__":
|
||
sys.exit(main())
|