工作报告生成器 (Work Report Generator)
菜单
当用户发送「菜单」或「帮助」时,输出以下 Markdown 块引用:
> ## 📋 工作报告生成器 v2.2
>
> 📌 报告生成
>
> | 类型 | 简洁版 | 详细版 | 自定义 |
> |------|--------|--------|--------|
> | 日报 | ✅ 已完成+未完成+问题+明日计划 | + 协调事项+工时 | + 自定义字段 |
> | 周报 | ✅ 核心产出+进度+问题+计划 | + KPI指标+风险+学习 | + 自定义字段 |
> | 复盘 | ✅ 目标达成+Keep+Improve+Action | + 5Why根因+经验沉淀+团队反馈 | + 自定义字段 |
>
> 📨 邮件发送 — Outlook / QQ / 163 / Gmail / 126 | SMTP 自动发送 | 支持收件人 / CC / BCC / 附件
>
> 🔧 模板 — 简洁版 | 详细版 | 自定义字段 | 复制模板扩展
>
> ⏰ 触发 — 手动对话 | 每日 18:00 / 每周五 17:00 / 每月末 定时自动
>
> 💡 常用 Query
> - 生成本日日报,简洁版
> - 生成详细周报,发送至 boss@outlook.com
> - 生成 XX 项目复盘报告
> - 把我的工作内容整理成日报
> - 帮我配置每日 18:00 自动发送日报
> - 在周报模板中增加"团队协作"字段
> - 设置每周五自动生成并发送周报,抄送 team@outlook.com
> - 菜单 — 随时查看功能列表和示例
Overview
自动生成结构化的日报、周报和项目复盘报告,支持模板切换、邮件发送和定时自动化。
Workflow
用户输入 → 识别报告类型 → 选择模板 → 收集工作数据 → 生成报告 → 发送邮件(可选)
报告类型与触发
| 报告类型 | 触发词 | 适用场景 |
|---|---|---|
| 日报 | 日报、今日总结、daily report | 每日工作小结 |
| 周报 | 周报、本周总结、weekly report | 周度工作汇报 |
| 项目复盘 | 复盘、回顾、retrospective | 项目/迭代结束总结 |
模板选项
两种风格可选,用户也可自定义字段:
简洁版 — 关键信息摘要,适合快速浏览
详细版 — 完整结构化内容,适合正式汇报
模板文件位于 templates/ 目录:
- daily_simple.md / daily_detailed.md
- weekly_simple.md / weekly_detailed.md
- retrospective_simple.md / retrospective_detailed.md
报告生成流程
Step 1: 确认参数
向用户确认以下信息:
- 报告类型:日报 / 周报 / 复盘
- 模板风格:简洁版 / 详细版 / 自定义(用户可指定额外字段)
- 时间范围:默认为当天/本周/项目周期
- 收件人:是否需要发送邮件,收件人邮箱
- 数据来源:用户直接输入 / 从工作日志读取 / 从指定文件读取
Step 2: 收集工作数据
根据报告类型收集数据:
日报数据项:
- []工作摘要 — 按 【分类】任务名 - 状态 格式列出所有任务
- []今日工作 — 每项工作展开详情(子步骤、代码片段、日志命令、JIRA链接、Confluence文档)
- []今日总结 — 对当天问题的深度分析和根因总结
- []明日计划 — 按 【分类】计划事项 格式列出
周报数据项:
- 本周项目内容(表格:任务类型/任务名称/进度/工作日/工作描述)
- 每项含【背景说明】+【本周工作】+ 相关文档链接
- 项目风险点
- 其他重要事项
- 下周重点工作安排
- 本周总结
周报自动汇总(基于日报)
当用户要求生成周报但未提供具体数据时,自动从本周已生成的日报文件中汇总:
查找规则:
1. 确定本周日期范围(周一到周五)
2. 搜索 outputs/工作日报_YYYY-MM-DD*.md,读取本周所有日报
3. 如果没有找到日报文件,提示用户提供本周工作数据
汇总方法:
1. 遍历所有日报的 []工作摘要 和 []今日工作,提取所有 【分类】任务名 条目
2. 按任务名称去重合并:同一任务在多次日报中出现的,合并为一个条目
3. 计算进度:根据每天的状态变化推断最终进度(已完成/进行中/百分比)
4. 汇总工作日:统计该任务出现在几天日报中
5. 汇总工作内容:合并所有日报中该任务的子步骤和链接
6. 汇总项目风险点:收集各日报中 []今日总结 的问题
7. 汇总下周计划:收集各日报中 []明日计划
示例工作流:
用户:「生成本周周报」
→ 搜索 outputs/工作日报_2026-07-20*.md ~ 工作日报_2026-07-24*.md
→ 找到5份日报,开始汇总
→ 提取所有任务,按名称去重合并
→ 生成周报表格和详情
→ 写入 outputs/工作周报_2026-07-20_0724.md
复盘数据项:
- 项目/迭代概述
- 目标达成情况
- 做得好的(Keep)
- 需要改进的(Improve)
- 问题与根因分析
- 行动计划(Action Items)
- 经验沉淀(可选)
Step 3: 直接生成报告
不要使用 Python 脚本。 模板引擎不如 AI 直接生成灵活可靠。根据选定的报告类型和模板风格,直接输出 Markdown 写入文件。
生成规则:
- 读取
templates/下对应模板文件,了解章节结构和占位变量 - 将用户提供的数据填充到各章节,保持模板格式
- 对于列表和表格数据,直接在 Markdown 内完成循环展开
- 日报输出到
outputs/工作日报_YYYY-MM-DD.md - 周报输出到
outputs/工作周报_起始_结束.md - 复盘输出到
outputs/项目复盘_项目名_YYYY-MM-DD.md
日报格式规范:
# YYYY-MM-DD 工作日报
**姓名:** xxx | **部门:** xxx
[]工作摘要
1. 【分类】任务名 - 状态
...
[]今日工作
1. 【分类】任务名 - 状态
- 子步骤/日志/命令(无序列表)
- JIRA链接
- Confluence链接
...
[]今日总结
1. 问题标题
- 分析点1
- 分析点2
[]明日计划
1. 【分类】计划任务
子任务格式规则:
- 父级任务使用 1. 2. 3. 有序编号
- 子任务/详情统一使用 - 无序列表,避免缩进数字与父级编号混淆导致格式错乱
- 代码片段、日志命令、JIRA/Confluence 链接也使用 - 前缀
周报格式规范:
使用 Markdown 表格,工作描述列内用 <br> 换行:
| 任务类型 | 任务名称 | 进度 | 工作日 | 工作描述 |
|---------|---------|------|--------|---------|
| 版本需求 | xxx | 70% | 1D | **【背景说明】** xxx<br>**【本周工作】**<br>1. item1<br>2. item2<br>**【相关文档】** link |
表格后附各项目详情(背景说明 + 本周工作列表 + JIRA/文档链接)。
周报末尾包含:项目风险点、其他重要事项、下周重点工作安排、本周总结。
简洁版 vs 详细版:
- 简洁版:仅表格 + 风险 + 其他 + 下周 + 总结(各节精简)
- 详细版:完整表格 + 各项目逐项展开详情 + 所有辅助信息
Step 4: 发送邮件(可选)
前置检查 — 必须先执行:
当用户要求发送邮件时,读取配置文件判断是否已配置:
cat ~/.workbuddy/skills/work-report-generator/references/email_config.json 2>/dev/null
判断规则:
- ✅ 配置文件存在 且
sender_email和sender_password不是占位值 → 直接发送 - ❌ 配置文件不存在 / 字段为
your-*占位值 / 环境变量也未设置 → 展示以下配置指南
⚠️ 检测到未配置时,输出以下 Markdown 块引用(一整块引用,不要分段):
> ## ⚠️ 邮件发送未配置
>
> 当前缺少邮件 SMTP 配置,无法发送报告。请完成以下配置:
>
> ### 📌 需要准备的 5 项信息
>
> | 配置项 | 说明 | 示例 |
> |--------|------|------|
> | sender_email | 你的 Outlook 邮箱地址 | marion@outlook.com |
> | sender_password | Outlook 应用密码(非登录密码) | xxxx-xxxx-xxxx-xxxx |
> | sender_name | 发件人显示名称 | Marion |
> | default_recipients | 默认收件人(可选,省去每次输入) | ["manager@company.com"] |
> | default_cc | 默认抄送(可选) | ["team@company.com"] |
>
> ### 📌 如何获取 Outlook 应用密码
>
> 1. 登录 account.microsoft.com/security
> 2. 安全信息 → 高级安全选项 → 应用密码
> 3. 创建新应用密码,复制填入 sender_password
>
> ⚠️ 不要使用邮箱登录密码!必须用应用专用密码。
>
> ### 🚫 企业版 Outlook 不支持自动发送
>
> 如果你的 Outlook 属于企业/组织账号(如 xxx@lenovo.com、xxx@company.com 等),很可能无法通过 SMTP 自动发送,原因包括:
>
> - 企业 IT 已禁用基本身份验证(Basic Auth)
> - 强制启用多因素认证(MFA),不支持应用密码
> - 条件访问策略(Conditional Access)阻止非受信客户端
>
> 确认方法: 登录 account.microsoft.com/security,如果找不到「应用密码」入口,说明企业已禁用此功能。
>
> 替代方案:
>
> | 方案 | 说明 | 推荐度 |
> |------|------|--------|
> | 注册个人 Outlook 邮箱 | 注册免费的 @outlook.com 个人账号,支持应用密码 | ⭐⭐⭐ |
> | 使用 QQ / 163 / Gmail | 个人邮箱均支持授权码,企业策略不受限 | ⭐⭐⭐ |
> | 使用 QQ邮箱 | 国内最常见,授权码获取简单 | ⭐⭐⭐ |
> | 生成报告 + 手动发送 | 报告生成为文件,用户手动通过 Outlook 客户端发送 | ⭐⭐ |
> | 联系企业 IT | 询问是否可为特定账号开通 SMTP 权限 | ⭐ |
>
> ### 📌 其他邮箱获取密码方式
>
> | 邮箱 | 获取路径 |
> |------|---------|
> | QQ邮箱 | 设置 → 账户 → POP3/SMTP 服务 → 开启 → 获取授权码 |
> | 163邮箱 | 设置 → POP3/SMTP/IMAP → 开启 → 新增授权码 |
> | Gmail | 启用两步验证 → 创建应用专用密码 |
>
> ### 📌 两种配置方式(二选一)
>
> 方式 A:配置文件(推荐,支持默认收件人/抄送)
>
> 将以下 JSON 填入 ~/.workbuddy/skills/work-report-generator/references/email_config.json:
>
> json
> {
> "smtp_host": "smtp.office365.com",
> "smtp_port": 587,
> "sender_email": "你的邮箱@outlook.com",
> "sender_password": "你的应用密码",
> "sender_name": "你的名字",
> "encryption": "starttls",
> "default_recipients": ["manager@company.com"],
> "default_cc": ["team@company.com"]
> }
>
>
> 配置后发送邮件一行搞定:python3 scripts/send_email.py --report report.md
>
> 方式 B:环境变量(临时使用)
>
> bash
> export WORKBUDDY_EMAIL_SENDER_EMAIL="你的邮箱@outlook.com"
> export WORKBUDDY_EMAIL_SENDER_PASSWORD="你的应用密码"
> export WORKBUDDY_EMAIL_SENDER_NAME="你的名字"
>
>
> ---
> 需要我帮你创建配置文件吗?告诉我邮箱地址即可。
配置完成后,三种发送方式:
# 方式 A:完整指定(覆盖配置默认值)
python3 scripts/send_email.py \
--report report.md \
--to boss@company.com \
--cc team@company.com \
--subject "工作日报 2026-07-24"
# 方式 B:使用配置默认值(一行搞定)
python3 scripts/send_email.py --report report.md
# 方式 C:混合使用(默认收件人 + 额外抄送)
python3 scripts/send_email.py \
--report report.md \
--cc pm@company.com
SMTP 参数说明:
| 参数 | 必填 | 说明 |
|---|---|---|
smtp_host |
✅ | SMTP 服务器地址 |
smtp_port |
✅ | 端口(587 STARTTLS / 465 SSL) |
sender_email |
✅ | 发件人邮箱 |
sender_password |
✅ | 应用密码/授权码(非登录密码) |
sender_name |
❌ | 发件人显示名称,默认"工作报告" |
encryption |
❌ | starttls / ssl,默认 starttls |
default_recipients |
❌ | 默认收件人列表,避免每次输入 |
default_cc |
❌ | 默认抄送列表 |
⚠️ 安全提醒:不要使用邮箱登录密码,必须使用应用专用密码/授权码。完成后建议 chmod 600 保护配置文件。
定时触发配置
方式一:WorkBuddy 内置自动化
使用 WorkBuddy 的自动化系统创建定时任务。示例:
每日日报(工作日 18:00):
名称为 "每日工作报告生成"
调度:工作日每天 18:00
提示词:"生成本日工作日报,简洁版,发送至 manager@company.com"
每周周报(周五 17:00):
名称为 "每周工作报告生成"
调度:每周五 17:00
提示词:"生成本周工作周报,详细版,发送至 team@company.com"
方式二:手动触发
直接告诉 AI:"生成本日日报,详细版,发送至 xxx@outlook.com"
自定义模板
用户可以通过以下方式自定义模板:
- 新增自定义字段:告诉 AI 需要在模板中增加的字段名称
- 修改现有模板:直接编辑
templates/目录下的.md文件 - 创建新模板风格:复制现有模板修改后,通过
--style参数指定
自定义字段示例:
请生成本周周报,在详细版基础上增加"团队协作情况"和"下周重点目标"两个字段
配置参考
邮件配置指南见 references/email_config.md。
模板变量说明见 references/template_variables.md。