# 系统更新通知 **更新日期:** 2026年1月22日 --- ## 📋 更新概览 本次更新主要包含以下内容: - ✨ 扩展任务搜索功能,支持搜索任务卡片的所有信息 - 🔒 一级需求部门发起任务必须上传预览图 - 🎨 任务卡片增加一级需求人显示,优化长名字显示 - 🐛 修复流水线任务异常扣分问题 - 🐛 修复需求部门看不到一级需求任务的问题 - 🐛 修复需求部门负责人无法驳回任务的问题 - 🐛 修复筛选功能搜索报错问题 - 🐛 修复 SQL 查询错误 --- ## ✨ 新增功能 ### 1. 扩展任务搜索功能 **功能描述:** 任务搜索功能现在支持搜索任务卡片的所有信息,不再仅限于任务标题和编号。 **搜索范围包括:** - ✅ 任务标题 (`title`) - ✅ 任务编号 (`task_no`) - ✅ SPU信息 (`spu_info`) - ✅ 备注信息 (`remark`) - ✅ 产品条码 (`product_barcodes`) - ✅ 发布人姓名 (`publisher_name`) - ✅ 发布人部门名称 (`publisher_dept_name`) - ✅ 品牌名称 (`brand_name`) - ✅ 类目名称 (`category_name`) - ✅ 平台名称 (`platform_name`) - ✅ 任务类型名称 (`task_type_name`) - ✅ 一级需求人姓名 (`primary_publisher_name`) - ✅ 一级需求部门名称 (`primary_publisher_dept_name`) - ✅ 需求部门发起人姓名 (`detail_completer_name`) - ✅ 接收人姓名 (`receiver_name`) **适用场景:** - 任务大厅搜索 - 进行中任务搜索 - 已完成任务搜索 - 子任务搜索 **使用示例:** - 搜索品牌名称(如"卓禾")可以找到该品牌的所有任务 - 搜索发布人姓名可以找到该用户发布的所有任务 - 搜索一级需求人姓名可以找到该用户发起的一级需求任务 --- ### 2. 一级需求部门必须上传预览图 **功能描述:** 一级需求部门用户发起任务时,系统强制要求上传预览图。 **实现方式:** - 前端验证:表单验证规则中添加预览图必填验证 - 后端验证:创建任务时检查预览图是否上传 - 用户提示:预览图上传区域显示明确的必填提示 **影响范围:** - 一级需求部门用户创建普通任务 - 一级需求部门用户创建流水线任务 **用户体验:** - 如果未上传预览图,提交时会显示错误提示:"一级需求部门发起任务必须上传预览图" - 预览图上传区域会显示红色警告图标和提示文字 --- ### 3. 任务卡片增加一级需求人显示 **功能描述:** 对于一级需求部门发起的任务,任务卡片现在会显示一级需求人和需求部门发起人的信息,让任务来源更加清晰。 **显示内容:** - ✅ **一级需求人**:显示一级需求部门发起人的姓名和部门名称(橙色标识) - ✅ **需求部门发起人**:显示补充任务明细的需求部门成员姓名(绿色标识) - ✅ **发布人**:显示任务的发布人姓名(默认绿色标识) **显示逻辑:** - 如果是一级需求任务(`isPrimaryTask=1`): - 显示"一级需求人"(如果存在) - 显示"需求部门发起人"(如果存在,即已补充明细) - 否则显示"发布人" - 如果是普通任务: - 显示"发布人" **优化内容:** - 一级需求人名字超过 8 个字符时显示省略号 - 需求部门发起人名字超过 8 个字符时显示省略号 - 发布人名字超过 8 个字符时显示省略号 - 鼠标悬停时通过 Tooltip 显示完整信息(包含部门名称) **显示效果:** - 一级需求任务示例: - `一级需求人: 张三... (运营中心...)`(橙色) - `需求部门发起人: 李四...`(绿色) - 悬停提示:`一级需求人: 张三丰 (运营中心A-事业二部)` **适用位置:** - 任务大厅任务卡片 - 进行中任务卡片 - 已完成任务卡片 - 我发起的任务卡片 - 待审核任务卡片 - 草稿箱任务卡片 - 子任务卡片 --- ## 🐛 问题修复 ### 1. 修复流水线任务异常扣分问题 **问题描述:** - 流水线任务的子任务按时完成后,主任务仍然被系统检查进度更新情况 - 导致已完成子任务的用户被错误扣分 - 影响范围:所有流水线任务的接收人 **问题原因:** - 进度检查服务 (`ProgressCheckService`) 在检查任务进度时,没有区分流水线任务的主任务和子任务 - 流水线任务的主任务 (`is_pipeline=1`) 在子任务完成后,主任务状态仍为 `in_progress`,但主任务本身不需要更新进度 - 系统错误地对主任务进行了进度检查,导致已完成子任务的用户被扣分 **解决方案:** - 修改 `ProgressCheckService.checkDailyProgressUpdate()` 方法 - 在进度检查时排除流水线任务的主任务(`is_pipeline=1`) - 只对流水线任务的子任务进行进度检查 - 清理了历史错误扣分记录(共 21 条) **修复效果:** - ✅ 流水线任务的主任务不再被检查进度 - ✅ 已完成子任务的用户不会再被错误扣分 - ✅ 历史错误扣分记录已清理 **影响用户:** - 所有流水线任务的接收人 - 特别是已完成子任务但主任务仍在进行中的用户 --- ### 2. 修复需求部门看不到一级需求任务的问题 **问题描述:** - 需求部门负责人审核通过一级需求部门的任务后,在"进行中任务"中看不到该任务 - 需求部门成员补充完任务明细并发布后,在"进行中任务"中也看不到该任务 - 影响范围:所有需求部门负责人和成员 **问题原因:** - 一级需求部门的任务在需求部门负责人审核通过后,状态变为 `pending_detail_completion`(待明细完善) - 此时任务的 `publisher_dept_id` 是一级需求部门的 ID,不是需求部门的 ID - 需求部门负责人的"进行中任务"查询只按 `publisherDeptIds` 过滤,无法找到这些任务 - 需求部门成员的"进行中任务"查询只查询 `role='publisher'` 的任务,无法找到作为 `detail_completer` 的任务 **解决方案:** - **后端修改:** - 在 `TaskController.getTaskList` 中添加 `includeDetailCompleterDeptIds` 参数 - 在 `TaskService.getTaskList` 中添加按明细完善人部门查询的逻辑 - 在 `TaskController.getMyTasks` 中添加 `role='detail_completer'` 支持 - 新增 `TaskService.getMyDetailCompleterTasks` 方法,查询用户作为明细完善人的任务 - **前端修改:** - 需求部门负责人查看"进行中任务"时,传递 `includeDetailCompleterDeptIds` 参数 - 需求部门成员查看"进行中任务"时,同时查询 `publisher` 和 `detail_completer` 角色的任务并合并结果 **修复效果:** - ✅ 需求部门负责人可以在"进行中任务"中看到已审核通过的一级需求任务 - ✅ 需求部门成员可以在"进行中任务"中看到自己作为明细完善人的任务 - ✅ 任务状态流转更加清晰,用户能正确跟踪任务进度 **影响用户:** - 所有需求部门负责人 - 所有需求部门成员 --- ### 3. 修复需求部门负责人无法驳回任务的问题 **问题描述:** - 需求部门负责人在驳回一级需求部门的任务时,系统报错:"需求部门负责人不存在" - 导致需求部门负责人无法正常驳回任务 - 影响范围:所有需求部门负责人 **问题原因:** - 一级需求部门的任务被驳回时,系统尝试将任务返回给需求部门的负责人 - 但某些一级需求部门(`dept_type='primary_demand'`)可能没有设置 `leader_id` - 当 `TaskApprovalService.rejectByReceivingLeader` 方法检查 `demandDept.getLeaderId()` 时,如果为 `null`,会抛出异常 **解决方案:** - 修改 `TaskApprovalService.rejectByReceivingLeader` 方法 - 当需求部门的 `leader_id` 为 `null` 时,不再抛出异常 - 改为将任务的 `currentApproverId` 设置为任务的 `publisherId`,将任务返回给原始发起人 - 这样即使需求部门没有负责人,任务也能正常被驳回并返回给发起人 **修复效果:** - ✅ 需求部门负责人可以正常驳回一级需求部门的任务 - ✅ 即使需求部门没有负责人,任务也能正常被驳回 - ✅ 任务会正确返回给原始发起人 **影响用户:** - 所有需求部门负责人 - 特别是需要驳回一级需求部门任务的负责人 --- ### 4. 修复筛选功能搜索报错 **问题描述:** - 错误信息:`TypeError: Assignment to constant variable` - 触发场景:在任务大厅、进行中任务、已完成任务等页面使用筛选功能时 **问题原因:** - 使用 `v-model` 绑定 `reactive` 对象时,Vue 尝试重新赋值整个对象 - `reactive` 对象不能直接重新赋值,导致报错 **解决方案:** - 将所有 `TaskFilters` 组件的 `v-model` 改为 `:model-value` 和 `@update:model-value` - 在事件处理函数中使用 `Object.assign` 更新对象属性,而不是重新赋值整个对象 **修复的筛选器:** - ✅ 可接任务筛选 (`filters`) - ✅ 待审核任务筛选 (`reviewFilters`) - ✅ 进行中任务筛选 (`inProgressFilters`) - ✅ 已完成任务筛选 (`completedFilters`) - ✅ 我发起的任务筛选 (`publishedFilters`) - ✅ 草稿箱筛选 (`draftsFilters`) --- ### 4. 修复 SQL 查询错误 **问题描述:** - 错误信息:`Unknown column 't.description' in 'where clause'` - 触发场景:使用搜索功能时 **问题原因:** - 在扩展搜索功能时,SQL 查询中引用了 `task` 表中不存在的 `description` 字段 **解决方案:** - 从所有 SQL 查询中移除了对 `t.description` 字段的引用 - 修复了以下文件中的查询: - `TaskMapper.java` - `selectTaskHall` 和 `selectTaskHallByDept` 方法 - `TaskItemMapper.java` - 所有子任务查询方法 - `TaskService.java` - `getCompletedTasks` 方法 --- ## 📝 技术细节 ### 前端修改 **文件:** `frontend/src/views/TaskHall.vue` - 导入 `Tooltip` 组件 - 添加 `truncateText` 辅助函数 - 修改所有显示需求人名字的地方,添加 Tooltip 和截断显示 - 修复 `v-model` 绑定问题,改用 `:model-value` 和 `@update:model-value` - **修复需求部门看不到一级需求任务:** - 需求部门负责人查看"进行中任务"时,添加 `includeDetailCompleterDeptIds` 参数 - 需求部门成员查看"进行中任务"时,同时查询 `publisher` 和 `detail_completer` 角色的任务并合并结果 - 更新 `loadDashboardStats` 统计逻辑,包含 `detail_completer` 角色的任务 **文件:** `frontend/src/views/CreateTask.vue` - 添加预览图必填验证规则 - 在提交时添加额外的预览图验证 - 更新预览图上传区域的提示信息 **文件:** `frontend/src/api/task.ts` - 在 `MyTasksParams` 接口中添加 `detail_completer` 作为有效的 `role` 值 - 在 `getTasks` 函数中添加 `includeDetailCompleterDeptIds` 参数 ### 后端修改 **文件:** `backend/src/main/java/com/designhub/mapper/TaskMapper.java` - 扩展 `selectTaskHall` 和 `selectTaskHallByDept` 的搜索条件 - 添加明细完善人、接收人、任务类型的关联查询 - 移除不存在的 `description` 字段引用 **文件:** `backend/src/main/java/com/designhub/mapper/TaskItemMapper.java` - 扩展所有子任务查询方法的搜索条件 - 移除不存在的 `description` 字段引用 **文件:** `backend/src/main/java/com/designhub/service/TaskService.java` - 扩展 `getCompletedTasks` 方法的搜索条件 - 在 `createTask` 和 `createPipelineTask` 方法中添加预览图必填验证 - 移除不存在的 `description` 字段引用 - **修复需求部门看不到一级需求任务:** - 在 `getTaskList` 方法中添加 `includeDetailCompleterDeptIds` 参数支持 - 添加按明细完善人部门查询的逻辑(支持一级需求任务) - 在 `getMyTasks` 方法中添加 `role='detail_completer'` 支持 - 新增 `getMyDetailCompleterTasks` 方法,查询用户作为明细完善人的任务 - 在 `fillTaskRelatedInfo` 方法中添加 `detailCompleterName` 的填充逻辑 **文件:** `backend/src/main/java/com/designhub/controller/TaskController.java` - **修复需求部门看不到一级需求任务:** - 在 `getTaskList` 接口中添加 `includeDetailCompleterDeptIds` 参数(逗号分隔的部门ID列表) - 在 `getMyTasks` 接口中添加 `role='detail_completer'` 支持 **文件:** `backend/src/main/java/com/designhub/service/ProgressCheckService.java` - **修复流水线任务异常扣分:** - 修改 `checkDailyProgressUpdate` 方法,排除流水线任务的主任务(`is_pipeline=1`) - 只对流水线任务的子任务进行进度检查 --- ## 🎯 影响范围 ### 用户影响 - ✅ **一级需求部门用户**:发起任务时必须上传预览图 - ✅ **所有用户**:搜索功能更强大,可以搜索更多字段 - ✅ **所有用户**:任务卡片显示更美观,长名字不再影响布局 - ✅ **流水线任务接收人**:不再被错误扣分,已完成子任务后不会被检查主任务进度 - ✅ **需求部门负责人**:可以在"进行中任务"中看到已审核通过的一级需求任务 - ✅ **需求部门成员**:可以在"进行中任务"中看到自己作为明细完善人的任务 ### 功能影响 - ✅ **搜索功能**:支持搜索任务卡片的所有信息 - ✅ **筛选功能**:修复了搜索时的报错问题 - ✅ **任务创建**:一级需求部门用户必须上传预览图 - ✅ **进度检查**:流水线任务的主任务不再被检查进度,避免错误扣分 - ✅ **任务可见性**:需求部门可以正确查看一级需求任务的进度 --- ## ⚠️ 注意事项 1. **一级需求部门用户**:从本次更新开始,发起任务时必须上传预览图,否则无法提交任务。 2. **搜索功能**:搜索功能已扩展,现在可以搜索更多字段,但不再支持搜索 `description` 字段(该字段在数据库中不存在)。 3. **名字显示**:任务卡片中的需求人名字如果超过 8 个字符会自动截断,鼠标悬停可查看完整信息。 4. **流水线任务进度检查**:流水线任务的主任务不再进行进度检查,只有子任务会被检查进度。已完成子任务的用户不会再被错误扣分。 5. **一级需求任务可见性**: - 需求部门负责人审核通过一级需求任务后,可以在"进行中任务"中看到该任务 - 需求部门成员补充完任务明细并发布后,可以在"进行中任务"中看到该任务 - 任务状态为 `pending_detail_completion`(待明细完善)时,会显示在需求部门的"进行中任务"中 --- ## 📞 问题反馈 如果在使用过程中遇到任何问题,请及时反馈: - 系统异常 - 功能异常 - 用户体验问题 --- **更新完成时间:** 2026年1月22日 15:40 **部署状态:** ✅ 已部署到生产环境