diff --git a/docs/功能测试-鹰眼.md b/docs/功能测试-鹰眼.md
new file mode 100644
index 00000000..e0f05ada
--- /dev/null
+++ b/docs/功能测试-鹰眼.md
@@ -0,0 +1,36 @@
+# 鹰眼功能测试任务列表
+
+## 基础入口
+
+- [ ] 进入 `数据中台 / 相关性分析 / 鹰眼`,页面正常加载,无控制台报错。
+- [ ] 左侧分析条件区域显示生产批次、工序、NG 码三个筛选项和分析按钮。
+- [ ] 页面右侧显示分析详情区域,未查询时为空状态。
+
+## 查询条件
+
+- [ ] 选择生产批次后,工序下拉框自动加载该批次下的不良工序列。
+- [ ] 选择工序后,NG 码下拉框自动切换为该工序对应的不良代码。
+- [ ] 点击重置后,批次、工序、NG 码、相关性结果和图表全部清空。
+
+## 相关性分析
+
+- [ ] 未选择生产批次时点击分析,系统提示需要选择批次。
+- [ ] 未选择工序时点击分析,系统提示需要选择工序。
+- [ ] 选择有效批次、工序和 NG 码后点击分析,Pearson 相关性散点图正常渲染。
+- [ ] PCC 表格显示工序参数、样本量、相关系数、P 值和相关性判断。
+- [ ] 卡方表格显示工序参数、样本量、卡方值、P 值和相关性判断。
+- [ ] 有不能参与分析的数据列时,顶部折叠区域展示对应参数名称。
+
+## 图表与交互
+
+- [ ] 散点图鼠标悬停时显示参数名称、相关系数和 P 值。
+- [ ] P 值大于 0.05 的记录以蓝色相关状态显示。
+- [ ] P 值小于或等于 0.05 的记录以红色不相关状态显示。
+- [ ] 已选择 NG 码时点击表格中的相关性文字,弹出分析报告弹窗。
+- [ ] 分析报告弹窗内按分类展示折线分布图,关闭后再次打开能正常刷新。
+
+## 兼容性
+
+- [ ] 页面在 1366px 宽度下表格和图表不重叠。
+- [ ] 浏览器窗口缩放后图表能自动适配。
+- [ ] 切换不同批次再次分析,旧批次结果不会残留。
diff --git a/docs/迁移任务列表.md b/docs/迁移任务列表.md
index 87e4e308..fb442f2c 100644
--- a/docs/迁移任务列表.md
+++ b/docs/迁移任务列表.md
@@ -3,8 +3,8 @@
> 根据 `后台Webman界面截图对照表.md` 生成。状态以当前 V2 项目中已落地的页面目录为准。
- 总功能数:79
-- 已迁移:34
-- 未迁移:45
+- 已迁移:35
+- 未迁移:44
| 状态 | 一级模块 | 二级模块 | 三级模块 | 功能说明 | V2 目标路径 |
|:---:|---|---|---|---|---|
@@ -86,7 +86,7 @@
| ✅ | 数据中台 (Data Platform) | 基础追溯 (Traceability) | 电池追溯 (Battery Traceability) | 电池追溯 | `src/views/data-platform/traceability/battery/` |
| ✅ | 数据中台 (Data Platform) | 生产报表 (Production Reports) | 设备履历报表 (Equipment History Report) | 设备履历报表 | `src/views/data-platform/production-reports/equipment-history/` |
| ✅ | 数据中台 (Data Platform) | 生产报表 (Production Reports) | 电池详情报表 (Battery Detail Report) | 电池详情报表 | `src/views/data-platform/production-reports/battery-detail/` |
-| ⬜ | 数据中台 (Data Platform) | 相关性分析 (Correlation Analysis) | 鹰眼 (Hawkeye) | | 待确认 |
+| ✅ | 数据中台 (Data Platform) | 相关性分析 (Correlation Analysis) | 鹰眼 (Hawkeye) | 鹰眼 | `src/views/data-platform/correlation-analysis/hawkeye/` |
## 状态说明
diff --git a/src/api/data-platform/correlation-analysis/hawkeye.js b/src/api/data-platform/correlation-analysis/hawkeye.js
new file mode 100644
index 00000000..2fa39c63
--- /dev/null
+++ b/src/api/data-platform/correlation-analysis/hawkeye.js
@@ -0,0 +1,43 @@
+import { request } from '@/api/_service'
+
+const BASE = 'data_middleground/eagle_eyes/'
+
+function apiParams (method, data = {}) {
+ return {
+ method,
+ platform: 'admin',
+ ...data
+ }
+}
+
+export function getNGWorkstationBatch (data) {
+ return request({
+ url: BASE + 'getNGWorkstationBatch',
+ method: 'get',
+ params: apiParams('data_middleground_eagle_eyes_getNGWorkstationBatch', data)
+ })
+}
+
+export function getBatchResultParam (data) {
+ return request({
+ url: BASE + 'getBatchResultParam',
+ method: 'get',
+ params: apiParams('data_middleground_eagle_eyes_getBatchResultParam', data)
+ })
+}
+
+export function analyzeHawkeyeCorrelation (data) {
+ return request({
+ url: BASE + 'saveCsvFile',
+ method: 'get',
+ params: apiParams('data_middleground_eagle_eyes_saveCsvFile', data)
+ })
+}
+
+export function getDataClassificationByNGCode (data) {
+ return request({
+ url: BASE + 'getDataClassificationByNGCode',
+ method: 'get',
+ params: apiParams('data_middleground_eagle_eyes_get_data_classification_by_ng_code', data)
+ })
+}
diff --git a/src/locales/en.json b/src/locales/en.json
index 2b65a3b0..a1b8c0da 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -1378,6 +1378,42 @@
"prompt": "Prompt",
"create_download_task_success": "Download task created successfully"
}
+ },
+ "correlation_analysis": {
+ "hawkeye": {
+ "analysis_condition": "Analysis Conditions",
+ "analyze": "Analyze",
+ "reset": "Reset",
+ "production_batch": "Production Batch",
+ "select_production_batch": "Select production batch",
+ "process": "Process",
+ "select_ng_column": "Select NG column",
+ "ng_code": "NG Code",
+ "select_ng_code": "Select NG code",
+ "analysis_detail": "Analysis Detail",
+ "correlated": "Correlated",
+ "not_correlated": "Not Correlated",
+ "correlated_short": "Related",
+ "not_correlated_short": "Not Related",
+ "no_analysis_data_hint": "Columns skipped because values are all identical or all different",
+ "process_param": "Process Parameter",
+ "sample_size": "Sample Size",
+ "correlation_coeff": "Correlation Coeff.",
+ "chi_square_value": "Chi-square Value",
+ "p_value": "P Value",
+ "correlation": "Correlation",
+ "p_value_hint": "P value greater than 0.05 is considered correlated",
+ "p_value_hint2": "P value greater than 0.05 is considered correlated",
+ "scientific_notation_hint": "Value may be shown in scientific notation",
+ "tooltip_dependent_var": "Dependent Variable",
+ "tooltip_corr_coeff": "Correlation Coeff.",
+ "tooltip_p_value": "P Value",
+ "analysis_report": "Analysis Report",
+ "total": "Total",
+ "no_data": "No analysis data",
+ "please_select_batch": "Select production batch",
+ "please_select_process": "Select process"
+ }
}
}
},
diff --git a/src/locales/zh-chs.json b/src/locales/zh-chs.json
index eccd29f7..4ea95695 100644
--- a/src/locales/zh-chs.json
+++ b/src/locales/zh-chs.json
@@ -1378,6 +1378,42 @@
"prompt": "提示",
"create_download_task_success": "创建下载任务成功"
}
+ },
+ "correlation_analysis": {
+ "hawkeye": {
+ "analysis_condition": "分析条件",
+ "analyze": "分析",
+ "reset": "重置",
+ "production_batch": "生产批次",
+ "select_production_batch": "请选择生产批次",
+ "process": "工序",
+ "select_ng_column": "请选择NG列",
+ "ng_code": "NG码",
+ "select_ng_code": "请选择NG码",
+ "analysis_detail": "分析详情",
+ "correlated": "相关",
+ "not_correlated": "不相关",
+ "correlated_short": "相关",
+ "not_correlated_short": "不相关",
+ "no_analysis_data_hint": "因列中数据完全相同或完全不相同,而不进行分析的数据列",
+ "process_param": "工序参数",
+ "sample_size": "样本量",
+ "correlation_coeff": "相关系数",
+ "chi_square_value": "卡方值",
+ "p_value": "P值",
+ "correlation": "相关性",
+ "p_value_hint": "P值大于0.05时判定为相关",
+ "p_value_hint2": "P值大于0.05时判定为相关",
+ "scientific_notation_hint": "数值可能以科学计数法显示",
+ "tooltip_dependent_var": "因变量",
+ "tooltip_corr_coeff": "相关系数",
+ "tooltip_p_value": "P值",
+ "analysis_report": "分析报告",
+ "total": "总数",
+ "no_data": "暂无分析数据",
+ "please_select_batch": "请选择生产批次",
+ "please_select_process": "请选择工序"
+ }
}
}
},
diff --git a/src/router/modules/data-platform.js b/src/router/modules/data-platform.js
index d101770b..bf3662a9 100644
--- a/src/router/modules/data-platform.js
+++ b/src/router/modules/data-platform.js
@@ -55,6 +55,12 @@ export default {
name: `${pre}report-battery-detail`,
meta: { ...meta, cache: true, title: '电池详情报表' },
component: _import('data-platform/production-reports/battery-detail')
+ },
+ {
+ path: 'pancake/eagle_eyes',
+ name: `${pre}formation-data-record`,
+ meta: { ...meta, cache: true, title: '鹰眼' },
+ component: _import('data-platform/correlation-analysis/hawkeye')
}
])('data_middleground-')
}
diff --git a/src/views/data-platform/correlation-analysis/hawkeye/index.vue b/src/views/data-platform/correlation-analysis/hawkeye/index.vue
new file mode 100644
index 00000000..3dd16b19
--- /dev/null
+++ b/src/views/data-platform/correlation-analysis/hawkeye/index.vue
@@ -0,0 +1,403 @@
+
+
+
+
+
+
+
+
+
+
+ {{ getParamName(item) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t(key('correlation')) }}
+
+
+
+
+
+ {{ relationText(scope.row.pv) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t(key('p_value')) }}
+
+
+
+
+
+
+
+ {{ $t(key('correlation')) }}
+
+
+
+
+
+ {{ relationText(scope.row.pv) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+