feat: 添加多格式报告导出和浏览器打开功能
📝 功能说明
本 PR 为 code996 添加了强大的报告导出和分享功能。
✨ 新增功能
1. 多格式报告导出 (--format / -f)
支持导出为 5 种精美格式:
| 格式 | 特点 | 适用场景 |
|---|---|---|
| 📄 TXT | Unicode 艺术边框 | 终端查看、日志记录 |
| 📝 Markdown | 表格和徽章 | GitHub/文档分享 |
| 🎨 HTML | 渐变背景、交互卡片 | 浏览器查看、邮件 |
| 🖼️ SVG | 矢量图、可缩放 | 高质量图片 |
| 📸 PNG | 1200x800 位图 | 演示文稿、社交媒体 |
2. 浏览器打开 (--open / -o)
- 自动在系统默认浏览器中打开可视化分析链接
- 跨平台支持(macOS/Windows/Linux)
- 使用 `open-web-browser` 包保证兼容性
3. Vercel URL 生成
- 每次分析完成自动生成包含完整数据的可视化链接
- URL 包含时间范围、提交数据、格式参数
- 终端友好显示,方便手动复制
🎨 样式优化
HTML 报告
- 紫色渐变背景(#667eea → #764ba2)
- 玻璃态效果(backdrop-filter)
- 交互式卡片布局,悬停动画
- 响应式设计,支持移动端
- 根据 996 指数显示不同颜色
Markdown 报告
- 使用表格展示核心指标
- 根据分数自动显示相应 Emoji
- 分层信息展示(核心指标/工作分布/加班分析)
- GitHub 风格,完美渲染
TXT 报告
- Unicode 艺术边框(╔═╗ ║ ╚═╝)
- Emoji 图标分类信息
- 清晰的分层结构
- 终端友好显示
SVG/PNG 报告
- 1200x800 高分辨率
- 渐变背景和投影效果
- 信息可视化展示
- 适合演示和分享
📦 技术实现
依赖更新
- ✅ 新增 `[email protected]` - 跨平台浏览器打开
- ✅ 添加 TypeScript 类型声明
代码结构
src/
├── cli/
│ ├── index.ts # 新增 --format 和 --open 参数
│ └── commands/
│ ├── analyze.ts # 集成导出和浏览器打开
│ └── report/
│ └── exporter.ts # 美化所有输出模板
├── utils/
│ └── url-generator.ts # URL 生成和浏览器打开
└── __tests__/
├── exporter.test.ts # 导出功能测试
└── url-generator.test.ts # URL 生成测试
测试覆盖
- ✅ 21 个测试用例全部通过
- ✅ url-generator: 9 个测试
- ✅ exporter: 12 个测试
- ✅ 覆盖所有格式和边界情况
📖 使用示例
# 基础导出
code996 -f html # 导出为精美的 HTML 报告
code996 -f md # 导出为 Markdown 格式
code996 -f png # 导出为 PNG 图片
# 自动打开浏览器
code996 --open # 分析并在浏览器打开
code996 -f html -o # 导出 HTML 并打开浏览器
# 组合使用
code996 -y 2024 -f html -o # 分析2024年,导出并打开
code996 trend -f png # 趋势分析导出为图片
code996 --self -f md -o # 分析自己的数据并分享
📄 文档更新
- ✅ 更新 README 添加新功能说明
- ✅ 添加使用示例和效果预览
- ✅ 更新帮助文档
✅ 测试结果
PASS src/__tests__/url-generator.test.ts
URL Generator
generateVercelUrl
✓ 应该生成包含时间范围的 URL
✓ 应该正确编码星期数据
✓ 应该正确编码小时数据
✓ 应该包含 format 参数
✓ 应该使用默认 format 为 txt
✓ 应该处理空的时间范围
✓ 应该支持不同的 format 类型
printVercelUrl
✓ 应该打印 URL
✓ 应该包含提示信息
PASS src/__tests__/exporter.test.ts
Report Exporter
✓ 12 个测试全部通过
Test Suites: 2 passed, 2 total
Tests: 21 passed, 21 total
🔍 变更文件
- `src/cli/index.ts` - 添加 --format 和 --open 命令行参数
- `src/cli/commands/analyze.ts` - 集成导出和浏览器打开功能
- `src/cli/commands/report/exporter.ts` - 美化所有输出模板
- `src/utils/url-generator.ts` - 优化使用 open-web-browser
- `src/types/open-web-browser.d.ts` - 添加类型声明
- `package.json` - 添加 open-web-browser 依赖
- `README.md` - 更新文档说明
- `src/tests/exporter.test.ts` - 添加导出功能测试
- `src/tests/url-generator.test.ts` - 添加 URL 生成测试
📸 效果预览
生成的报告文件保存在当前工作目录:
- `report.txt` - 文本报告(Unicode 艺术边框)
- `report.md` - Markdown 报告(表格和 Emoji)
- `report.html` - HTML 网页(渐变背景、交互卡片)
- `report.svg` - SVG 矢量图(高质量可缩放)
- `report.png` - PNG 图片(1200x800)
特别说明
- ✅ 所有测试已通过,代码质量有保障
- ✅ 跨平台兼容,支持 macOS/Windows/Linux
- ✅ 向后兼容,不影响现有功能
- ✅ 代码已编译成功,可以安全合并
- ✅ 遵循项目现有代码规范
感谢您审阅此 PR!如有任何问题或建议,请随时提出。🙏
你的导出功能很棒!我是计划支持导出多格式的。
不过有个不幸的消息,你现在参考的代码已经很落后了,实际上目前的主要代码在dev分支,dev分支已经有很多新功能了,预计在周五晚上会有一波合并(实际上这周到下周每天还会大量频繁更新,建议等频繁更新结束后再重新评估提交PR)
另外关于打开为网页功能,我是准备基于 https://github.com/hellodigua/code996-web 这个项目继续做的,到时候可能会有一波代码合并。
嗯……
什么样的情况和场景下会需要导出多格式
html是大概率要做的,报告展示的好看点是个强需求,另外txt/md的报告也需要,可能需要作为留档存在,其他的需求其实没那么强
html是大概率要做的,报告展示的好看点是个强需求,另外txt/md的报告也需要,可能需要作为留档存在,其他的需求其实没那么强
LGTM
html是大概率要做的,报告展示的好看点是个强需求,另外txt/md的报告也需要,可能需要作为留档存在,其他的需求其实没那么强
png 和 svg 一般的项目报告和年终总结也许需要。我是考虑到基于报告化,和实用性。