qiangdanxitong/更新通知-2026-01-22.md

15 KiB
Raw Blame History

系统更新通知

更新日期: 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

部署状态: ✅ 已部署到生产环境