FA 一键诊断 — 前端 PRD v1.1
前置阅读:
版本记录:
- v1.0 (2026-06-17):初稿
- v1.1 (2026-06-17):去置信度展示;诊断内容改为 LLM 统一 Markdown 输出不做结构化拆分;参考文档改为 G-Cite 折叠引用栏;统一所有状态的前端展示逻辑;反馈简化为仅点赞/踩
1. 入口
1.1 工单详情页
「一键诊断」按钮放置在工单详情页的操作区,与「接单」「转派」等同级。
┌──────────────────────────────────────────────────────────────┐
│ 工单详情 [#WO-2026-0892] │
├──────────────────────────────────────────────────────────────┤
│ │
│ 报修对象:G馆1楼入口闸机 │
│ 报修位置:博览中心 G馆 1F │
│ 故障描述:G馆1楼入口闸机翼臂无法升降,人员无法通行。 │
│ 等级:一般 │
│ 状态:待处理 │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 操作区 │ │
│ │ │ │
│ │ [接单] [转派] [一键诊断] [更多] │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 诊断结果区 │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘按钮状态:
| 状态 | 外观 |
|---|---|
| 默认 | 主色填充按钮 [一键诊断] |
| 诊断中 | 按钮置灰 + loading 动画 [诊断中...] |
| 诊断完成 | 恢复默认,结果区已展示 |
| 诊断失败 | 恢复默认 + Toast 提示 |
2. 结果展示
2.1 统一展示模式
前端不做结构化拆分(不区分"安全提示""可能原因""排查步骤"等)。诊断内容由 Dify LLM 统一输出为 Markdown,前端直接渲染。这样做的好处:
- 前端逻辑统一,无论有无 RAG 匹配、置信度高低,都是同一套渲染
- Prompt 迭代时不需要同步改前端
- 与 QA G-Cite 的 Markdown 渲染保持一致
┌──────────────────────────────────────────────────────────────┐
│ 一键诊断结果 [收起] [刷新] │
├──────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 弱电智能化 > 闸机 > 无法升降 │ │
│ │ ℹ️ 工单描述较模糊,分类结果可能不准确 │ │ ← 仅低置信度时显示
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌─ 诊断建议 ──────────────────────────────────────────┐ │
│ │ │ │
│ │ (LLM 输出的 Markdown 正文,直接渲染) │ │
│ │ │ │
│ │ 安全提示:排查前注意弱电设备额定电压... │ │
│ │ │ │
│ │ ## 可能原因 │ │
│ │ 1. 伺服电机驱动器参数漂移 │ │
│ │ 2. 红外感应器被异物遮挡 │ │
│ │ ... │ │
│ │ │ │
│ │ ## 排查步骤 │ │
│ │ 1. 断开闸机电源,等待 30 秒后重新上电 │ │
│ │ ... │ │
│ │ │ │
│ │ 本建议仅供参考,如有疑难请升级处理。 │ │
│ │ │ │
│ └────────────────────────────────────────────────────┘ │
│ │
│ ┌─ 引用来源(2) [展开 ▼] ────┐ │
│ └────────────────────────────────────────────────────┘ │
│ │
│ 这个诊断对你有帮助吗? [有帮助] [无帮助] │
│ │
└──────────────────────────────────────────────────────────────┘2.2 分类标签栏
| 状态 | 展示 | 说明 |
|---|---|---|
| 正常 | 弱电智能化 > 闸机 > 无法升降 | 绿色/蓝色标签 |
| 低置信度 | 同上 + ℹ️ 分类结果可能不准确 | is_low_confidence = true 时出现 |
置信度和阈值对前端完全透明。Dify 根据工作流变量
LOW_CONFIDENCE_THRESHOLD计算is_low_confidence布尔值,前端仅据此决定是否展示提示行。不提供「重新分类」按钮。
2.3 引用来源(G-Cite 风格)
参考 QA 的 G-Cite 交互设计,底部折叠引用栏:
折叠态:
┌─ 引用来源(2) [展开 ▼] ────┐展开态:
┌─ 引用来源(2) [收起 ▲] ────┐
│ │
│ 1 广宁闸机V6使用手册 [查看原文] │
│ 2 闸机故障码表 v2.0 [查看原文] │
│ │
└──────────────────────────────────────────────────────┘交互规则:
- 默认折叠,点击 [展开 ▼] 后显示文档标题列表
- 文档标题来自
chunk_metadata.document_title - 点击 [查看原文] 跳转至原始文档(PDF/网页,链接来自
source_file_url) - 若
source_file_url为空,行不可点击,文字置灰 - N = 当前回答中实际被引用的文档数(非检索召回数)
2.4 无知识库匹配
引用来源栏展示 citation_hint 内容(由 Dify 工作流变量 NO_CITATION_HINT 控制):
┌─ 引用来源(0) ────┐
│ │
│ 暂无可参考的知识库文档,诊断建议由 AI 基于通用常识生成。 │
│ │
└──────────────────────────────────────────────────────────────┘2.5 低置信度
分类标签栏出现提示信息,其余与正常结果一致:
┌──────────────────────────────────────────────────────┐
│ 弱电智能化 > 闸机 > 无法升降 │
│ ℹ️ 分类结果可能不准确 │
└──────────────────────────────────────────────────────┘3. 异常状态
3.1 加载中
┌──────────────────────────────────────────────┐
│ │
│ 正在分析故障... │
│ │
│ 预计耗时 5-10 秒 │
│ │
└──────────────────────────────────────────────┘3.2 超时/失败
┌──────────────────────────────────────────────┐
│ │
│ 诊断失败 │
│ │
│ 诊断服务暂不可用,请稍后重试。 │
│ │
│ [重试] [关闭] │
│ │
└──────────────────────────────────────────────┘4. 反馈机制
这个诊断对你有帮助吗? [有帮助] [无帮助]4.1 交互
| 操作 | 行为 |
|---|---|
| 点击 [有帮助] | 提交反馈 → 两个按钮灰化不可再点 |
| 点击 [无帮助] | 提交反馈 → 两个按钮灰化不可再点 |
无差评原因弹窗——降低反馈门槛,先收集量。
4.2 数据记录
POST /api/v1/diagnosis/feedback
Content-Type: application/json
{
"work_order_id": "WO-2026-0892",
"diagnosis_id": "diag_20260617_001",
"rating": "not_helpful",
"classification": {
"system": "弱电智能化",
"component": "闸机",
"symptom": "无法升降"
},
"has_knowledge_match": true,
"created_at": "2026-06-17 14:30"
}| 字段 | 说明 |
|---|---|
work_order_id | 关联工单,便于回溯 |
diagnosis_id | 诊断请求唯一 ID |
rating | helpful / not_helpful |
classification | 当时 LLM 打标的分类结果 |
has_knowledge_match | 是否有 RAG 知识库匹配 |
created_at | 反馈时间 |
存储:写入诊断反馈表,后续接入运营看板统计好评率。not_helpful 比例超过阈值时可产研介入作为产品优化需求起点。
4.3 记录时机说明
反馈数据记录在后端 API 层,前端只需:
- 调用诊断 API 时拿到
diagnosis_id - 用户点击按钮时调反馈 API 上报
{diagnosis_id, rating} - Token 防重——同一
diagnosis_id24h 内不可重复提交
5. 移动端适配
工单详情页在移动端(巡检人员手机操作),诊断结果卡片全宽展示。
┌──────────────────────────┐
│ 一键诊断结果 [收起] │
├──────────────────────────┤
│ │
│ 弱电智能化 > 闸机 │
│ 无法升降 │
│ │
│ (LLM Markdown 正文) │
│ │
│ ## 可能原因 │
│ 1. 伺服电机驱动器参数漂移 │
│ 2. 红外感应器被异物遮挡 │
│ ... │
│ │
│ 引用来源(2)[展开] │
│ │
│ [有帮助] [无帮助] │
│ │
└──────────────────────────┘6. 接口对接
6.1 发起诊断(SSE 流式)
POST /v1/workflows/run
Content-Type: application/json
{
"inputs": {
"work_order_description": "G馆1楼入口闸机翼臂无法升降",
"asset_id": "AST-2024-0882"
},
"response_mode": "streaming",
"user": "operator_zhang"
}SSE 事件流:
| 事件 | 前端行为 |
|---|---|
workflow_started | 展示 loading 状态 + 获取 diagnosis_id |
text_chunk | 逐段追加渲染 Markdown 到诊断建议区 |
workflow_finished | 解析 classification → 渲染标签栏;解析 references → 渲染引用来源栏;关闭 loading |
前端用
EventSource接收 SSE 事件。text_chunk事件携带{"text": "..."}增量 Markdown 文本。workflow_finished的data.outputs包含完整 JSON 响应。
6.2 提交反馈
见 §4.2。
文档版本:v1.1创建日期:2026-06-17最后更新:2026-06-17作者:强哥
