# 模型训练任务界面设计方案 本方案基于原有需求,对“模型训练面板”的功能模块、交互流程及字段定义进行了全面细化与完善,确保用户体验流畅且功能完整。 ## 1. 任务列表 (Task List) ### 1.1 查询栏 * **任务名称**:文本输入框(支持模糊搜索)。 * **算法类型**:下拉选择框(如 GPR, MLP, FastRBF, ...)。 * **设备类型**:下拉选择框(如 CylindricalTank, AnnularTank, ...)。 * **状态**:下拉选择框(全部, Pending, Training, Success, Failed)。 * **操作按钮**:[查询] [重置] [新建训练任务] ### 1.2 数据表格 | 列名 | 数据类型 | 说明 | | :--- | :--- | :--- | | **任务名称** | String | 点击名称可直接跳转详情页 | | **算法类型** | String | GPR / MLP 等 | | **设备类型** | String | CylindricalTank 等 | | **训练集来源** | String | 显示文件名或数据源类型(如 "Upload: dataset.csv") | | **核心指标** | String | 成功时显示关键指标(如 RMSE: 0.02, R2: 0.98),失败/进行中显示 "-" | | **状态** | Status | 使用 Tag 区分颜色:
🔵 Pending (等待中)
🟡 Training (训练中)
🟢 Success (成功)
🔴 Failed (失败) | | **创建时间** | DateTime | yyyy-MM-dd HH:mm:ss | | **操作** | ButtonGroup | [查看详情] [发布模型] [删除] | * **分页控件**:位于表格底部,支持调整每页显示条数。 ### 1.3 操作说明 * **查看详情**:任何状态下均可点击,跳转至详情页。 * **发布模型**:仅当状态为 **Success** 时可用(否则禁用)。点击弹出发布确认框。 * **删除**:仅当状态为 **Success** 或 **Failed** 时可用(Training 中不可删除)。点击需二次确认,删除后不可恢复。 --- ## 2. 新建训练任务 (Create Task) 采用分步向导或单页表单形式,推荐单页表单。 ### 2.1 基础配置 * **任务名称** (必填):文本框,建议自动生成默认名(如 "Train_GPR_20240311_001")。 * **设备类型** (必填):下拉选择。 * **算法类型** (必填):下拉选择。选择后,下方的“参数配置”应动态加载该算法的默认参数。 ### 2.2 数据准备 * **数据源类型** (必填):单选框 [文件上传] / [临界库数据]。 * **选中“文件上传”**: * 显示文件上传组件(支持 .csv, .xlsx)。 * 上传后需显示文件名及大小,并提供“重新上传”按钮。 * **选中“临界库数据”**(二期功能): * 显示时间范围选择器(开始时间 - 结束时间)。 * 显示“预览数据量”按钮(如:查询到 5000 条记录)。 ### 2.3 参数配置 * **训练超参数**: * 提供“加载默认值”按钮。 * 使用 **JSON 编辑器** 或 **Key-Value 列表** 展示参数(如 `epochs`, `learning_rate`, `kernel` 等)。 * 相比单纯文本框,JSON 编辑器能提供格式校验,避免输入错误。 ### 2.4 底部按钮 * [提交训练]:点击后校验表单,成功则跳转回列表页并自动刷新。 * [取消]:返回列表页。 --- ## 3. 查看详情 (Task Details) 详情页分为三个主要区域:基础信息、训练监控/结果、日志。 ### 3.1 基础信息卡片 展示任务的静态配置信息: * 任务名称、ID * 算法类型、设备类型 * 数据源路径 * 训练参数(JSON 格式化展示,只读) * 创建时间、更新时间 ### 3.2 训练监控/结果区 根据状态不同,展示不同内容: * **Training (训练中)**: * **进度条**:显示当前 Epoch/Total Epochs。 * **实时指标图**:折线图展示 Loss (损失函数) 随迭代次数的变化。前端定时轮询或通过 WebSocket 获取最新数据。 * **当前指标**:实时显示当前的 RMSE, Accuracy 等。 * **Success (成功)**: * **最终指标卡片**:RMSE, MAE, R2, MaxError 等关键评估指标。 * **误差散点图**:展示 `metrics_image_path` 对应的图片(预测值 vs 真实值)。 * **特征重要性**(可选):如果算法支持,展示特征权重图。 * **Failed (失败)**: * 显示醒目的红色错误提示。 ### 3.3 错误日志区 * 仅在 **Failed** 状态或 **Training** 状态下显示。 * 展示后端或 Python 服务返回的详细异常堆栈或 Print 输出,便于排查问题。 ### 3.4 顶部/底部操作栏 * [发布模型](仅 Success 状态可见) * [返回列表] --- ## 4. 模型发布 (Publish Model) 将临时训练任务产出的模型正式注册到系统模型库中。 ### 4.1 交互流程 1. 在列表页点击“发布模型”,或在详情页点击“发布模型”。 2. 弹出模态框(Modal)。 ### 4.2 弹窗内容 * **任务名称**:(只读回显) * **算法/设备**:(只读回显) * **版本号 (Version Tag)** (必填):文本框。 * 提示用户输入版本标识,如 `v1.0`, `20240311-release`。 * 后端需校验该算法+设备下版本号的唯一性。 * **备注描述**:多行文本框(可选),用于记录模型特性或变更点。 ### 4.3 确认操作 * [确认发布]: * 后端将临时模型文件移动到正式目录。 * 在 `algorithm_model` 表中创建新记录。 * 发布成功后,提示用户“发布成功,请前往模型管理页激活使用”。 * 关闭弹窗,刷新列表(建议在列表中增加“已发布”标记或状态)。 * [取消]:关闭弹窗。 ### 4.4 模型路径规划 模型路径规划建议(推荐目录结构) 以你现有的配置 file-space.model-path 为根(例如 E:/python_coding/keffCenter/models/ ),建议分两棵树: - 训练产物(可清理) - {modelRoot}/runs/{algorithmType}/{deviceType}/{taskId}/ - 里面放: pipeline.pkl 、 metrics.json 、 feature_map.json 、 metrics.png 、 train_params.json 等 - 优点:用 taskId 保证唯一、不覆盖 - 发布模型(长期保留、可回滚) - {modelRoot}/published/{algorithmType}/{deviceType}/{versionTag}/ - 里面放: pipeline.pkl (或带 hash 的文件名)、配套文件、manifest(可选) - algorithm_model.model_path 指向这里 另外建议: - 路径里尽量只用 algorithmType/deviceType/versionTag/taskId 这种稳定字段,避免包含中文/空格 - versionTag 建议由用户输入但要校验(只允许 [a-zA-Z0-9._-] ),避免路径注入 - 如果担心文件重复,可在发布时生成 artifactId (hash)并写入模型表,便于去重/校验一致性