# SPC智能预测预警技术文档

## 1. 文档目标

本文档用于设计 `MES-Manager_View` 中 AI 助手的 SPC 智能预测预警功能。功能基于现有质量数据查询结果，分析测量值趋势、Cp/Cpk 工序能力参数趋势，并在 AI 助手界面输出商业软件级别的预测预警结果。

本阶段只编写技术设计文档，不修改任何代码、不提交、不推送。

## 2. 功能目标

SPC 智能预测预警需要实现以下能力：

| 能力 | 说明 |
|---|---|
| 质量趋势预警 | 根据测量值随时间变化识别超限、接近规格限、连续漂移、波动变大等风险 |
| Cp/Cpk 能力预警 | 根据滚动窗口计算 Cp、Cpk，判断工序能力是否下降 |
| 风险分级 | 输出正常、关注、预警、严重四级结果 |
| 图表展示 | 在 AI 助手中展示测量值趋势图、Cp/Cpk 趋势图、风险点 |
| 结果解释 | 说明触发规则、计算依据、样本范围、置信度 |
| 商业化输出 | 使用规范表格、清晰颜色、可追溯明细和建议措施 |

## 3. 数据来源约束

所有数据必须来自项目已有 HMI 查询能力，不允许直连数据库。

质量数据查询链路：

```text
AI助手
 -> MCP Server
 -> queryQualityData()
 -> MESCommonBase.ashx
 -> CreateData 参数结构
 -> 质量数据_发动机质量数据_各个工位_视图_发动机型号_综合查询
```

禁止事项：

- 不直接连接 SQL Server。
- 不在 AI 服务中拼 SQL。
- 不新增数据库依赖。
- 不修改质量数据查询页面底层业务逻辑。
- 不绕过项目已有函数查询数据。

## 4. 推荐分析对象

预测预警应优先针对单一工序特性分析。

推荐查询粒度：

```text
工位号 + 测量位置 + 测量项目
```

示例：

```text
查询质量数据 工位号 OP10 测量位置 缸盖螺栓 测量项目 扭矩 做SPC智能预警
```

如果用户未提供完整条件：

| 缺失条件 | 处理方式 |
|---|---|
| 未提供工位号 | 允许分析，但提示可能混合多个工位 |
| 未提供测量位置 | 允许分析，但提示可能混合多个测量位置 |
| 未提供测量项目 | 允许分析，但提示可能混合多个测量项目 |
| 无任何条件 | 使用全时间范围最新数据分析，置信度标记为低 |

## 5. 输入参数设计

| 参数 | 来源 | 说明 |
|---|---|---|
| query | 用户原始问题 | 用于解析意图和筛选条件 |
| stationNumber | 自然语言解析 | 工位号 |
| testPosition | 自然语言解析 | 测量位置 |
| testItem | 自然语言解析 | 测量项目 |
| engineId | 自然语言解析 | 工件编号 |
| startTime | 自然语言解析 | 开始时间 |
| endTime | 自然语言解析 | 结束时间 |
| analysisSize | 系统默认 | 分析样本数，默认 150 |
| displaySize | 系统默认 | 展示样本数，默认 50 |
| windowSize | 系统默认 | Cp/Cpk 滚动窗口大小，默认 25 |
| windowStep | 系统默认 | 滚动窗口步长，默认 10 |

如果当前查询接口只能稳定返回 50 条，则第一版使用最新 50 条完成分析；后续可扩展分页获取更多分析样本，但 AI 界面仍只展示最新 50 条。

## 6. 数据字段映射

| 标准字段 | 兼容字段 | 用途 |
|---|---|---|
| 生产日期 | 操作时间、完成时间、时间 | 趋势排序、X轴 |
| 工位号 | 指南工位号、工位编号 | 工位识别 |
| 工位名称 | 工序名称、工位名称 | 展示 |
| 工件编号 | 发动机号、工件编号 | 明细追溯 |
| 测量位置 | 位置 | 测点识别 |
| 测量项目 | 测量内容、项目 | 特性识别 |
| 测量值 | 实际值、value、Value | 核心分析值 |
| 上限值 | USL、上限 | 规格上限 |
| 下限值 | LSL、下限 | 规格下限 |
| 理论值 | 目标值、中心值 | 目标中心线 |
| 合格标志 | 是否合格、合格 | 不合格识别 |

## 7. 预警等级设计

| 等级 | 分数范围 | 含义 | 建议颜色 |
|---|---:|---|---|
| 正常 | 0-19 | 数据稳定，未发现明显风险 | 绿色 |
| 关注 | 20-39 | 存在轻微趋势或接近边界 | 蓝色/黄色 |
| 预警 | 40-69 | 存在明显质量风险 | 橙色 |
| 严重 | 70-100 | 已超限或能力严重不足 | 红色 |

最终等级取所有命中规则中的最高风险等级，并结合累计风险分数输出。

## 8. 测量值趋势预警规则

| 规则 | 判断条件 | 风险等级 |
|---|---|---|
| 超规格上限 | 测量值 > 上限值 | 严重 |
| 低于规格下限 | 测量值 < 下限值 | 严重 |
| 已不合格 | 合格标志为不合格、NG、false、0 | 严重 |
| 接近规格限 | 距离上限或下限小于规格宽度 10% | 关注 |
| 高危接近规格限 | 距离上限或下限小于规格宽度 5% | 预警 |
| 连续上升 | 最近 5 个有效测量值连续上升 | 预警 |
| 连续下降 | 最近 5 个有效测量值连续下降 | 预警 |
| 均值偏移 | 最近窗口均值较历史窗口偏移超过规格宽度 10% | 预警 |
| 波动增大 | 最近窗口标准差大于历史窗口标准差 1.5 倍 | 关注/预警 |

## 9. Cp/Cpk 工序能力计算

计算公式：

```text
Mean = 测量值平均值
Sigma = 样本标准差
Cp = (USL - LSL) / (6 * Sigma)
Cpu = (USL - Mean) / (3 * Sigma)
Cpl = (Mean - LSL) / (3 * Sigma)
Cpk = min(Cpu, Cpl)
```

判断标准：

| Cpk | 等级 | 说明 |
|---:|---|---|
| >= 1.67 | 优秀 | 工序能力充足 |
| 1.33 - 1.67 | 正常 | 满足常规质量要求 |
| 1.00 - 1.33 | 关注 | 工序能力边缘 |
| 0.67 - 1.00 | 预警 | 工序能力不足 |
| < 0.67 | 严重 | 工序能力严重不足 |

Cp 与 Cpk 的关系解释：

| 情况 | 说明 |
|---|---|
| Cp 高、Cpk 高 | 工序稳定且居中 |
| Cp 高、Cpk 低 | 波动不大，但过程中心偏移 |
| Cp 低、Cpk 低 | 波动大且能力不足 |
| Cp 正常、Cpk 连续下降 | 存在逐步偏移风险 |

## 10. Cp/Cpk 趋势预警规则

采用滚动窗口计算能力趋势：

| 参数 | 默认值 |
|---|---:|
| 窗口大小 | 25 条 |
| 窗口步长 | 10 条 |
| 最少窗口数 | 3 个 |

规则：

| 规则 | 判断条件 | 风险等级 |
|---|---|---|
| Cpk 低于合格线 | 最近窗口 Cpk < 1.33 | 关注 |
| Cpk 低于预警线 | 最近窗口 Cpk < 1.00 | 预警 |
| Cpk 严重不足 | 最近窗口 Cpk < 0.67 | 严重 |
| Cpk 连续下降 | 最近 3 个窗口 Cpk 连续下降 | 预警 |
| Cpk 快速下降 | 最近窗口较上一窗口下降超过 20% | 预警 |
| 中心偏移 | Cp >= 1.33 且 Cpk < 1.00 | 预警 |

## 11. 风险评分建议

| 事件 | 分数 |
|---|---:|
| 测量值超限 | +70 |
| 存在不合格标志 | +60 |
| Cpk < 0.67 | +70 |
| Cpk < 1.00 | +45 |
| Cpk < 1.33 | +25 |
| Cpk 连续下降 | +35 |
| 接近规格限 5% | +35 |
| 接近规格限 10% | +20 |
| 连续 5 点上升或下降 | +30 |
| 波动增大 1.5 倍 | +25 |
| 样本不足 | 不加分，但降低置信度 |
| 多工位或多测点混合 | 不加分，但降低置信度 |

## 12. AI 助手触发词

只有明确出现以下触发词时才进入预测预警：

```text
SPC预测预警
智能预警
质量预警
趋势预警
异常预测
失控风险
CPK预警
Cpk趋势预警
工序能力预警
过程能力预警
预测这个工位是否有风险
```

不应触发预警的普通问题：

```text
查询质量数据
显示最新50条质量数据
绘制SPC基本趋势图
绘制直方图
查看Cpk趋势图
质量数据查询模块有什么功能
```

## 13. AI 输出格式

AI 助手输出应固定包含以下模块。

### 13.1 预警结论表

| 项目 | 内容 |
|---|---|
| 风险等级 | 正常 / 关注 / 预警 / 严重 |
| 风险分数 | 0-100 |
| 分析对象 | 工位号 / 测量位置 / 测量项目 |
| 样本数量 | 有效测量值数量 |
| 时间范围 | 最早生产日期 - 最新生产日期 |
| 当前 Cp | 最近窗口 Cp |
| 当前 Cpk | 最近窗口 Cpk |
| Cpk 趋势 | 上升 / 平稳 / 下降 |
| 置信度 | 高 / 中 / 低 |
| 结论摘要 | 一句话说明主要风险 |

### 13.2 规则命中表

| 规则 | 是否命中 | 风险等级 | 说明 |
|---|---|---|---|
| 规格超限 | 是/否 | 严重 | 是否存在超上限或低下限 |
| 接近规格限 | 是/否 | 关注/预警 | 是否接近 USL/LSL |
| 连续漂移 | 是/否 | 预警 | 是否连续上升或下降 |
| 均值偏移 | 是/否 | 预警 | 最近均值是否偏移 |
| 波动增大 | 是/否 | 关注/预警 | 标准差是否增大 |
| Cpk 能力不足 | 是/否 | 关注/预警/严重 | Cpk 是否低于阈值 |
| Cpk 连续下降 | 是/否 | 预警 | 能力是否持续变差 |

### 13.3 Cp/Cpk 趋势表

| 窗口 | 样本范围 | 平均值 | 标准差 | Cp | Cpk | 判断 |
|---|---|---:|---:|---:|---:|---|
| W1 | 第1-25条 |  |  |  |  |  |
| W2 | 第11-35条 |  |  |  |  |  |
| W3 | 第21-45条 |  |  |  |  |  |

### 13.4 改进建议表

| 风险 | 建议 |
|---|---|
| 测量值接近上限 | 检查设备补偿、夹具状态、刀具磨损或拧紧参数 |
| 测量值接近下限 | 检查装配不到位、零件批次或工艺参数偏低 |
| Cpk 下降 | 优先确认过程中心是否偏移，再检查波动来源 |
| 波动变大 | 检查设备稳定性、环境、人员操作和来料一致性 |
| 已超限 | 建议立即停线确认、隔离相关工件并追溯前后批次 |

## 14. 图表设计

### 14.1 测量值趋势预警图

图表内容：

- X 轴：生产日期或样本序号。
- Y 轴：测量值。
- 折线：测量值。
- 辅助线：上限值、下限值、理论值、平均值。
- 风险点：
  - 红色：超限点。
  - 橙色：接近规格限点。
  - 蓝色：正常点。

### 14.2 Cp/Cpk 趋势图

图表内容：

- X 轴：滚动窗口编号。
- Y 轴：Cp / Cpk。
- 折线：
  - Cp
  - Cpk
- 辅助线：
  - 1.67 优秀线。
  - 1.33 合格线。
  - 1.00 预警线。
  - 0.67 严重线。
- Cpk 低于 1.00 的点应突出显示。

## 15. MCP 工具设计

新增工具名称：

```text
predict_quality_spc_warning
```

输入：

| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| query | string | 空 | 用户原始问题 |
| stationNumber | string | 空 | 工位号 |
| testPosition | string | 空 | 测量位置 |
| testItem | string | 空 | 测量项目 |
| engineId | string | 空 | 工件编号 |
| startTime | string | 1900-01-01 00:00:00 | 开始时间 |
| endTime | string | 2099-12-31 23:59:59 | 结束时间 |
| analysisSize | number | 150 | 分析样本数 |
| displaySize | number | 50 | 展示样本数 |
| windowSize | number | 25 | 滚动窗口大小 |
| windowStep | number | 10 | 滚动窗口步长 |

输出：

| 字段 | 说明 |
|---|---|
| html | 预警表格 HTML |
| charts | ECharts 图表配置 |
| data.rows | 原始查询数据 |
| data.displayRows | 展示用明细数据 |
| data.analysis | 预警分析结果 |
| data.capabilityWindows | Cp/Cpk 滚动窗口结果 |
| data.params | 实际查询参数 |
| data.confidence | 置信度说明 |

## 16. AI 路由优先级

AI 助手应按以下顺序处理用户问题：

1. 页面导航。
2. 模块功能说明。
3. SPC 智能预测预警。
4. 指定图表绘制。
5. 普通质量数据查询。
6. DeepSeek 普通问答。

这样可以避免：

- 普通质量数据查询误触发预警。
- 普通图表绘制误触发预警。
- 用户明确要求预警时只返回普通表格。

## 17. 置信度设计

| 条件 | 置信度 |
|---|---|
| 单工位、单测量位置、单测量项目，样本 >= 100 | 高 |
| 单工位、单测量位置、单测量项目，样本 50-99 | 中 |
| 样本 10-49 | 低 |
| 多工位混合 | 低 |
| 多测量位置混合 | 低 |
| 多测量项目混合 | 低 |
| 缺少上下限 | 低，仅做趋势判断 |
| 样本少于 10 | 极低，仅做超限判断 |

## 18. 异常处理

| 场景 | 输出 |
|---|---|
| MES 后端不可用 | 查询入口已定位，但接口调用失败 |
| 无数据 | 未查询到符合条件的质量数据 |
| 无测量值 | 无法进行趋势和能力分析 |
| 无上下限 | 无法计算 Cp/Cpk，仅输出测量值趋势 |
| 标准差为 0 | Cp/Cpk 不可计算，提示样本无波动 |
| 样本不足 10 | 仅做基础超限判断 |
| 多测点混合 | 输出低置信度提示 |
| 多测量项目混合 | 输出低置信度提示 |

## 19. 测试方案

### 19.1 意图识别测试

| 输入 | 期望 |
|---|---|
| 查询质量数据 | 普通表格，不触发预警 |
| 查询质量数据 显示最新50条 | 普通表格，不触发预警 |
| 查询质量数据 做SPC预测预警 | 触发预警 |
| 工位 OP10 测量位置 A 测量项目 扭矩 做CPK预警 | 触发预警 |
| 绘制Cpk趋势图 | 图表绘制，不触发预警 |
| 质量数据查询模块有什么功能 | 功能说明，不查询数据 |

### 19.2 计算规则测试

| 场景 | 期望 |
|---|---|
| 存在测量值 > 上限值 | 严重 |
| 存在测量值 < 下限值 | 严重 |
| Cpk = 1.5 | 正常 |
| Cpk = 1.2 | 关注 |
| Cpk = 0.9 | 预警 |
| Cpk = 0.5 | 严重 |
| 最近 3 个窗口 Cpk 连续下降 | 预警 |
| 最近 5 个测量值连续上升 | 预警 |
| 无上下限 | 不计算 Cp/Cpk |

### 19.3 UI 测试

| 项目 | 期望 |
|---|---|
| 预警结论表 | 样式规范，风险颜色明确 |
| 明细表 | 最多显示 50 条 |
| 趋势图 | 显示测量值、USL、LSL、理论值 |
| Cp/Cpk 图 | 显示 Cp、Cpk 和能力阈值线 |
| 窗口缩放 | 图表跟随 AI 助手窗口缩放 |
| 大数据结果 | 不交给 DeepSeek 重写大表，避免卡顿 |

## 20. 实施节点

1. 增加预警意图识别，只识别明确预警触发词。
2. 复用现有质量数据查询函数获取数据。
3. 增加测量值清洗、时间排序、上下限识别能力。
4. 增加 Cp/Cpk 计算函数。
5. 增加滚动窗口能力趋势计算。
6. 增加风险规则引擎。
7. 增加预警 HTML 表格生成。
8. 增加测量值趋势图和 Cp/Cpk 趋势图。
9. 接入 AI 助手聊天路由。
10. 完成静态检查、接口测试和 UI 验收。

## 21. 验收标准

- 用户明确要求预警时，AI 输出预警结论、规则命中、Cp/Cpk 趋势、图表和建议。
- 用户普通查询质量数据时，不自动预警。
- 所有查询仍依赖现有 HMI 查询入口，不直连数据库。
- Cpk 低于 1.00 时必须给出预警。
- 测量值超规格限时必须给出严重风险。
- 样本不足或数据混合时必须提示置信度降低。
- 输出结果符合商业软件展示要求，规范、稳定、可解释、可追溯。

## 22. Assumptions

- 第一版使用规则引擎，不引入机器学习训练模型。
- 默认展示最新 50 条质量数据。
- 推荐分析粒度为单一工位、单一测量位置、单一测量项目。
- 如果接口无法返回 150 条分析样本，则先使用 50 条完成预警。
- 所有结果以 AI 助手界面展示为主，不新增独立页面。
- 本阶段只输出技术文档，不修改代码。
