# 前端历史代码删除清单

> 生成方式：`python scripts/generate_frontend_removal_inventory.py`。本文件基于当前未提交删除集生成；合并前应再次生成并复核。

## 1. 基线与恢复方式

- 原解析报告识别出 348 个前端未匹配调用，产品确认其主体为已下线后端服务遗留；本轮不重建这些旧接口。
- 当前 Git 删除集包含 174 个前端文件；一个文件可包含多个调用，因此文件数不等于 348 个调用数。
- 原始代码备份：`/Users/maxiaolong/Documents/Codex/2026-07-06/g-i/DataOps-platform-backup-before-cleanup-20260716-170321.tar.gz`。
- SHA-256：`866c6c4aff127f88497a5ddf39ac8d8da93008cc784ae6f276f80a7cd17d4ef0`。
- 恢复优先级：先从 Git 历史恢复单文件；若原始工作区未入库内容缺失，再从上述只读备份提取。禁止将整份备份直接覆盖当前工作区。

## 2. 删除批次

| 批次 | 范围 | 处置依据 |
|---|---|---|
| C1 | Vanna、Airflow、模型训练、问卷薪酬、图表定制 | 产品确认整体下线 |
| C2 | 数据资源、数据模型、数据指标和旧数据资产原型 | 静态引用与路由复核后确认没有保留链路 |
| C3 | 旧数据工厂非 n8n 页面、执行/调度/节点管理 | 执行能力统一由 n8n 提供 |
| C4 | 旧系统管理、自助注册、租户、升级管理 | 后续以管理员/编辑者/查看者重建 |
| C5 | 不可达公共组件、API 封装和演示页 | 无活跃路由或 import 消费方 |

## 3. 明确保留例外

- n8n 适配页面和 `/api/datafactory/*` 后端代理接口；Workflow 保留为 n8n 原生概念。
- DataFlow 治理定义页面；后续新增一个 DataFlow 对多个 n8n Workflow 版本的映射。
- 数据治理知识库入口和工作台；当前为验收占位，下一阶段补齐真实能力。
- 数据安全入口；当前不宣称已实现安全治理能力。
- HOPMS 数据导入工具及其验收样例。

## 4. 按目录统计

| 分组 | 删除文件数 |
|---|---:|
| `views/dataBook` | 22 |
| `views/dataGovernance` | 21 |
| `views/modelSystem` | 20 |
| `views/systemManage` | 20 |
| `views/home` | 16 |
| `views/dataDiagram` | 15 |
| `views/dataOrigin` | 12 |
| `components` | 10 |
| `views/dataFactory` | 10 |
| `views/questionnaireInquiry` | 8 |
| `api` | 7 |
| `views/dataChart` | 5 |
| `views/dataAsset` | 3 |
| `views/knowledgeBaseResume` | 2 |
| `views/login` | 2 |
| `layout` | 1 |

## 5. 合并门禁

1. `npm --prefix frontend run build` 成功。
2. 路由表中不再出现已下线模块，活跃页面无失效 import。
3. `tests/test_cleanup_contract.py`、Docker 静态隔离测试与本地冒烟测试全部通过。
4. 数据安全、治理知识库、工作台、DataFlow 和 n8n 保留入口可访问。
5. 生产数据库不执行删表；仅提交代码和建库脚本清理。

## 6. 完整删除文件清单

### api

- `frontend/src/api/chartCustomized.js`
- `frontend/src/api/dataBook.js`
- `frontend/src/api/dataChart.js`
- `frontend/src/api/menu.js`
- `frontend/src/api/productionLine.js`
- `frontend/src/api/report.js`
- `frontend/src/api/system.js`

### components

- `frontend/src/components/AddToHome/index.vue`
- `frontend/src/components/ChartTemplate/humanResource/index.vue`
- `frontend/src/components/ChartTemplate/humanResource/showTable.vue`
- `frontend/src/components/Common/editPage.vue`
- `frontend/src/components/Common/featureSlide.vue`
- `frontend/src/components/Knowledge/index.vue`
- `frontend/src/components/Knowledge/talk.vue`
- `frontend/src/components/TaskProcess/index.vue`
- `frontend/src/components/UnifyExport/index.vue`
- `frontend/src/components/phoneVerify/index.vue`

### layout

- `frontend/src/layout/components/bellDrawer.vue`

### views/dataAsset

- `frontend/src/views/dataAsset/components/edit.vue`
- `frontend/src/views/dataAsset/details.vue`
- `frontend/src/views/dataAsset/index.vue`

### views/dataBook

- `frontend/src/views/dataBook/components/common.js`
- `frontend/src/views/dataBook/components/mGraphCopy.vue`
- `frontend/src/views/dataBook/components/mGraphList.vue`
- `frontend/src/views/dataBook/components/mInfo.vue`
- `frontend/src/views/dataBook/dataMetaData/components/metaDataTask.vue`
- `frontend/src/views/dataBook/dataMetaData/components/metaDomain.vue`
- `frontend/src/views/dataBook/dataModel/details.vue`
- `frontend/src/views/dataBook/dataModel/dynamic/graph.vue`
- `frontend/src/views/dataBook/dataModel/dynamic/info.vue`
- `frontend/src/views/dataBook/dataModel/dynamic/lineGraph.vue`
- `frontend/src/views/dataBook/dataModel/dynamic/metadata.vue`
- `frontend/src/views/dataBook/dataModel/index.vue`
- `frontend/src/views/dataBook/dataResource/details.vue`
- `frontend/src/views/dataBook/dataResource/dynamic/ddl.vue`
- `frontend/src/views/dataBook/dataResource/dynamic/graph.vue`
- `frontend/src/views/dataBook/dataResource/dynamic/info.vue`
- `frontend/src/views/dataBook/dataResource/dynamic/lineGraph.vue`
- `frontend/src/views/dataBook/dataResource/dynamic/metadata.vue`
- `frontend/src/views/dataBook/dataResource/index.vue`
- `frontend/src/views/dataBook/indicator/details.vue`
- `frontend/src/views/dataBook/indicator/dynamic/graph.vue`
- `frontend/src/views/dataBook/indicator/index.vue`

### views/dataChart

- `frontend/src/views/dataChart/dataChartConversation.vue`
- `frontend/src/views/dataChart/dataChartEdit.vue`
- `frontend/src/views/dataChart/dataChartEditChat.vue`
- `frontend/src/views/dataChart/index.vue`
- `frontend/src/views/dataChart/utils/options.js`

### views/dataDiagram

- `frontend/src/views/dataDiagram/myChartDiagram/components/chartList.vue`
- `frontend/src/views/dataDiagram/myChartDiagram/components/dataField.vue`
- `frontend/src/views/dataDiagram/myChartDiagram/components/generalSettings.vue`
- `frontend/src/views/dataDiagram/myChartDiagram/components/otherSetting.vue`
- `frontend/src/views/dataDiagram/myChartDiagram/components/tableSettings.vue`
- `frontend/src/views/dataDiagram/myChartDiagram/components/tableShow.vue`
- `frontend/src/views/dataDiagram/myChartDiagram/components/utils/chartList.js`
- `frontend/src/views/dataDiagram/myChartDiagram/components/utils/dataDeal.js`
- `frontend/src/views/dataDiagram/myChartDiagram/components/utils/getFieldData.js`
- `frontend/src/views/dataDiagram/myChartDiagram/edit.vue`
- `frontend/src/views/dataDiagram/myChartDiagram/editChart.vue`
- `frontend/src/views/dataDiagram/myChartDiagram/index.vue`
- `frontend/src/views/dataDiagram/myChartDiagram/utils/chartInit.js`
- `frontend/src/views/dataDiagram/teamSharingDiagram/getFieldData.js`
- `frontend/src/views/dataDiagram/teamSharingDiagram/index.vue`

### views/dataFactory

- `frontend/src/views/dataFactory/components/common/excelUpload/index.vue`
- `frontend/src/views/dataFactory/components/graph.vue`
- `frontend/src/views/dataFactory/components/logPage.vue`
- `frontend/src/views/dataFactory/dispatch/components/dataDispatch.vue`
- `frontend/src/views/dataFactory/dispatch/index.vue`
- `frontend/src/views/dataFactory/logManage/index.vue`
- `frontend/src/views/dataFactory/nodeManage/components/edit.vue`
- `frontend/src/views/dataFactory/nodeManage/index.vue`
- `frontend/src/views/dataFactory/productionLine/index.vue`
- `frontend/src/views/dataFactory/productionLineMonitor/index.vue`

### views/dataGovernance

- `frontend/src/views/dataGovernance/components/searchNodes.vue`
- `frontend/src/views/dataGovernance/dataIndicator/components/dataList.vue`
- `frontend/src/views/dataGovernance/dataIndicator/components/edit.vue`
- `frontend/src/views/dataGovernance/dataIndicator/components/editBase.vue`
- `frontend/src/views/dataGovernance/dataIndicator/components/indicatorList.vue`
- `frontend/src/views/dataGovernance/dataIndicator/index.vue`
- `frontend/src/views/dataGovernance/dataModules/components/dataList.vue`
- `frontend/src/views/dataGovernance/dataModules/components/edit.vue`
- `frontend/src/views/dataGovernance/dataModules/components/editBase.vue`
- `frontend/src/views/dataGovernance/dataModules/components/editByDDL.vue`
- `frontend/src/views/dataGovernance/dataModules/components/editMetadataAdd.vue`
- `frontend/src/views/dataGovernance/dataModules/components/executeScript.vue`
- `frontend/src/views/dataGovernance/dataModules/index.vue`
- `frontend/src/views/dataGovernance/dataProcess/components/editCopy.vue`
- `frontend/src/views/dataGovernance/dataResource/components/Database/index.vue`
- `frontend/src/views/dataGovernance/dataResource/components/Structure/index.vue`
- `frontend/src/views/dataGovernance/dataResource/components/Unstructured/index.vue`
- `frontend/src/views/dataGovernance/dataResource/components/editBase.vue`
- `frontend/src/views/dataGovernance/dataResource/components/editMateDataAdd.vue`
- `frontend/src/views/dataGovernance/dataResource/components/editSelected.vue`
- `frontend/src/views/dataGovernance/dataResource/index.vue`

### views/dataOrigin

- `frontend/src/views/dataOrigin/rdbmsDataSource/components/edit.vue`
- `frontend/src/views/dataOrigin/rdbmsDataSource/index.vue`
- `frontend/src/views/dataOrigin/unstructuredData/autoCollection/dynamic/pageParsing.vue`
- `frontend/src/views/dataOrigin/unstructuredData/autoCollection/dynamic/spiderManagement.vue`
- `frontend/src/views/dataOrigin/unstructuredData/autoCollection/index.vue`
- `frontend/src/views/dataOrigin/unstructuredData/manualCollection/components/MCamera.vue`
- `frontend/src/views/dataOrigin/unstructuredData/manualCollection/components/ManualImportEdit.vue`
- `frontend/src/views/dataOrigin/unstructuredData/manualCollection/components/imageImportEdit.vue`
- `frontend/src/views/dataOrigin/unstructuredData/manualCollection/dynamic/excelImport.vue`
- `frontend/src/views/dataOrigin/unstructuredData/manualCollection/dynamic/imageImport.vue`
- `frontend/src/views/dataOrigin/unstructuredData/manualCollection/dynamic/manualImport.vue`
- `frontend/src/views/dataOrigin/unstructuredData/manualCollection/index.vue`

### views/home

- `frontend/src/views/home/components/chart/barChart.vue`
- `frontend/src/views/home/components/chart/categoryChart.vue`
- `frontend/src/views/home/components/chart/lineChart.vue`
- `frontend/src/views/home/components/chart/pieChart.vue`
- `frontend/src/views/home/components/chart/radarChart.vue`
- `frontend/src/views/home/components/dynamic/barPackage.vue`
- `frontend/src/views/home/components/dynamic/categoryPackage.vue`
- `frontend/src/views/home/components/dynamic/dataPackage.vue`
- `frontend/src/views/home/components/dynamic/datasetPackage.vue`
- `frontend/src/views/home/components/dynamic/linePackage.vue`
- `frontend/src/views/home/components/dynamic/listPackage.vue`
- `frontend/src/views/home/components/dynamic/mapPackage.vue`
- `frontend/src/views/home/components/dynamic/piePackage.vue`
- `frontend/src/views/home/components/dynamic/radarPackage.vue`
- `frontend/src/views/home/components/featureModule.vue`
- `frontend/src/views/home/components/largeScreen.vue`

### views/knowledgeBaseResume

- `frontend/src/views/knowledgeBaseResume/components/edit.vue`
- `frontend/src/views/knowledgeBaseResume/index.vue`

### views/login

- `frontend/src/views/login/components/forget.vue`
- `frontend/src/views/login/components/register.vue`

### views/modelSystem

- `frontend/src/views/modelSystem/backup/backupCreate.vue`
- `frontend/src/views/modelSystem/backup/backupDetails.vue`
- `frontend/src/views/modelSystem/backup/backupDetailsConfirm.vue`
- `frontend/src/views/modelSystem/backup/index.vue`
- `frontend/src/views/modelSystem/modelHistory/index.vue`
- `frontend/src/views/modelSystem/modelHistory/modelDetails.vue`
- `frontend/src/views/modelSystem/modelQa/index.vue`
- `frontend/src/views/modelSystem/modelQa/modelQaEdit.vue`
- `frontend/src/views/modelSystem/modelStatistics/index.vue`
- `frontend/src/views/modelSystem/modelTrain/index.vue`
- `frontend/src/views/modelSystem/modelTrain/modelTrainEdit.vue`
- `frontend/src/views/modelSystem/modelTrain/modelTrainFiles.vue`
- `frontend/src/views/modelSystem/modelTrain/modelTrainLog.vue`
- `frontend/src/views/modelSystem/modelTrain/modelTrainStatus.vue`
- `frontend/src/views/modelSystem/modelTrain/modelTrainTable.vue`
- `frontend/src/views/modelSystem/modelTrain/modelTrainTableSubmit.vue`
- `frontend/src/views/modelSystem/modelTrainManage/index.vue`
- `frontend/src/views/modelSystem/modelTrainManage/modelTrainManageCombine.vue`
- `frontend/src/views/modelSystem/modelTrainManage/modelTrainManageEdit.vue`
- `frontend/src/views/modelSystem/modelTrainManage/modelTrainManageUpload.vue`

### views/questionnaireInquiry

- `frontend/src/views/questionnaireInquiry/investigationReport/components/common/theCommon copy.vue`
- `frontend/src/views/questionnaireInquiry/investigationReport/components/common/theCommon.vue`
- `frontend/src/views/questionnaireInquiry/investigationReport/components/fileExport.vue`
- `frontend/src/views/questionnaireInquiry/investigationReport/components/groupCompensation.vue`
- `frontend/src/views/questionnaireInquiry/investigationReport/components/hotelSalary.vue`
- `frontend/src/views/questionnaireInquiry/investigationReport/components/sampleStatistics.vue`
- `frontend/src/views/questionnaireInquiry/investigationReport/details.vue`
- `frontend/src/views/questionnaireInquiry/investigationReport/index.vue`

### views/systemManage

- `frontend/src/views/systemManage/roleManage/components/DataPermission.vue`
- `frontend/src/views/systemManage/roleManage/components/userEdit.vue`
- `frontend/src/views/systemManage/roleManage/index.vue`
- `frontend/src/views/systemManage/routeManage/components/edit.vue`
- `frontend/src/views/systemManage/routeManage/components/list.vue`
- `frontend/src/views/systemManage/routeManage/index.vue`
- `frontend/src/views/systemManage/routeManage/workbenchManage/edit.vue`
- `frontend/src/views/systemManage/routeManage/workbenchManage/index.vue`
- `frontend/src/views/systemManage/safety/components/resetPassword.vue`
- `frontend/src/views/systemManage/safety/index.vue`
- `frontend/src/views/systemManage/systemIndividuation/index.vue`
- `frontend/src/views/systemManage/tenantry/index.vue`
- `frontend/src/views/systemManage/update/components/dynamic/logDetails.vue`
- `frontend/src/views/systemManage/update/components/history.vue`
- `frontend/src/views/systemManage/update/components/monitor.vue`
- `frontend/src/views/systemManage/update/components/upload.vue`
- `frontend/src/views/systemManage/update/index.vue`
- `frontend/src/views/systemManage/user/components/editUser.vue`
- `frontend/src/views/systemManage/user/components/resetPassword.vue`
- `frontend/src/views/systemManage/user/index.vue`
