{ "swagger": "2.0", "info": { "title": "任务服务", "version": "1.0.0" }, "basePath": "/", "paths": { "/admin/task/board": { "post": { "tags": [ "任务看板管理" ], "summary": "创建自定义看板", "description": "创建自定义看板,自动添加创建者为看板成员,并创建默认状态列(待办、进行中、已完成)。\n\n**权限**:需管理员登录。", "operationId": "createBoardUsingPOST_1", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "req", "description": "创建看板请求", "required": false, "schema": { "originalRef": "创建看板请求", "$ref": "#/definitions/创建看板请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«看板信息»", "$ref": "#/definitions/统一响应结果«看板信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«看板信息»", "$ref": "#/definitions/统一响应结果«看板信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/board/ws-doc/info": { "get": { "tags": [ "WebSocket 实时推送" ], "summary": "WebSocket 连接说明", "description": "## 连接信息\n\n| 项目 | 值 |\n|------|-------|\n| **连接地址** | `ws://{host}:8092/ws/task` |\n| **协议** | STOMP over WebSocket(SockJS 降级方案) |\n| **跨域** | 允许所有源 (`*`) |\n\n## 订阅频道\n\n| 订阅地址 | 说明 |\n|------------|-------------|\n| `/topic/board/{boardId}` | 订阅指定看板,接收该看板下的实时任务事件 |\n\n## 推送消息格式\n\n```json\n{\n \"event\": \"TASK_CREATED\",\n \"data\": { ... },\n \"timestamp\": 1709539200000\n}\n```\n\n## 事件类型\n\n| 事件 | 说明 | data 内容 |\n|-------|------------|------|\n| TASK_CREATED | 任务创建 | 任务对象 |\n| TASK_UPDATED | 任务更新 | 任务对象 |\n| TASK_DELETED | 任务删除 | 任务ID |\n| TASK_MOVED | 任务移动(状态变更) | 任务对象 |\n| COMMENT_ADDED | 新增评论 | 评论对象 |\n\n## 前端接入示例 (SockJS + STOMP)\n\n```javascript\nimport SockJS from 'sockjs-client'\nimport { Stomp } from '@stomp/stompjs'\n\nconst socket = new SockJS('http://localhost:8092/ws/task')\nconst stompClient = Stomp.over(socket)\n\nstompClient.connect({}, () => {\n stompClient.subscribe('/topic/board/123', (msg) => {\n const { event, data, timestamp } = JSON.parse(msg.body)\n console.log('Event:', event, 'Data:', data)\n })\n})\n```", "operationId": "websocketInfoUsingGET_1", "produces": [ "*/*" ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/board/{boardId}": { "get": { "tags": [ "任务看板管理" ], "summary": "看板详情", "description": "返回看板基本信息(名称、描述、创建者),不含任务数据。查看任务请使用「获取看板任务」接口", "operationId": "getBoardDetailUsingGET_1", "produces": [ "*/*" ], "parameters": [ { "name": "boardId", "in": "path", "description": "看板ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«看板信息»", "$ref": "#/definitions/统一响应结果«看板信息»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«看板信息»", "$ref": "#/definitions/统一响应结果«看板信息»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "put": { "tags": [ "任务看板管理" ], "summary": "更新看板", "description": "更新看板的名称和描述。仅看板创建者或超级管理员可操作。\n\n**权限**:需管理员登录,且为看板创建者或超级管理员。", "operationId": "updateBoardUsingPUT_1", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "boardId", "in": "path", "description": "看板ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "req", "description": "更新看板请求", "required": false, "schema": { "originalRef": "更新看板请求", "$ref": "#/definitions/更新看板请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«看板信息»", "$ref": "#/definitions/统一响应结果«看板信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«看板信息»", "$ref": "#/definitions/统一响应结果«看板信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "任务看板管理" ], "summary": "删除看板", "description": "删除看板及其下所有状态列和任务(级联删除)。仅看板创建者或超级管理员可操作", "operationId": "deleteBoardUsingDELETE_1", "produces": [ "*/*" ], "parameters": [ { "name": "boardId", "in": "path", "description": "看板ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/board/{boardId}/member/{targetAdminId}": { "delete": { "tags": [ "任务看板管理" ], "summary": "移除成员", "description": "从看板中移除指定成员。仅看板创建者或超级管理员可操作,不能移除创建者自己", "operationId": "removeMemberUsingDELETE_1", "produces": [ "*/*" ], "parameters": [ { "name": "boardId", "in": "path", "description": "看板ID", "required": false, "type": "integer", "format": "int64" }, { "name": "targetAdminId", "in": "path", "description": "目标管理员ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/board/{boardId}/members": { "get": { "tags": [ "任务看板管理" ], "summary": "获取看板成员", "description": "返回看板的所有成员列表,包含成员的管理员ID和姓名", "operationId": "getMembersUsingGET_1", "produces": [ "*/*" ], "parameters": [ { "name": "boardId", "in": "path", "description": "看板ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«看板成员信息»»", "$ref": "#/definitions/统一响应结果«List«看板成员信息»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«看板成员信息»»", "$ref": "#/definitions/统一响应结果«List«看板成员信息»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "post": { "tags": [ "任务看板管理" ], "summary": "添加成员", "description": "批量添加管理员为看板成员,成为成员后可以查看看板、创建和操作任务。\n\n**权限**:需管理员登录,且为看板创建者或超级管理员。", "operationId": "addMembersUsingPOST_1", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "boardId", "in": "path", "description": "看板ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "req", "description": "添加成员请求", "required": false, "schema": { "originalRef": "添加成员请求", "$ref": "#/definitions/添加成员请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/board/{boardId}/status": { "post": { "tags": [ "任务看板管理" ], "summary": "创建状态列", "description": "在看板中创建新的状态列(如测试中、待发布等),自动排到末尾。任务通过拖拽在不同状态列间流转。\n\n**权限**:需管理员登录且为看板成员。", "operationId": "createStatusUsingPOST_1", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "boardId", "in": "path", "description": "看板ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "req", "description": "创建状态列请求", "required": false, "schema": { "originalRef": "创建状态请求", "$ref": "#/definitions/创建状态请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«看板状态信息»", "$ref": "#/definitions/统一响应结果«看板状态信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«看板状态信息»", "$ref": "#/definitions/统一响应结果«看板状态信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/board/{boardId}/status/sort": { "put": { "tags": [ "任务看板管理" ], "summary": "状态列排序", "description": "批量更新状态列的排序顺序。传入状态列ID数组,数组下标即为新的排序值。操作完成后通过WebSocket推送STATUS_REORDERED事件", "operationId": "sortStatusesUsingPUT_1", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "boardId", "in": "path", "description": "看板ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "req", "description": "状态列排序请求", "required": false, "schema": { "originalRef": "状态排序请求", "$ref": "#/definitions/状态排序请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/board/{boardId}/statuses": { "get": { "tags": [ "任务看板管理" ], "summary": "获取看板状态列", "description": "返回看板的所有状态列(如待办、进行中、已完成),按排序字段升序排列。拖拽任务到不同状态列实现状态流转", "operationId": "getStatusesUsingGET_1", "produces": [ "*/*" ], "parameters": [ { "name": "boardId", "in": "path", "description": "看板ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«看板状态信息»»", "$ref": "#/definitions/统一响应结果«List«看板状态信息»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«看板状态信息»»", "$ref": "#/definitions/统一响应结果«List«看板状态信息»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/board/{boardId}/tasks": { "get": { "tags": [ "任务管理" ], "summary": "获取看板任务(按状态分组)", "description": "返回看板下所有任务,按状态列分组。支持按优先级(HIGH/MEDIUM/LOW)和负责人筛选,每组内按排序值升序排列\n\n**关联字典**:\n- task_priority:任务优先级(列表筛选+显示)", "operationId": "getBoardTasksUsingGET_1", "produces": [ "*/*" ], "parameters": [ { "name": "assigneeId", "in": "query", "description": "负责人ID", "required": false, "type": "integer", "format": "int64", "allowEmptyValue": false }, { "name": "boardId", "in": "path", "description": "看板ID", "required": false, "type": "integer", "format": "int64" }, { "name": "priority", "in": "query", "description": "优先级", "required": false, "type": "string", "allowEmptyValue": false } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«看板任务分组信息»»", "$ref": "#/definitions/统一响应结果«List«看板任务分组信息»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«看板任务分组信息»»", "$ref": "#/definitions/统一响应结果«List«看板任务分组信息»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task": { "post": { "tags": [ "任务管理" ], "summary": "创建任务", "description": "在指定看板和状态列下创建任务。创建成功后通过WebSocket推送TASK_CREATED事件,并通知被分配的负责人\n\n**关联字典**:\n- task_priority:任务优先级(创建时选择)", "operationId": "createTaskUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "req", "description": "创建任务请求", "required": false, "schema": { "originalRef": "创建任务请求", "$ref": "#/definitions/创建任务请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«任务信息»", "$ref": "#/definitions/统一响应结果«任务信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«任务信息»", "$ref": "#/definitions/统一响应结果«任务信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/boards": { "get": { "tags": [ "任务看板管理" ], "summary": "获取可见看板列表", "description": "返回当前管理员可见的看板列表:超级管理员可见所有看板,普通管理员仅可见自己创建的或作为成员的看板", "operationId": "getBoardsUsingGET", "produces": [ "*/*" ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«看板信息»»", "$ref": "#/definitions/统一响应结果«List«看板信息»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«看板信息»»", "$ref": "#/definitions/统一响应结果«List«看板信息»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/comment/{commentId}": { "delete": { "tags": [ "任务管理" ], "summary": "删除评论", "description": "仅评论作者本人可删除自己的评论,系统自动生成的活动记录不可删除", "operationId": "deleteCommentUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "commentId", "in": "path", "description": "评论ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/status/{statusId}": { "put": { "tags": [ "任务看板管理" ], "summary": "更新状态列", "description": "更新状态列的名称和颜色。\n\n**权限**:需管理员登录且为看板成员。", "operationId": "updateStatusUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "req", "description": "更新状态列请求", "required": false, "schema": { "originalRef": "更新状态请求", "$ref": "#/definitions/更新状态请求" } }, { "name": "statusId", "in": "path", "description": "状态列ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«看板状态信息»", "$ref": "#/definitions/统一响应结果«看板状态信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«看板状态信息»", "$ref": "#/definitions/统一响应结果«看板状态信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "任务看板管理" ], "summary": "删除状态列", "description": "删除看板的状态列。如果状态列下有任务则不允许删除,需先移动或删除任务", "operationId": "deleteStatusUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "statusId", "in": "path", "description": "状态列ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/subtask/{subtaskId}": { "delete": { "tags": [ "任务管理" ], "summary": "删除子任务", "description": "删除指定子任务。\n\n**权限**:需管理员登录且为看板成员。", "operationId": "deleteSubtaskUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "subtaskId", "in": "path", "description": "子任务ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/subtask/{subtaskId}/toggle": { "put": { "tags": [ "任务管理" ], "summary": "切换子任务完成状态", "description": "切换子任务的完成/未完成状态(toggle),完成状态切换会自动记录到任务时间线", "operationId": "toggleSubtaskUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "subtaskId", "in": "path", "description": "子任务ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/{taskId}": { "get": { "tags": [ "任务管理" ], "summary": "任务详情", "description": "返回任务完整信息,包含子任务列表、负责人信息、附件列表等\n\n**关联字典**:\n- task_priority:任务优先级(显示)", "operationId": "getTaskDetailUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "taskId", "in": "path", "description": "任务ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«任务信息»", "$ref": "#/definitions/统一响应结果«任务信息»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«任务信息»", "$ref": "#/definitions/统一响应结果«任务信息»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "put": { "tags": [ "任务管理" ], "summary": "更新任务", "description": "更新任务的标题、描述、优先级、截止日期、负责人等信息。更新后通过WebSocket推送TASK_UPDATED事件,如果修改了负责人则额外通知新负责人。\n\n**权限**:需管理员登录且为看板成员。\n\n**关联字典**:\n- task_priority:任务优先级(编辑时选择)", "operationId": "updateTaskUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "req", "description": "更新任务请求", "required": false, "schema": { "originalRef": "更新任务请求", "$ref": "#/definitions/更新任务请求" } }, { "name": "taskId", "in": "path", "description": "任务ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«任务信息»", "$ref": "#/definitions/统一响应结果«任务信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«任务信息»", "$ref": "#/definitions/统一响应结果«任务信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "任务管理" ], "summary": "删除任务", "description": "删除任务及其所有子任务、评论和时间线记录(级联删除)。删除后通过WebSocket推送TASK_DELETED事件。\n\n**权限**:需管理员登录且为看板成员。", "operationId": "deleteTaskUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "taskId", "in": "path", "description": "任务ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/{taskId}/comment": { "post": { "tags": [ "任务管理" ], "summary": "添加评论", "description": "在任务时间线中添加评论,添加后自动通知任务负责人", "operationId": "addCommentUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "req", "description": "创建评论请求", "required": false, "schema": { "originalRef": "创建评论请求", "$ref": "#/definitions/创建评论请求" } }, { "name": "taskId", "in": "path", "description": "任务ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«时间线条目»", "$ref": "#/definitions/统一响应结果«时间线条目»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«时间线条目»", "$ref": "#/definitions/统一响应结果«时间线条目»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/{taskId}/sort": { "put": { "tags": [ "任务管理" ], "summary": "任务排序", "description": "更新任务在同一状态列内的排序位置,用于拖拽排序", "operationId": "sortTasksUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "req", "description": "任务排序请求", "required": false, "schema": { "originalRef": "任务排序请求", "$ref": "#/definitions/任务排序请求" } }, { "name": "taskId", "in": "path", "description": "任务ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/{taskId}/status": { "put": { "tags": [ "任务管理" ], "summary": "变更任务状态", "description": "将任务移动到指定状态列(拖拽操作),自动记录状态变更到时间线,并通过WebSocket推送TASK_STATUS_CHANGED事件", "operationId": "changeStatusUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "req", "description": "变更状态请求", "required": false, "schema": { "originalRef": "变更任务状态请求", "$ref": "#/definitions/变更任务状态请求" } }, { "name": "taskId", "in": "path", "description": "任务ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/{taskId}/subtask": { "post": { "tags": [ "任务管理" ], "summary": "创建子任务", "description": "在指定任务下创建子任务(待办项),用于拆分任务的执行步骤。子任务默认为未完成状态。\n\n**权限**:需管理员登录且为看板成员。", "operationId": "createSubtaskUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "req", "description": "创建子任务请求", "required": false, "schema": { "originalRef": "创建子任务请求", "$ref": "#/definitions/创建子任务请求" } }, { "name": "taskId", "in": "path", "description": "任务ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«子任务信息»", "$ref": "#/definitions/统一响应结果«子任务信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«子任务信息»", "$ref": "#/definitions/统一响应结果«子任务信息»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/task/{taskId}/timeline": { "get": { "tags": [ "任务管理" ], "summary": "获取任务时间线", "description": "返回任务的完整操作记录,包含评论和系统自动记录的状态变更、人员分配等活动,按时间正序排列", "operationId": "getTimelineUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "taskId", "in": "path", "description": "任务ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«时间线条目»»", "$ref": "#/definitions/统一响应结果«List«时间线条目»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«时间线条目»»", "$ref": "#/definitions/统一响应结果«List«时间线条目»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } } }, "definitions": { "任务信息": { "type": "object", "properties": { "assignees": { "type": "array", "description": "负责人列表", "items": { "originalRef": "负责人信息", "$ref": "#/definitions/负责人信息" } }, "boardId": { "type": "integer", "format": "int64", "description": "看板ID" }, "createdAt": { "type": "string", "format": "date-time", "description": "创建时间" }, "createdBy": { "type": "integer", "format": "int64", "description": "创建人ID" }, "creatorName": { "type": "string", "description": "创建人姓名" }, "description": { "type": "string", "description": "任务描述" }, "dueDate": { "type": "string", "format": "date", "description": "截止日期" }, "overdue": { "type": "boolean", "description": "是否逾期" }, "parentId": { "type": "integer", "format": "int64", "description": "父任务ID" }, "priority": { "type": "string", "description": "优先级: LOW/MEDIUM/HIGH/URGENT" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "statusColor": { "type": "string", "description": "状态颜色" }, "statusId": { "type": "integer", "format": "int64", "description": "状态ID" }, "statusName": { "type": "string", "description": "状态名称" }, "subtaskCompleted": { "type": "integer", "format": "int32", "description": "已完成子任务数" }, "subtaskTotal": { "type": "integer", "format": "int32", "description": "子任务总数" }, "subtasks": { "type": "array", "description": "子任务列表", "items": { "originalRef": "子任务信息", "$ref": "#/definitions/子任务信息" } }, "taskId": { "type": "integer", "format": "int64", "description": "任务ID" }, "title": { "type": "string", "description": "任务标题" }, "updatedAt": { "type": "string", "format": "date-time", "description": "更新时间" } }, "title": "任务信息" }, "创建状态请求": { "type": "object", "required": [ "statusName" ], "properties": { "statusColor": { "type": "string", "example": "#409EFF", "description": "状态颜色" }, "statusName": { "type": "string", "example": "进行中", "description": "状态名称" } }, "title": "创建状态请求" }, "创建看板请求": { "type": "object", "required": [ "boardName" ], "properties": { "boardName": { "type": "string", "example": "产品迭代看板", "description": "看板名称" }, "deptId": { "type": "integer", "format": "int64", "example": 1001, "description": "部门ID" }, "description": { "type": "string", "example": "用于跟踪产品迭代任务", "description": "看板描述" }, "memberIds": { "type": "array", "description": "成员ID列表", "items": { "type": "integer", "format": "int64" } } }, "title": "创建看板请求" }, "子任务信息": { "type": "object", "properties": { "completed": { "type": "boolean", "description": "是否已完成" }, "createdAt": { "type": "string", "format": "date-time", "description": "创建时间" }, "createdBy": { "type": "integer", "format": "int64", "description": "创建人ID" }, "creatorName": { "type": "string", "description": "创建人姓名" }, "taskId": { "type": "integer", "format": "int64", "description": "子任务ID" }, "title": { "type": "string", "description": "子任务标题" } }, "title": "子任务信息" }, "更新看板请求": { "type": "object", "properties": { "boardName": { "type": "string", "example": "产品迭代看板", "description": "看板名称" }, "description": { "type": "string", "example": "用于跟踪产品迭代任务", "description": "看板描述" } }, "title": "更新看板请求" }, "添加成员请求": { "type": "object", "required": [ "adminIds" ], "properties": { "adminIds": { "type": "array", "description": "管理员ID列表", "items": { "type": "integer", "format": "int64" } } }, "title": "添加成员请求" }, "状态排序请求": { "type": "object", "required": [ "statusIds" ], "properties": { "statusIds": { "type": "array", "description": "状态ID列表(按排序顺序)", "items": { "type": "integer", "format": "int64" } } }, "title": "状态排序请求" }, "看板任务分组信息": { "type": "object", "properties": { "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "statusColor": { "type": "string", "description": "状态颜色" }, "statusId": { "type": "integer", "format": "int64", "description": "状态ID" }, "statusName": { "type": "string", "description": "状态名称" }, "tasks": { "type": "array", "description": "该状态下的任务列表", "items": { "originalRef": "任务信息", "$ref": "#/definitions/任务信息" } } }, "title": "看板任务分组信息" }, "看板信息": { "type": "object", "properties": { "boardId": { "type": "integer", "format": "int64", "description": "看板ID" }, "boardName": { "type": "string", "description": "看板名称" }, "boardType": { "type": "string", "description": "看板类型" }, "createdAt": { "type": "string", "format": "date-time", "description": "创建时间" }, "createdBy": { "type": "integer", "format": "int64", "description": "创建人ID" }, "creatorName": { "type": "string", "description": "创建人姓名" }, "deptId": { "type": "integer", "format": "int64", "description": "部门ID" }, "deptName": { "type": "string", "description": "部门名称" }, "description": { "type": "string", "description": "看板描述" }, "statuses": { "type": "array", "description": "状态列表", "items": { "originalRef": "看板状态信息", "$ref": "#/definitions/看板状态信息" } }, "taskCount": { "type": "integer", "format": "int32", "description": "任务总数" } }, "title": "看板信息" }, "看板成员信息": { "type": "object", "properties": { "adminId": { "type": "integer", "format": "int64", "description": "管理员ID" }, "avatarUrl": { "type": "string", "description": "头像地址" }, "joinedAt": { "type": "string", "format": "date-time", "description": "加入时间" }, "role": { "type": "string", "description": "角色: OWNER/MEMBER" }, "username": { "type": "string", "description": "用户名" } }, "title": "看板成员信息" }, "看板状态信息": { "type": "object", "properties": { "isPreset": { "type": "boolean", "description": "是否预设状态" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "statusColor": { "type": "string", "description": "状态颜色" }, "statusId": { "type": "integer", "format": "int64", "description": "状态ID" }, "statusName": { "type": "string", "description": "状态名称" }, "taskCount": { "type": "integer", "format": "int32", "description": "该状态下的任务数量" } }, "title": "看板状态信息" }, "统一响应结果«List«看板任务分组信息»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "看板任务分组信息", "$ref": "#/definitions/看板任务分组信息" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«看板任务分组信息»»" }, "统一响应结果«List«看板成员信息»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "看板成员信息", "$ref": "#/definitions/看板成员信息" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«看板成员信息»»" }, "统一响应结果«List«看板状态信息»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "看板状态信息", "$ref": "#/definitions/看板状态信息" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«看板状态信息»»" }, "统一响应结果«Void»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«Void»" }, "统一响应结果«看板信息»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "看板信息", "$ref": "#/definitions/看板信息" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«看板信息»" }, "统一响应结果«看板状态信息»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "看板状态信息", "$ref": "#/definitions/看板状态信息" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«看板状态信息»" }, "负责人信息": { "type": "object", "properties": { "adminId": { "type": "integer", "format": "int64", "description": "管理员ID" }, "avatarUrl": { "type": "string", "description": "头像地址" }, "username": { "type": "string", "description": "用户名" }, "wechatName": { "type": "string", "description": "企微昵称" } }, "title": "负责人信息" }, "任务排序请求": { "type": "object", "required": [ "statusId", "taskIds" ], "properties": { "statusId": { "type": "integer", "format": "int64", "example": 1001, "description": "状态ID" }, "taskIds": { "type": "array", "description": "任务ID列表(按排序顺序)", "items": { "type": "integer", "format": "int64" } } }, "title": "任务排序请求" }, "创建任务请求": { "type": "object", "required": [ "boardId", "title" ], "properties": { "assigneeIds": { "type": "array", "description": "负责人ID列表", "items": { "type": "integer", "format": "int64" } }, "boardId": { "type": "integer", "format": "int64", "example": 1001, "description": "看板ID" }, "description": { "type": "string", "example": "根据产品原型完成首页所有组件的UI设计", "description": "任务描述" }, "dueDate": { "type": "string", "format": "date", "example": "2026-03-15", "description": "截止日期" }, "priority": { "type": "string", "example": "HIGH", "description": "优先级: LOW/MEDIUM/HIGH/URGENT" }, "statusId": { "type": "integer", "format": "int64", "example": 1001, "description": "状态ID" }, "title": { "type": "string", "example": "完成首页UI设计", "description": "任务标题" } }, "title": "创建任务请求" }, "创建子任务请求": { "type": "object", "required": [ "title" ], "properties": { "title": { "type": "string", "example": "完成导航栏组件", "description": "子任务标题" } }, "title": "创建子任务请求" }, "创建评论请求": { "type": "object", "required": [ "content" ], "properties": { "content": { "type": "string", "example": "这个任务需要优先处理", "description": "评论内容" } }, "title": "创建评论请求" }, "变更任务状态请求": { "type": "object", "required": [ "statusId" ], "properties": { "statusId": { "type": "integer", "format": "int64", "example": 1002, "description": "目标状态ID" } }, "title": "变更任务状态请求" }, "时间线条目": { "type": "object", "properties": { "action": { "type": "string", "description": "操作类型" }, "adminAvatar": { "type": "string", "description": "管理员头像" }, "adminId": { "type": "integer", "format": "int64", "description": "管理员ID" }, "adminName": { "type": "string", "description": "管理员姓名" }, "content": { "type": "string", "description": "内容" }, "createdAt": { "type": "string", "format": "date-time", "description": "创建时间" }, "id": { "type": "integer", "format": "int64", "description": "条目ID" }, "newValue": { "type": "string", "description": "新值" }, "oldValue": { "type": "string", "description": "旧值" }, "type": { "type": "string", "description": "类型: COMMENT/ACTIVITY" } }, "title": "时间线条目" }, "更新任务请求": { "type": "object", "properties": { "assigneeIds": { "type": "array", "description": "负责人ID列表", "items": { "type": "integer", "format": "int64" } }, "description": { "type": "string", "example": "根据产品原型完成首页所有组件的UI设计", "description": "任务描述" }, "dueDate": { "type": "string", "format": "date", "example": "2026-03-15", "description": "截止日期" }, "priority": { "type": "string", "example": "MEDIUM", "description": "优先级: LOW/MEDIUM/HIGH/URGENT" }, "title": { "type": "string", "example": "完成首页UI设计", "description": "任务标题" } }, "title": "更新任务请求" }, "更新状态请求": { "type": "object", "properties": { "statusColor": { "type": "string", "example": "#67C23A", "description": "状态颜色" }, "statusName": { "type": "string", "example": "已完成", "description": "状态名称" } }, "title": "更新状态请求" }, "统一响应结果«List«时间线条目»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "时间线条目", "$ref": "#/definitions/时间线条目" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«时间线条目»»" }, "统一响应结果«List«看板信息»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "看板信息", "$ref": "#/definitions/看板信息" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«看板信息»»" }, "统一响应结果«任务信息»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "任务信息", "$ref": "#/definitions/任务信息" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«任务信息»" }, "统一响应结果«子任务信息»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "子任务信息", "$ref": "#/definitions/子任务信息" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«子任务信息»" }, "统一响应结果«时间线条目»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "时间线条目", "$ref": "#/definitions/时间线条目" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«时间线条目»" } } }