多用户协作 · 项目管理 · Agent 集成 · 云端同步
基于 Cloudflare Pages + D1 构建的工作记录平台
按标签分列的看板式布局,支持日期导航、拖拽排序、Chart.js 统计图表
独立用户账户,每人有自己的标签体系,管理员可切换查看所有用户
按项目维度聚合统计工作量,柱状图 + 饼图 + 明细表可视化呈现
API Token 认证,Agent 可自动记录工作、查询报表、生成日报周报
响应式设计,手机上也能流畅使用,标签卡片自动切换为纵向排列
D1 持久化 Token,Cookie 30天有效,密码 SHA-256 加盐哈希存储
admin / 000000+ 添加工作+ 新标签 添加,点击列头 × 删除📊 项目 进入项目管理页面本系统提供完整的 Agent API,AI 助手(如 WorkBuddy、Claude、ChatGPT 等)可以通过 API Token 认证自动记录工作、查询数据。
| 场景 | Agent 做什么 | 使用的 API |
|---|---|---|
| 记录工作 | 用户说"记录一下今天做了XXX",Agent 自动写入 | POST /api/agent/logs |
| 写个人日报 | 查询当天工作内容,AI 整理成日报格式 | GET /api/report?type=personal&period=today |
| 写个人周报 | 查询本周工作内容,AI 汇总分析生成周报 | GET /api/report?type=personal&period=week |
| 写项目日报 | 查询项目当日所有成员工作,生成项目日报 | GET /api/report?type=project&period=today&project_id=N |
| 写项目周报 | 查询项目本周所有成员工作,汇总分析 | GET /api/report?type=project&period=week&project_id=N |
有两种方式获取 Token:
HTTPPOST /api/agent/auth
Content-Type: application/json
{}
→ 返回: { "success": true, "user": { "id": 3, "username": "agent_xxxx", "api_token": "abc123..." } }
首次调用自动创建 Agent 专用账户,默认密码 000000,后续可登录网页修改。
所有 API 基地址:https://work-diary-site.pages.dev
认证方式:请求头 Authorization: Bearer <api_token>(Agent 接口)或 Cookie wd_session=<api_token>(Web 接口)
自动创建新用户(不传参数)或登录已有用户。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| username | string | 否 | 用户名,不传则自动创建 |
| password | string | 否 | 密码,自动创建时为 000000 |
响应示例:
{
"success": true,
"user": {
"id": 3,
"username": "agent_mpj52yvm",
"password": "000000",
"api_token": "50cbc1af236578d6c219ee762c6f7c7c6e236c8722417ae1"
}
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| date | string | 是 | 日期,格式 YYYY-MM-DD |
| tag | string | 是 | 标签名称 |
| content | string | 是 | 工作内容 |
| time | string | 否 | 时间,格式 HH:MM,默认当前时间 |
| duration | string | 否 | 时长,如 "2h"、"1h30m" |
响应示例:
{
"success": true,
"id": 28,
"user_id": 3,
"username": "agent_mpj52yvm"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | number | 否 | 每页条数,默认 50 |
| offset | number | 否 | 偏移量,默认 0 |
响应示例:
{
"logs": [
{ "id": 28, "date": "2026-05-24", "tag": "ai运营师", "content": "...", "time": "10:00", "duration": "6h" }
],
"total": 1
}
统一报表查询接口,支持按项目/个人查询今日/本周/自定义时间段的工作内容。Agent 通过此接口获取数据生成日报、周报。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | project 按项目查询 / personal 按个人查询 |
| period | string | 否 | today(默认) / week / custom |
| project_id | number | 条件 | type=project 时必填 |
| username | string | 否 | type=personal 时指定用户,不填则查当前认证用户 |
| start_date | string | 条件 | period=custom 时必填,格式 YYYY-MM-DD |
| end_date | string | 条件 | period=custom 时必填,格式 YYYY-MM-DD |
| 场景 | 请求 |
|---|---|
| 个人日报 | GET /api/report?type=personal&period=today |
| 个人周报 | GET /api/report?type=personal&period=week |
| 项目日报 | GET /api/report?type=project&period=today&project_id=2 |
| 项目周报 | GET /api/report?type=project&period=week&project_id=2 |
| 自定义范围 | GET /api/report?type=personal&period=custom&start_date=2026-05-01&end_date=2026-05-15 |
{
"type": "project",
"period": "week",
"range": { "start": "2026-05-18", "end": "2026-05-24" },
"summary": { "totalMin": 360, "totalHours": 6, "recordCount": 1 },
"project": { "id": 2, "name": "云南交投ai运营", "tags": ["ai运营师"] },
"byUser": [
{ "username": "agent_mpj52yvm", "displayName": "...", "totalMin": 360, "recordCount": 1 }
],
"byDate": [
{ "date": "2026-05-24", "totalMin": 360,
"records": [{ "id": 28, "tag": "...", "content": "...", "time": "10:00", "duration": "6h" }]
}
],
"records": [ ... ]
}
{
"type": "personal",
"period": "today",
"range": { "start": "2026-05-24", "end": "2026-05-24" },
"summary": { "totalMin": 360, "totalHours": 6, "recordCount": 1 },
"person": { "userId": 3, "username": "agent_mpj52yvm", "displayName": "..." },
"byTag": [
{ "tag": "ai运营师", "totalMin": 360, "count": 1 }
],
"byDate": [ ... ],
"records": [ ... ]
}
获取所有项目列表,用于查找 project_id。
响应示例:
{
"projects": [
{ "id": 2, "name": "云南交投ai运营", "tags": ["ai运营师","云南交投项目"], "description": null }
]
}
通过 action 字段区分操作类型。
| action | 说明 | 额外参数 |
|---|---|---|
add | 添加记录 | date, tag, content, time(可选), duration(可选) |
update | 更新记录 | id, tag(可选), content(可选), time(可选), duration(可选) |
delete | 删除记录 | id |
add_tag | 添加自定义标签 | tag |
delete_tag | 删除自定义标签 | tag |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/auth/login | 登录(返回 Set-Cookie) |
| GET | /api/auth/profile | 获取当前用户信息 |
| GET | /api/day?date=YYYY-MM-DD | 获取指定日期的记录 |
| GET | /api/days | 获取有记录的日期列表 |
| GET | /api/stats | 获取统计数据 |
| GET | /api/tags?q=关键词 | 模糊搜索标签 |
| GET | /api/projects/[id] | 项目详情(含统计) |
| PUT | /api/projects/[id] | 更新项目 |
| DEL | /api/projects/[id] | 删除项目 |
Skill 是 WorkBuddy / CodeBuddy 平台的扩展插件,安装后 Agent 可以自动完成工作记录、日报周报等任务。
记录工作 即可触发💡 也可以将 ZIP 解压到 ~/.workbuddy/skills/work-diary-v2/ 目录手动安装
| 你说的话 | Agent 做的事 |
|---|---|
| "记录一下今天完成了接口对接" | 选择标签 → 估算时长 → 写入本地+云端 |
| "帮我写今天的日报" | 查询今日工作 → AI 整理成日报格式 |
| "写一下本周周报" | 查询本周工作 → AI 汇总分析生成周报 |
| "看看云南交投项目本周做了什么" | 查询项目周报数据 → AI 生成项目周报 |
| "绑定用户 admin" | 切换到 admin 账户的 API Token |
安装后配置文件位于 ~/.workbuddy/work-diary/config.json:
{
"diary_dir": "~/.workbuddy/work-diary",
"tags": ["日常工作", "项目工作", "其他工作"],
"remind_on_task_complete": true,
"inject_on_summary": true,
"remote": {
"api_url": "https://work-diary-site.pages.dev",
"user_id": null,
"api_token": null,
"auto_sync": true
}
}
首次使用后 user_id 和 api_token 会自动填充。
更多 Skill 插件正在开发中,敬请期待...
计划中:自动日报生成器、项目进度跟踪器、团队工作量分析器
工作日志系统 · Cloudflare Pages + D1 · 2026