FA 一键诊断 — 类别 & 标签管理后台 PRD v4.0
前置阅读:
版本记录:
- v1.0 (2026-06-17):初稿
- v2.0 (2026-06-17):移除 System 编辑能力。System 改为纯只读展示,不再支持编辑/重命名。页面标题改为「系统标签配置」。Component 增删改不受影响。
- v3.0 (2026-06-23):System 从固化转为可自定义(增删改)。新增 system_config 表(含 description / safety_tip / sort_order)、System CRUD API、前端 System 管理交互。N1 API 扩展为同时返回 systems + components。
- v4.0 (2026-07-02):命名重构。System → 类别(Equipment Category),Component → 标签(Diagnosis Tag)。数据表 system_config 更名为 category_config。
1. 产品定位
目标用户:实施人员(项目接入时配置,日常几乎不操作)。
核心功能:管理「类别 + 标签」两级体系——类别是设备分类(如电气、暖通空调),标签是具体诊断打标对象(如 UPS、闸机)。两者均为整个诊断链路的基础数据来源,LLM 打标时 和 均从此获取。
设计原则:
- 极简:只有一套列表页面 + 两个弹窗表单(类别和标签),不做复杂交互
- 可配置:实施人员按项目实际情况自定义类别(增删改)和标签(增删改)
- 项目级:每个项目独立部署,配置仅影响本项目
2. 用户角色
| 角色 | 标签权限 | 类别权限 |
|---|---|---|
| 超级管理员 | 可查看 + 编辑(新增/修改/删除) | 可查看 + 编辑(新增/修改/删除) |
| 物业经理 | 仅查看(按钮置灰) | 仅查看(按钮置灰) |
| 运维工程师 | 仅查看(按钮置灰) | 仅查看(按钮置灰) |
3. 页面设计
3.1 整体布局
参考 fa-diagnosis.html 的左侧树 + 右侧工作区布局:
┌──────────────────────────────────────────────────────────────────┐
│ App Nav (顶部图标栏) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 🧬语义 📦产品 🏢空间 💡设备 🔧诊断 ... ⚙️ │ │
│ └──────────────────────────────────────────────────────────┘ │
├────────────┬─────────────────────────────────────────────────────┤
│ 左侧树 │ 右侧工作区 │
│ │ │
│ ┌────────┐ │ ┌────────────────────────────────────────────┐ │
│ │标签配置 │ │ │ 首页 > 一键诊断 > 标签配置 > 全部 │ │
│ │ │ │ ├────────────────────────────────────────────┤ │
│ │ 全部 │ │ │ [搜索标签名称... ] [+ 新增标签] │ │
│ │ 建筑结构 │ │ │ │ │
│ │ 电气 │ │ │ 所属类别 │ 标签名称 │ 操作 │ │
│ │ 弱电智能 │ │ │───────────┼────────────────┼──────────── │ │
│ │ 给排水 │ │ │ 电气 │ UPS │ 编辑 删除 │ │
│ │ 暖通空调 │ │ │ 电气 │ 继电器 │ 编辑 删除 │ │
│ │ 消防安防 │ │ │ 给排水 │ 水泵 │ 编辑 删除 │ │
│ │ 专用设备 │ │ │ ... │ ... │ ... │ │
│ │ │ │ ├────────────────────────────────────────────┤ │
│ │ │ │ │ 共 38 个标签 上一页 1/2 下一页 │ │
│ │ │ │ └────────────────────────────────────────────┘ │
│ │ │ │ │
│ │ │ │ ┌────────────────────────────────────────────┐ │
│ │ │ │ │ 📌 修改标签列表后,仅影响新提交的工单打标。 │ │
│ │ │ │ └────────────────────────────────────────────┘ │
│ └────────┘ │ │
└────────────┴─────────────────────────────────────────────────────┘顶部导航栏(App Nav):
- 新增
🔧 诊断图标入口,点击跳转到一键诊断管理页 - 左侧菜单标题:「标签配置」
左侧树(Tree Sidebar):
┌──────────────┐
│ 标签配置 │
│ │
│ 全部 (38) │ ← 默认选中,右侧显示所有标签
│ 建筑结构 (0) │ ← hover 时右侧露出 ✏️ 🗑️ 操作按钮
│ 电气 (5) │
│ 弱电智能化 (15)│
│ ... │
│ │
│ [+ 新增类别] │ ← 底部新增按钮
└──────────────┘交互规则:
- 「全部」始终在顶部,高亮选中态,始终无操作按钮
- 所有类别节点从
category_config表动态渲染(数据驱动,非硬编码) - 每个类别节点 hover 时右侧露出
✏️ 编辑/🗑️ 删除小图标,点击弹出对应弹窗 - 每个类别节点右侧显示该分类下的标签数量
- 「全部」的计数显示所有活跃标签总数
- 底部
[+ 新增类别]按钮,点击弹出新增类别弹窗 - 右侧面包屑随选中项变化:
首页 > 一键诊断 > 标签配置 > 电气 - 右侧表格按所选类别过滤;选「全部」则不加过滤
3.2 右侧工作区 — 标签列表
首页 > 一键诊断 > 标签配置 > 电气
┌──────────────────────────────────────────────────────────┐
│ 标签列表 │
│ │
│ [搜索标签... ] [+ 新增标签] │
│ │
│ ┌─────────┬──────────────────┬────────────────────────────┬──────────┐ │
│ │ 类别 │ 标签名称 │ LLM 增强描述 │ 操作 │ │
│ ├─────────┼──────────────────┼────────────────────────────┼──────────┤ │
│ │ 电气 │ UPS │ 不间断电源,含蓄电池组,常见│ 编辑 删除 │ │
│ │ │ │ 品牌科士达/山特/施耐德 │ │ │
│ │ 电气 │ 配电采集模块 │ 配电柜数据采集终端,Modbus │ 编辑 删除 │ │
│ │ │ │ RTU 协议,品牌安科瑞 │ │ │
│ │ 电气 │ 继电器 │ 电磁继电器/固态继电器,用于 │ 编辑 删除 │ │
│ │ │ │ 控制回路通断,含触点/线圈 │ │ │
│ │ 给排水 │ 水泵 │ 离心泵/管道泵/热水循环泵, │ 编辑 删除 │ │
│ │ │ │ 含变频控制 │ │ │
│ │ 弱电智能│ 闸机 │ 出入口通道控制设备,翼闸/ │ 编辑 删除 │ │
│ │ │ │ 摆闸/三辊闸,品牌广宁/西莫罗 │ │ │
│ │ ... │ ... │ ... │ ... │ │
│ └─────────┴──────────────────┴────────────────────────────┴──────────┘ │
│ │
│ 共 8 个标签 1/1 页 │
│ │
└──────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────┐
│ 📌 注意事项 │
│ │
│ 修改标签列表后,仅影响新提交的工单打标。 │
└──────────────────────────────────────────────────────────┘选中「全部」时:类别列展示每个标签所属的类别,表格按类别分组排序。
选中具体类别时:可隐藏类别列(因为默认所有行都是同一类别),或保留以保持表格一致性。
3.3 类别管理交互
3.3.1 新增/编辑类别弹窗
点击左侧树底部 [+ 新增类别] 或某个类别节点的 ✏️ 编辑图标,弹出类别表单弹窗:
┌─────────────────────────────────────┐
│ 新增类别 [✕] │
├─────────────────────────────────────┤
│ │
│ 类别名称 * │
│ ┌─────────────────────────────┐ │
│ │ 例:新能源系统 │ │
│ └─────────────────────────────┘ │
│ │
│ 类别描述 │
│ ┌─────────────────────────────┐ │
│ │ 描述该类包含的设备范围, │ │
│ │ 帮助 LLM 识别分类边界 │ │
│ └─────────────────────────────┘ │
│ │
│ 安全提示 │
│ ┌─────────────────────────────┐ │
│ │ ⚠️ 排查前必须断电, │ │
│ │ 遵守 LOTO 规程... │ │
│ └─────────────────────────────┘ │
│ 该提示注入诊断报告,约束 LLM 输出 │
│ 安全相关的排查建议。不超过200字。 │
│ │
│ 排序权重 │
│ ┌─────────────────────────────┐ │
│ │ 2 │ │
│ └─────────────────────────────┘ │
│ 数字越小,在左侧树的排序越靠前 │
│ │
│ [取消] [保存] │
└─────────────────────────────────────┘字段校验:
| 字段 | 必填 | 校验规则 |
|---|---|---|
| 类别名称 | ✅ | 不超过 20 字;全局唯一 |
| 类别描述 | — | 不超过 200 字 |
| 安全提示 | — | 不超过 200 字 |
| 排序权重 | ✅ | 正整数,默认 0 |
安全提示说明:安全提示将作为
变量注入 N7 诊断生成 Prompt,用于指导 LLM 根据设备类别输出安全的排查建议。初始部署时已预填 6 个类别的安全提示(电气/给排水/暖通空调/消防安防/建筑结构/弱电智能化),专用设备默认为空,由实施人员根据项目情况自定义。
3.3.2 删除类别确认弹窗
点击类别节点的 🗑️ 删除图标,触发预检:
场景 A:类别下存在未删除的标签 → 阻止删除
┌─────────────────────────────────────┐
│ 无法删除 [✕] │
├─────────────────────────────────────┤
│ │
│ 「电气」下还有 5 个标签,无法删除: │
│ │
│ · UPS │
│ · 配电采集模块 │
│ · 继电器 │
│ · 时序电源 │
│ · 无线测温装置 │
│ │
│ 请先删除这些标签后再删除类别。 │
│ │
│ [知道了] │
└─────────────────────────────────────┘场景 B:类别下无标签 → 正常确认删除
┌─────────────────────────────────────┐
│ 确认删除 [✕] │
├─────────────────────────────────────┤
│ │
│ 确定要删除类别「新能源系统」吗? │
│ │
│ 删除后: │
│ · 该类中的标签仍保留 │
│ · 新工单打标不再使用此类 │
│ · 已打标为此类的历史工单不受影响 │
│ · 知识库中已标注的文档标签不受影响 │
│ · 可在系统日志中查看删除记录 │
│ │
│ [取消] [确认删除] │
└─────────────────────────────────────┘删除为逻辑删除(
is_deleted = true),保留数据库记录以维持历史工单标签和知识库文档标签的可追溯性。
3.4 新增 / 编辑标签弹窗
┌─────────────────────────────────────┐
│ 新增标签 [✕] │
├─────────────────────────────────────┤
│ │
│ 所属类别 * │
│ ┌─────────────────────────────┐ │
│ │ 请选择 ▼ │ │
│ │ 建筑结构 │ │
│ │ 电气 │ │
│ │ 弱电智能化 │ │
│ │ ... │ │
│ └─────────────────────────────┘ │
│ 下拉选项从 category_config 表动态获取│
│ │
│ 标签名称 * │
│ ┌─────────────────────────────┐ │
│ │ 例:精密空调 │ │
│ └─────────────────────────────┘ │
│ │
│ LLM 增强描述 │
│ ┌─────────────────────────────┐ │
│ │ 机房恒温恒湿设备,常见品牌 │ │
│ │ 施耐德/维谛/艾默生,含压缩机 │ │
│ │ 冷凝器蒸发器室内外机 │ │
│ └─────────────────────────────┘ │
│ │
│ ────────────────────────────── │
│ 提示:LLM 增强描述会注入打标 │
│ Prompt,帮助 LLM 识别该标签的别 │
│ 名、品牌、典型故障特征。不超过 │
│ 100 字。 │
│ │
│ [取消] [保存] │
│ │
└─────────────────────────────────────┘字段校验:
| 字段 | 必填 | 校验规则 |
|---|---|---|
| 所属类别 | ✅ | 下拉选择,不允许空 |
| 标签名称 | ✅ | 不超过 20 字;同一类别下不可重名 |
3.5 删除标签确认弹窗
┌─────────────────────────────────────┐
│ 确认删除 [✕] │
├─────────────────────────────────────┤
│ │
│ 确定要删除标签「配电监控平台」吗? │
│ │
│ 删除后: │
│ · 新工单打标不再使用此标签 │
│ · 已标注为此标签的历史工单不受影响 │
│ · 可在系统日志中查看删除记录 │
│ │
│ [取消] [确认删除] │
│ │
└─────────────────────────────────────┘删除为逻辑删除(
is_deleted = true),不在前端展示,但保留数据库记录以维持历史工单标签的可追溯性。
4. 数据模型
4.1 类别配置表(category_config)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | int | ✅ | 自增主键 |
name | string | ✅ | 类别名称,全局唯一 |
description | string | — | 类别描述,帮助 LLM 理解该类包含的设备范围(≤200 字) |
safety_tip | string | — | 安全提示,注入 N7 诊断报告 Prompt(≤200 字) |
sort_order | int | ✅ | 排序权重,左侧树按此升序排列(默认 0) |
is_deleted | bool | ✅ | 逻辑删除标记,默认 false |
created_at | datetime | — | 创建时间 |
updated_at | datetime | — | 更新时间 |
4.2 标签配置表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | int | ✅ | 自增主键 |
category_id | int | ✅ | 外键 → category_config.id |
tag | string | ✅ | 标签名称,同一 category_id 下唯一 |
llm_description | string | — | LLM 增强描述,帮助打标时判断(≤100 字) |
is_deleted | bool | ✅ | 逻辑删除标记,默认 false |
created_at | datetime | — | 创建时间 |
updated_at | datetime | — | 更新时间 |
数据模型变更说明:v4.0 将表名从
system_config改为category_config,字段system_id改为category_id。这个变更影响两个层面的查询:
- Dify API:
GET /api/v1/diagnosis/classification-labels返回字段名更新为categories和tags- 管理后台 API:CRUD 接口使用
category_id管理关联关系
4.3 默认数据(首次部署自动灌入)
类别初始数据(7 个,按 sort_order 排序):
| name | description | safety_tip | sort_order |
|---|---|---|---|
| 建筑结构 | 建筑物本体结构相关设备,含门窗、幕墙、电梯井道等 | ⚠️ 结构问题(裂缝/变形/沉降)优先评估安全风险,必要时立即围蔽上报。 | 1 |
| 电气 | 供配电系统设备,含变压器、配电柜、UPS、继电器等 | ⚠️ 排查前必须断电,遵守 LOTO 规程;使用万用表前确认档位。 | 2 |
| 弱电智能化 | 弱电与智能化系统设备,含安防监控、门禁、传感器、会议系统等 | ⚠️ 带电排查时注意弱电设备额定电压;网络设备重启前确认对其他系统无影响。 | 3 |
| 给排水 | 给水排水系统设备,含水泵、水表、液位计、漏水检测等 | ⚠️ 排查前先关闭上游阀门,准备接水容器;潮湿环境注意防触电。 | 4 |
| 暖通空调 | 暖通空调系统设备,含冷水机组、精密空调、加湿设备等 | ⚠️ 注意制冷剂管路高温/高压,佩戴防护手套;封闭空间注意通风。 | 5 |
| 消防安防 | 消防与安防系统设备,含火灾报警、气体灭火、巡更等 | ⚠️ 操作消防主机前确认处于"维修模式",避免误触发联动设备。 | 6 |
| 专用设备 | 行业专用设备,含调音台、功放、音箱、中控主机等 | (空,由项目自定义) | 7 |
标签初始数据:基于 92 份运维文档标注结果提取的 38 个初始标签(详见 知识库文档元数据标注建议 的汇总表)。各标签的 category_id 指向上述对应类别的 id。
5. API 接口
5.1 获取分类标签(供 Dify Workflow 调用)
GET /api/v1/diagnosis/classification-labels返回当前项目所有活跃的类别和标签列表(is_deleted = false)。此接口替代了 v2.0 的 GET /api/v1/diagnosis/components(不再使用独立 endpoints)。
响应:
{
"categories": [
{"id": 1, "name": "建筑结构", "description": "建筑物本体结构相关设备,含门窗、幕墙、电梯井道等", "safety_tip": "⚠️ 结构问题(裂缝/变形/沉降)优先评估安全风险,必要时立即围蔽上报。"},
{"id": 2, "name": "电气", "description": "供配电系统设备,含变压器、配电柜、UPS、继电器等", "safety_tip": "⚠️ 排查前必须断电,遵守 LOTO 规程;使用万用表前确认档位。"},
{"id": 7, "name": "专用设备", "description": "行业专用设备,含调音台、功放、音箱、中控主机等", "safety_tip": ""}
],
"tags": [
{"category_id": 2, "category": "电气", "tag": "UPS", "description": "不间断电源,含蓄电池组,常见品牌科士达/山特/施耐德"},
{"category_id": 2, "category": "电气", "tag": "继电器", "description": "电磁继电器/固态继电器,用于控制回路通断"},
{"category_id": 6, "category": "给排水", "tag": "水泵", "description": "离心泵/管道泵/热水循环泵,含变频控制"},
...
]
}
categories数组按sort_order升序。tags数组中的category字段是冗余展示名,方便 Dify Prompt 直接引用,无需二次 JOIN。
5.2 类别管理后台 CRUD
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v1/admin/categories | 列表(按 sort_order 排序;默认过滤已删除) |
| POST | /api/v1/admin/categories | 新增 |
| PUT | /api/v1/admin/categories/:id | 编辑(名称、描述、安全提示、排序权重均可改) |
| DELETE | /api/v1/admin/categories/:id | 逻辑删除(is_deleted = true) |
删除约束:删除类别前需校验是否存在
is_deleted = false的标签关联该类。若有则拒绝删除,返回状态码409 Conflict,body中列出阻止删除的标签名称列表。
POST / PUT 请求体:
{
"name": "新能源系统",
"description": "光伏、储能相关设备",
"safety_tip": "⚠️ 光伏组件直流高压危险,操作前确认逆变器已关断。",
"sort_order": 8
}5.3 标签管理后台 CRUD
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v1/admin/tags | 列表(支持类别筛选 + 名称搜索;默认过滤已删除) |
| POST | /api/v1/admin/tags | 新增 |
| PUT | /api/v1/admin/tags/:id | 编辑 |
| DELETE | /api/v1/admin/tags/:id | 逻辑删除(is_deleted = true) |
v4.0 变更:标签的
category字段由直接的 string 改为category_id外键。管理后台标签表单中的类别下拉选项从category_config表动态加载(is_deleted = false的活跃类别)。
5.4 暂不支持
- 历史工单重打标:修改标签列表后,仅影响新提交的工单打标。历史工单标签不做回刷(token 消耗过大),重打标方案将在 Dify 编排阶段另行设计。
6. 交互流程
6.1 实施人员接入新项目
1. 登录管理后台
2. 点击顶部导航栏「🔧 诊断」图标
3. 【类别检查】左侧树查看当前设备分类:
├── 默认 7 个:建筑结构、电气、弱电智能化、给排水、暖通空调、消防安防、专用设备
├── 多出来的→点击 ✏️ 编辑改名或合并,或点击 🗑️ 删除
├── 缺少的→点击底部「+ 新增类别」,填写名称、描述、安全提示、排序
└── 排序不对→编辑调整 sort_order
4. 【标签检查】选中每个类别,对照项目实际设备清单:
├── 多出来的→逐个删除(逻辑删除)
├── 缺的→新增(选类别 → 填名称 → 保存)
└── 叫法不一致的→编辑改名
5. 配置完成。新增的类别和标签即时生效,新工单打标将使用最新标签体系。6.2 权限控制流程
用户访问标签配置页
→ 后端校验用户角色
→ 超级管理员: 类别 + 标签均可查看与编辑
→ 物业经理/运维工程师: 类别 + 标签均仅查看(按钮置灰)7. 非功能需求
| 需求 | 说明 |
|---|---|
| 响应时间 | 列表页加载 < 1s |
| 删除约束 | 删除类别前检查是否存在未删除的标签(硬约束,阻止删除);删除标签前检查是否有工单引用了该标签(软约束,仅提示不阻止) |
| 审计日志 | 类别 + 标签的新增/编辑/删除操作均记录操作人和时间 |
| 逻辑删除 | 删除后数据保留在库(is_deleted = true),API 和前端均不展示,但历史工单标签可追溯 |
文档版本:v4.0创建日期:2026-06-17最后更新:2026-07-02作者:孙强
