feat: 添加评估通过状态和时间构建逻辑 #63

Merged
chenjiale merged 1 commits from cjl-new into master 1 month ago
  1. 45
      src/views/model/AssessReport.vue
  2. 27
      src/views/model/train/index.vue

45
src/views/model/AssessReport.vue

@ -100,6 +100,7 @@ export default defineComponent({
const cleanSummary = ref<AssessCleanSummary>()
const cleanModalVisible = ref(false)
const selectedVersion = ref<string>(((route.query.version as string) || 'v-test').replace('%20', ' '))
const evaluatePassed = ref(false)
const formModel = reactive<{
version: string
@ -299,6 +300,7 @@ export default defineComponent({
createMessage.error('缺少模型ID')
return
}
evaluatePassed.value = false
loading.value = true
try {
if (reportId.value) {
@ -350,7 +352,6 @@ export default defineComponent({
}
}
const toggleAlarm = (row: AssessPointRow, checked: boolean) => {
row.alarm = checked
assessRows.value = assessRows.value.filter(item => item.pointId !== row.pointId)
@ -438,6 +439,21 @@ export default defineComponent({
}
}
const buildTestTime = () => {
if (formModel.timeRange && formModel.timeRange.length === 2) {
return formModel.timeRange
.map(t => dayjs(t).format('YYYY-MM-DD HH:mm:ss'))
.join(',')
}
const trainTime = baseInfo.value?.trainTime || []
const pieces: string[] = []
trainTime.forEach((t: any) => {
if (t.st && t.et)
pieces.push(`${t.st},${t.et}`)
})
return pieces.join(';')
}
const buildLegacyPayload = (row?: AssessRow) => {
const points = pointRows.value
const total = points.length
@ -448,7 +464,7 @@ export default defineComponent({
points.forEach((p) => {
dead.push(p.dead ? 1 : 0)
limit.push(p.limit ? 1 : 0)
uplow.push(`${p.Lower ?? p.lower ?? ''},${p.Upper ?? p.upper ?? ''}`)
uplow.push(`${p.Lower ?? p.lower ?? null},${p.Upper ?? p.upper ?? null}`)
})
const selected = row ? [row] : assessRows.value
@ -459,19 +475,7 @@ export default defineComponent({
})
const intervalMs = baseInfo.value?.sampling ? Number(baseInfo.value.sampling) * 1000 : 0
let time = ''
if (formModel.timeRange && formModel.timeRange.length === 2) {
time = formModel.timeRange.join(',')
}
else {
const trainTime = baseInfo.value?.trainTime || []
const pieces: string[] = []
trainTime.forEach((t: any) => {
if (Number(t.mode) > 0 && t.st && t.et)
pieces.push(`${t.st},${t.et}`)
})
time = pieces.join(';')
}
const time = buildTestTime()
const limitValue = (() => {
try {
const m = baseInfo.value?.para?.Model_info
@ -515,6 +519,12 @@ export default defineComponent({
createMessage.warning('请先选择参与预警的参数')
return
}
const testTime = buildTestTime()
if (!testTime) {
createMessage.warning('缺少评估时间,请选择时间范围或补充训练时间')
return
}
evaluatePassed.value = false
evaluateLoading.value = true
try {
const legacyPayload = buildLegacyPayload(row)
@ -557,6 +567,7 @@ export default defineComponent({
if (!timestamp.value)
timestamp.value = dayjs().format('YYYY-MM-DD HH:mm:ss')
evaluatePassed.value = true
createMessage.success('评估完成')
}
catch (error) {
@ -576,6 +587,10 @@ export default defineComponent({
createMessage.warning('请至少保留一个参与预警的参数')
return
}
if (!evaluatePassed.value) {
createMessage.warning('评估未通过,无法提交')
return
}
submitLoading.value = true
try {
const scoreSummary = computeScore()

27
src/views/model/train/index.vue

@ -4,7 +4,7 @@ import type { Dayjs } from 'dayjs'
import { debounce } from 'lodash-es'
import dayjs from 'dayjs'
import { computed, defineComponent, onMounted, ref, toRaw, watch } from 'vue'
import { useRoute } from 'vue-router'
import { useRoute, useRouter } from 'vue-router'
import {
Button,
Card,
@ -82,13 +82,17 @@ export default defineComponent({
setup() {
const { createMessage } = useMessage()
const route = useRoute()
const router = useRouter()
const go = useGo()
const id = route.params.id
const routeVersion = route.query.version as string | undefined
const routeVersion = computed(() => route.query.version as string | undefined)
const model = ref(null)
const brushActivated = ref<Set<number>>(new Set())
const spinning = ref(false)
let trainTimeCopy = ''
const syncRouteVersion = (version: string) => {
router.replace({ query: { ...route.query, version } })
}
const applyModelValue = (payload: any) => {
if (!payload)
return
@ -112,10 +116,12 @@ export default defineComponent({
}
const fetchModelInfo = async (version?: string) => {
const path = version ? `${id}?version=${encodeURIComponent(version)}` : (routeVersion ? `${id}?version=${encodeURIComponent(routeVersion)}` : id)
const path = version ? `${id}?version=${encodeURIComponent(version)}` : (routeVersion.value ? `${id}?version=${encodeURIComponent(routeVersion.value)}` : id)
const modelInfo = await modelInfoApi(path)
applyModelValue(modelInfo)
selectedVersion.value = modelInfo?.version || modelInfo?.Cur_Version || ''
if (selectedVersion.value)
syncRouteVersion(selectedVersion.value)
await loadReportName(selectedVersion.value)
getHistory()
}
@ -386,6 +392,9 @@ export default defineComponent({
isInitBrush.value = false
return
}
if (!isInitBrush.value && model.value?.version != 'v-test')
return
const selected = params.batch[0].selected
if (selected.length > 0) {
const areas = mergeAreas(params.batch[0].areas).map(area => ({
@ -782,7 +791,7 @@ export default defineComponent({
const reportList = ref<AssessReportSimple[]>([])
const selectedReportId = ref<number | null>(null)
const reportName = ref<string>('暂无报告')
const reportNameOptions = ref<{ label: string; value: number }[]>([])
const reportNameOptions = ref<{ label: string, value: number }[]>([])
const reportNameSelectVisible = ref(false)
const selectedReportNameId = ref<number | null>(null)
const isVTestVersion = computed(
@ -888,7 +897,13 @@ export default defineComponent({
spinning.value = true
try {
const response = await bottomModelApi(model.value.id, selectedReportId.value)
applyModelValue(response)
const bottomedVersion = response?.Cur_Version || response?.version
if (bottomedVersion) {
selectedVersion.value = bottomedVersion
syncRouteVersion(bottomedVersion)
}
await fetchModelInfo(bottomedVersion)
console.log('模型下装成功:', model.value)
createMessage.success('模型下装成功')
reportModalVisible.value = false
}
@ -933,6 +948,7 @@ export default defineComponent({
if (!value)
return
await fetchModelInfo(value)
syncRouteVersion(value)
}
async function createDraftVersion() {
@ -957,6 +973,7 @@ export default defineComponent({
version: 'v-test',
}
}
syncRouteVersion('v-test')
createMessage.success('已创建草稿版本 v-test,请重新训练')
versionList.value = []
await fetchModelInfo('v-test')

Loading…
Cancel
Save