import React, { useState } from "react"; import { Link } from "react-router-dom"; import { hsapApi } from "@/app/hsap-api"; import { Button } from "@/components/ui/Button"; const ACTION_LABELS: Record = { train_dms: "DMS 训练", train_lane: "Lane 训练", eval_dms: "DMS 评估", eval_lane: "Lane 评估", promote_dms: "DMS 晋级", promote_lane: "Lane 晋级", pipeline_dms: "DMS 全流程", }; export const TrainingSubmitPage: React.FC = () => { const [action, setAction] = useState("train_dms"); const [project, setProject] = useState("dms"); const [task, setTask] = useState(""); const [pack, setPack] = useState(""); const [note, setNote] = useState(""); const [submitting, setSubmitting] = useState(false); const [result, setResult] = useState | null>(null); const [error, setError] = useState(null); const [errors, setErrors] = useState>({}); const validate = (): boolean => { const e: Record = {}; if (!task.trim()) e.task = "请输入任务名称"; if (["train_dms", "train_lane", "eval_dms", "eval_lane"].includes(action) && !pack.trim()) e.pack = "请输入数据包名称"; setErrors(e); return Object.keys(e).length === 0; }; const handleSubmit = async () => { if (!validate()) return; setSubmitting(true); setError(null); setResult(null); try { const res = await hsapApi.createTrainingRecord(action, { project, task: task.trim(), pack: pack.trim() }, note.trim() || undefined) as Record; setResult(res); } catch (e) { setError(String(e)); } setSubmitting(false); }; return (

训练提交

提交训练/评估任务,进入审核队列

{ setTask(e.target.value); setErrors((p) => ({ ...p, task: "" })); }} placeholder="如 ddaw, dam, lane_v1" /> {errors.task &&

{errors.task}

}
{ setPack(e.target.value); setErrors((p) => ({ ...p, pack: "" })); }} placeholder="如 dms_v1" /> {errors.pack &&

{errors.pack}

}