Skip to content

日报系统 API

日报系统API用于管理员工的日报提交、查看和统计,支持员工提交日报和管理员查看统计功能。

基础信息

  • Base URL: http://localhost:8080/api/v1
  • 认证方式: JWT Token
  • Content-Type: application/json
  • 权限要求: 登录用户

通用响应结构

json
{
  "success": true,
  "message": "操作成功",
  "data": {}
}

错误响应结构

json
{
  "success": false,
  "message": "错误信息描述",
  "error": "详细错误信息"
}

创建日报

员工提交新的日报。

接口地址: POST /daily-reports

请求参数:

参数名类型必填说明
report_datestring日报日期(YYYY-MM-DD)
contentstring日报内容
summarystring工作总结
planstring明日计划
problemsstring遇到的问题
attachmentsarray附件列表(附件URL)

请求示例:

json
{
  "report_date": "2024-01-15",
  "content": "今天完成了用户管理模块的开发,包括用户注册、登录、个人信息修改等功能。\n主要工作内容:\n1. 完成了用户注册接口的开发\n2. 实现了JWT登录认证\n3. 添加了个人信息修改功能\n4. 进行了接口测试和调试",
  "summary": "完成了用户管理模块的核心功能开发",
  "plan": "明天开始开发权限管理模块,包括角色管理和权限分配功能",
  "problems": "在实现JWT认证时遇到了token过期处理的问题,已通过刷新token机制解决",
  "attachments": [
    "https://example.com/attachment1.png",
    "https://example.com/attachment2.pdf"
  ]
}

响应示例:

json
{
  "success": true,
  "message": "日报创建成功",
  "data": {
    "id": 1,
    "user_id": 1,
    "report_date": "2024-01-15",
    "content": "今天完成了用户管理模块的开发...",
    "summary": "完成了用户管理模块的核心功能开发",
    "plan": "明天开始开发权限管理模块",
    "problems": "在实现JWT认证时遇到了token过期处理的问题",
    "attachments": [
      "https://example.com/attachment1.png",
      "https://example.com/attachment2.pdf"
    ],
    "status": "submitted",
    "created_at": "2024-01-15T18:00:00Z",
    "updated_at": "2024-01-15T18:00:00Z"
  }
}

获取日报列表

获取日报列表,支持分页和筛选功能。

接口地址: GET /daily-reports

查询参数:

参数名类型必填默认值说明
pageint1页码
page_sizeint20每页数量
start_datestring-开始日期(YYYY-MM-DD)
end_datestring-结束日期(YYYY-MM-DD)
user_idint-用户ID(管理员使用)
statusstring-状态筛选(submitted/draft)

请求示例:

bash
GET /daily-reports?page=1&page_size=10&start_date=2024-01-01&end_date=2024-01-31

响应示例:

json
{
  "success": true,
  "message": "获取成功",
  "data": {
    "reports": [
      {
        "id": 1,
        "user_id": 1,
        "username": "张三",
        "report_date": "2024-01-15",
        "summary": "完成了用户管理模块的核心功能开发",
        "status": "submitted",
        "created_at": "2024-01-15T18:00:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "page_size": 10,
      "total": 20,
      "pages": 2
    }
  }
}

获取日报详情

获取指定日报的详细信息。

接口地址: GET /daily-reports/{id}

路径参数:

参数名类型说明
idint日报ID

请求示例:

bash
GET /daily-reports/1

响应示例:

json
{
  "success": true,
  "message": "获取成功",
  "data": {
    "id": 1,
    "user_id": 1,
    "username": "张三",
    "user_avatar": "https://example.com/avatar.jpg",
    "report_date": "2024-01-15",
    "content": "今天完成了用户管理模块的开发...",
    "summary": "完成了用户管理模块的核心功能开发",
    "plan": "明天开始开发权限管理模块",
    "problems": "在实现JWT认证时遇到了token过期处理的问题",
    "attachments": [
      "https://example.com/attachment1.png",
      "https://example.com/attachment2.pdf"
    ],
    "status": "submitted",
    "created_at": "2024-01-15T18:00:00Z",
    "updated_at": "2024-01-15T18:00:00Z"
  }
}

更新日报

更新已提交的日报内容。

接口地址: PUT /daily-reports/{id}

路径参数:

参数名类型说明
idint日报ID

请求参数:

参数名类型必填说明
contentstring日报内容
summarystring工作总结
planstring明日计划
problemsstring遇到的问题
attachmentsarray附件列表(附件URL)

请求示例:

json
{
  "summary": "完成了用户管理模块的核心功能开发和初步测试",
  "plan": "明天开始开发权限管理模块,同时进行代码优化",
  "problems": "已解决JWT认证问题,发现了性能优化空间"
}

响应示例:

json
{
  "success": true,
  "message": "日报更新成功",
  "data": {
    "id": 1,
    "user_id": 1,
    "report_date": "2024-01-15",
    "content": "今天完成了用户管理模块的开发...",
    "summary": "完成了用户管理模块的核心功能开发和初步测试",
    "plan": "明天开始开发权限管理模块,同时进行代码优化",
    "problems": "已解决JWT认证问题,发现了性能优化空间",
    "status": "submitted",
    "created_at": "2024-01-15T18:00:00Z",
    "updated_at": "2024-01-15T19:00:00Z"
  }
}

删除日报

删除指定的日报。

接口地址: DELETE /daily-reports/{id}

路径参数:

参数名类型说明
idint日报ID

请求示例:

bash
DELETE /daily-reports/1

响应示例:

json
{
  "success": true,
  "message": "日报删除成功",
  "data": null
}

注意事项:

  • 只能删除自己提交的日报
  • 已被管理员查看的日报可能无法删除

获取我的日报

获取当前用户提交的所有日报。

接口地址: GET /daily-reports/my

查询参数:

参数名类型必填默认值说明
pageint1页码
page_sizeint20每页数量
start_datestring-开始日期(YYYY-MM-DD)
end_datestring-结束日期(YYYY-MM-DD)
statusstring-状态筛选(submitted/draft)

请求示例:

bash
GET /daily-reports/my?page=1&page_size=10&status=submitted

响应示例:

json
{
  "success": true,
  "message": "获取成功",
  "data": {
    "reports": [
      {
        "id": 1,
        "report_date": "2024-01-15",
        "summary": "完成了用户管理模块的核心功能开发",
        "status": "submitted",
        "created_at": "2024-01-15T18:00:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "page_size": 10,
      "total": 15,
      "pages": 2
    }
  }
}

获取日报统计

获取日报提交的统计信息。

接口地址: GET /daily-reports/stats

查询参数:

参数名类型必填默认值说明
start_datestring-开始日期(YYYY-MM-DD)
end_datestring-结束日期(YYYY-MM-DD)
user_idint-用户ID(管理员使用)

请求示例:

bash
GET /daily-reports/stats?start_date=2024-01-01&end_date=2024-01-31

响应示例:

json
{
  "success": true,
  "message": "获取成功",
  "data": {
    "total_reports": 20,
    "submitted_reports": 18,
    "draft_reports": 2,
    "submission_rate": 0.9,
    "daily_average": 0.9,
    "recent_trend": [
      {
        "date": "2024-01-15",
        "count": 1
      },
      {
        "date": "2024-01-14",
        "count": 1
      }
    ],
    "user_stats": [
      {
        "user_id": 1,
        "username": "张三",
        "total_reports": 18,
        "submission_rate": 0.9
      }
    ]
  }
}

数据模型

DailyReport

日报数据结构。

json
{
  "id": 1,
  "user_id": 1,
  "username": "张三",
  "user_avatar": "https://example.com/avatar.jpg",
  "report_date": "2024-01-15",
  "content": "今天完成了用户管理模块的开发...",
  "summary": "完成了用户管理模块的核心功能开发",
  "plan": "明天开始开发权限管理模块",
  "problems": "在实现JWT认证时遇到了token过期处理的问题",
  "attachments": [
    "https://example.com/attachment1.png"
  ],
  "status": "submitted",
  "created_at": "2024-01-15T18:00:00Z",
  "updated_at": "2024-01-15T18:00:00Z"
}

字段说明:

字段名类型说明
idint日报ID
user_idint用户ID
usernamestring用户名
user_avatarstring用户头像
report_datestring日报日期(YYYY-MM-DD)
contentstring日报内容
summarystring工作总结
planstring明日计划
problemsstring遇到的问题
attachmentsarray附件URL列表
statusstring状态(submitted/draft)
created_atstring创建时间(ISO 8601格式)
updated_atstring更新时间(ISO 8601格式)

CreateDailyReportRequest

创建日报请求结构。

json
{
  "report_date": "2024-01-15",
  "content": "今天完成了用户管理模块的开发...",
  "summary": "完成了用户管理模块的核心功能开发",
  "plan": "明天开始开发权限管理模块",
  "problems": "在实现JWT认证时遇到了token过期处理的问题",
  "attachments": [
    "https://example.com/attachment1.png"
  ]
}

UpdateDailyReportRequest

更新日报请求结构。

json
{
  "content": "更新后的日报内容...",
  "summary": "更新后的工作总结",
  "plan": "更新后的明日计划",
  "problems": "更新后的问题描述",
  "attachments": [
    "https://example.com/new_attachment.png"
  ]
}

DailyReportListResponse

日报列表响应结构。

json
{
  "reports": [
    {
      "id": 1,
      "user_id": 1,
      "username": "张三",
      "report_date": "2024-01-15",
      "summary": "完成了用户管理模块的核心功能开发",
      "status": "submitted",
      "created_at": "2024-01-15T18:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "page_size": 20,
    "total": 20,
    "pages": 1
  }
}

DailyReportStatsResponse

日报统计响应结构。

json
{
  "total_reports": 20,
  "submitted_reports": 18,
  "draft_reports": 2,
  "submission_rate": 0.9,
  "daily_average": 0.9,
  "recent_trend": [
    {
      "date": "2024-01-15",
      "count": 1
    }
  ],
  "user_stats": [
    {
      "user_id": 1,
      "username": "张三",
      "total_reports": 18,
      "submission_rate": 0.9
    }
  ]
}

错误码说明

错误码HTTP状态码说明
400400请求参数错误
401401未授权,请先登录
403403权限不足
404404日报不存在
409409日期重复,该日期已存在日报
500500服务器内部错误

使用示例

1. 提交完整日报

bash
curl -X POST http://localhost:8080/api/v1/daily-reports \
  -H "Authorization: Bearer your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "report_date": "2024-01-15",
    "content": "今天完成了用户管理模块的开发,包括:\n1. 用户注册接口\n2. JWT登录认证\n3. 个人信息修改\n4. 接口测试调试",
    "summary": "完成用户管理模块核心功能",
    "plan": "明天开发权限管理模块",
    "problems": "JWT token过期处理问题已解决"
  }'

2. 查询本月我的日报

bash
curl -X GET "http://localhost:8080/api/v1/daily-reports/my?start_date=2024-01-01&end_date=2024-01-31" \
  -H "Authorization: Bearer your_token"

3. 获取日报统计信息

bash
curl -X GET "http://localhost:8080/api/v1/daily-reports/stats?start_date=2024-01-01&end_date=2024-01-31" \
  -H "Authorization: Bearer your_token"

4. 更新日报内容

bash
curl -X PUT http://localhost:8080/api/v1/daily-reports/1 \
  -H "Authorization: Bearer your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "summary": "完成用户管理模块开发并进行初步测试",
    "plan": "开发权限管理模块并进行性能优化"
  }'

注意事项

  1. 提交频率:每个用户每天只能提交一份日报
  2. 内容要求:日报内容应真实反映工作情况,避免重复提交
  3. 附件管理:附件应通过文件上传接口获取URL后添加到日报中
  4. 权限控制:用户只能操作自己的日报,管理员可以查看所有日报
  5. 状态管理:日报支持草稿和已提交两种状态
  6. 数据统计:系统提供多维度的日报提交统计功能

相关接口

基于 MIT 许可发布