日报系统 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_date | string | 是 | 日报日期(YYYY-MM-DD) |
| content | string | 是 | 日报内容 |
| summary | string | 否 | 工作总结 |
| plan | string | 否 | 明日计划 |
| problems | string | 否 | 遇到的问题 |
| attachments | array | 否 | 附件列表(附件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
查询参数:
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| page | int | 否 | 1 | 页码 |
| page_size | int | 否 | 20 | 每页数量 |
| start_date | string | 否 | - | 开始日期(YYYY-MM-DD) |
| end_date | string | 否 | - | 结束日期(YYYY-MM-DD) |
| user_id | int | 否 | - | 用户ID(管理员使用) |
| status | string | 否 | - | 状态筛选(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}
路径参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 日报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}
路径参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 日报ID |
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 否 | 日报内容 |
| summary | string | 否 | 工作总结 |
| plan | string | 否 | 明日计划 |
| problems | string | 否 | 遇到的问题 |
| attachments | array | 否 | 附件列表(附件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}
路径参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 日报ID |
请求示例:
bash
DELETE /daily-reports/1响应示例:
json
{
"success": true,
"message": "日报删除成功",
"data": null
}注意事项:
- 只能删除自己提交的日报
- 已被管理员查看的日报可能无法删除
获取我的日报
获取当前用户提交的所有日报。
接口地址: GET /daily-reports/my
查询参数:
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| page | int | 否 | 1 | 页码 |
| page_size | int | 否 | 20 | 每页数量 |
| start_date | string | 否 | - | 开始日期(YYYY-MM-DD) |
| end_date | string | 否 | - | 结束日期(YYYY-MM-DD) |
| status | string | 否 | - | 状态筛选(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_date | string | 否 | - | 开始日期(YYYY-MM-DD) |
| end_date | string | 否 | - | 结束日期(YYYY-MM-DD) |
| user_id | int | 否 | - | 用户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"
}字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 日报ID |
| user_id | int | 用户ID |
| username | string | 用户名 |
| user_avatar | string | 用户头像 |
| report_date | string | 日报日期(YYYY-MM-DD) |
| content | string | 日报内容 |
| summary | string | 工作总结 |
| plan | string | 明日计划 |
| problems | string | 遇到的问题 |
| attachments | array | 附件URL列表 |
| status | string | 状态(submitted/draft) |
| created_at | string | 创建时间(ISO 8601格式) |
| updated_at | string | 更新时间(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状态码 | 说明 |
|---|---|---|
| 400 | 400 | 请求参数错误 |
| 401 | 401 | 未授权,请先登录 |
| 403 | 403 | 权限不足 |
| 404 | 404 | 日报不存在 |
| 409 | 409 | 日期重复,该日期已存在日报 |
| 500 | 500 | 服务器内部错误 |
使用示例
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": "开发权限管理模块并进行性能优化"
}'注意事项
- 提交频率:每个用户每天只能提交一份日报
- 内容要求:日报内容应真实反映工作情况,避免重复提交
- 附件管理:附件应通过文件上传接口获取URL后添加到日报中
- 权限控制:用户只能操作自己的日报,管理员可以查看所有日报
- 状态管理:日报支持草稿和已提交两种状态
- 数据统计:系统提供多维度的日报提交统计功能