2026-07-22-qc-result-optional-conclusion-design.md 4.8 KB

填写检测结果:结论可选(待结论)

日期:2026-07-22
状态:已批准(2026-07-22)
范围:web-admin【质检工单】【我的质检任务】共用「填写检测结果」弹窗;后端 complete-with-result / apply_task_result
非范围:列表/查看「待结论」展示逻辑(已有);数据库结构;新增结论码 djl


1. 背景与目标

1.1 问题

「填写检测结果」弹窗中「结论」仅「通过 / 不通过」,且前后端均强制必填。打开时默认「通过」。无法先保存参数/附件/进行中状态而结论仍为「待结论」。

1.2 目标

  1. 结论支持显式选择「待结论」(存空),保存后列表/查看仍按现有规则显示「待结论」。
  2. 已完成(ywc)时结论仍必填(仅 tg / btg);待执行 / 进行中(dzx / jxz)时结论可空。
  3. 【质检工单】与【我的质检任务】共用同一弹窗组件,一次改动覆盖两页。

1.3 非目标

  • 不引入新结论码(如 djl);待结论 = conclusion 空字符串 / null。
  • 不改 qcConclusionDisplayLabel / Tag 展示语义。
  • 不改短信综合结论等下游推导逻辑(仍要求任务具备 tg/btg 才纳入有效综合结论)。

2. 已确认产品决策

决策点 结论
空结论与任务状态 B:仅 dzx / jxz 允许空结论;ywc 结论必填
UI 形态 A:第三项 radio「待结论」,值为空;选 ywc 时禁用该项
空值表示 方案 1:空字符串,与现有展示 helper 一致
打开默认 无既有 tg/btg 时默认「待结论」,不再默认「通过」
切到已完成且仍为待结论 不自动改成通过;提交时提示必选结论

3. 行为规则

任务状态(保存目标) 结论可选值 校验
dzx 待执行 待结论 / 通过 / 不通过 允许 conclusion 为空
jxz 进行中 同上 允许 conclusion 为空
ywc 已完成 仅通过 / 不通过(「待结论」radio 禁用) 必须为 tg 或 btg

落库:

  • 选「通过」→ conclusion = 'tg'
  • 选「不通过」→ conclusion = 'btg'
  • 选「待结论」→ conclusion 置空('' / null,与现有空结论语义一致)

列表/查看:无 tg/btg 时继续用 qcConclusionDisplayLabel → 「待结论」。


4. 前端改动

文件:web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderTaskSubList.vue(两入口共用)

  1. 「结论」radio 增加「待结论」(value="" 或等价空绑定)。
  2. resultSaveStatus === 'ywc' 时禁用「待结论」选项。
  3. openResult:resultConclusion 回填 detail.conclusion;若无有效 tg/btg,设为 ''(待结论),不要再默认 'tg'。
  4. submitResult:仅当 resultSaveStatus === 'ywc' 且结论非 tg/btg 时提示「请选择检测结论」;dzx/jxz 允许空结论提交。
  5. 请求体 conclusion 可为空字符串;类型仍可为 string。

API 封装 fetchCompleteTaskWithResult 若有严格非空类型,允许 conclusion: string(含 '')即可。


5. 后端改动

文件:

  • backend/app/api/qc.py — TaskCompleteWithResultBody、complete-with-result 处理
  • backend/app/crud/qc_task.py — apply_task_result

规则:

  1. conclusion 改为可选(或允许空串);规范化后仅接受 '' / tg / btg。
  2. 目标 task_status(默认仍可为 ywc)为 ywc 时:空结论 → 400「请选择检测结论(通过/不通过)」。
  3. 目标为 dzx / jxz 时:允许空结论,并将 t.conclusion 置空。
  4. 非空且非 tg/btg → 无效结论错误(与现有一致)。

complete_task 等其它路径若已有「有结论才写入」逻辑,保持最小改动;本需求以 apply_task_result / complete-with-result 为主路径。


6. 验收要点

  1. 【质检工单】与【我的质检任务】打开「填写检测结果」:结论可见三项,含「待结论」。
  2. 状态选「待执行」或「进行中」,结论选「待结论」,可保存;卡片结论 Tag 为「待结论」。
  3. 状态选「已完成」时「待结论」禁用;若结论仍空,提交失败并提示选结论。
  4. 已有通过/不通过的任务再打开,正确回填;清空为待结论并保存为进行中后,列表显示待结论。
  5. 已完成 + 通过/不通过 行为与改前一致。

7. 风险与说明

  • 工单自动完成(try_complete_work_order)仍依赖任务进入 ywc;空结论任务不能以「待结论」完成,与决策 B 一致。
  • 短信/综合质检结论等下游仍只认 tg/btg,待结论任务不计入「全部通过」。