---
name: daily-report
description: 根据 git 提交记录生成工作日报，支持指定日期查询和智能归类。当用户说「生成今天的日报」「生成昨天的日报」时使用。
metadata:
  category: 知识与记录
  tagline: "从 git 提交记录生成工作日报，按项目自动归类"
  example: "生成今天的日报"
---

# 工作日报生成

根据 git 提交记录，生成结构化的工作日报。

## 步骤

### 第一步：解析日期参数

根据用户输入确定查询日期：

- 无参数：默认为**今天**
- 具体日期格式：`05-13` → 当年 5 月 13 日；`2026-05-13` → 2026 年 5 月 13 日
- 自然语言：`昨天` → 今天减 1 天；`前天` → 今天减 2 天

将解析结果转换为具体的 `YYYY-MM-DD` 格式日期，记为 `$DATE`。下一天记为 `$NEXT_DATE`。

### 第二步：提示用户确认日报格式

向用户展示默认日报格式模板，请用户确认或修改：

```markdown
## {YYYYMMDD}-工作日报&明日计划

### 今天工作总结

1. {按功能模块归类的工作内容，每条用中文顿号或逗号连接相关细节}

### 明日计划

1.
```

询问用户："以上是默认日报格式，是否需要修改？直接确认将使用此格式生成日报。"

等待用户回复后再继续。

### 第三步：查询 git 提交记录

执行以下命令获取指定日期的提交记录：

```bash
# 获取提交列表（含完整 hash、时间、消息）
git log --since="$DATE 00:00:00" --until="$NEXT_DATE 00:00:00" --author="$(git config user.name)" --format="%H %ai %s" --all
```

对于每个提交 hash，查看其文件变更范围以便归类：

```bash
# 查看单个提交的变更文件统计
git diff-tree --no-commit-id --stat -r <hash>
```

### 第四步：智能归类与过滤

根据提交记录进行归类处理：

**过滤规则**（以下提交不纳入日报）：

- `chore: record journal` 类纯管理记录
- `chore(task): archive` 类归档操作
- Merge commit（消息以 `Merge` 开头的提交）
- 其他明显无业务意义的提交

**归类规则**（根据变更文件路径和 commit message 判断）：

- `aieda-ui/` 或前端相关路径 → 前端
- `api-server/` 或 `agent-worker/` → 后端
- `push-gateway/` 或 `tool-gateway/` → 网关/基础设施
- `docker`、`nginx`、部署相关 → 部署/运维
- `docs`、`README`、文档相关 → 文档
- `trellis`、任务管理相关 → 项目管理
- 不确定时，根据 commit message 中的 scope 判断

**合并规则**：

- 同一模块的多条相关提交合并为一条工作内容
- 合并时用顿号或逗号连接细节
- 保持每条描述简洁但信息完整

### 第五步：生成日报

按用户确认的格式生成日报，注意：

- 日期标题中的日期格式为 `YYYYMMDD`（如 `20260513`）
- 工作总结编号使用 markdown 标准编号格式：`1.` `2.` `3.`
- 每条工作内容按模块归类，相关提交合并描述
- 明日计划部分留空，仅保留 `1.` 供用户自行填写
- 如果当天无提交，输出提示："当天没有找到提交记录。"

将生成的日报直接输出，用户可复制使用。

## 注意事项

- 只查询当前 git 用户的提交（`--author` 过滤）
- 查询范围覆盖所有分支（`--all`）
- 日报内容使用中文
- 工作总结描述应侧重"做了什么"而非技术细节
