fix: 预测时PyTorch架构不匹配自动回退; 清理火箭炮表单无关字段

This commit is contained in:
tian 2026-06-10 10:38:23 +08:00
parent f548616df0
commit a8a15fe0b0
6 changed files with 16 additions and 172 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -6,8 +6,8 @@
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="/favicon.ico">
<title>装备成本估算系统</title>
<script type="module" crossorigin src="/assets/index-BclX5sLE.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-D3ds-r_i.css">
<script type="module" crossorigin src="/assets/index-9zP5mdZu.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-xz9THzb6.css">
</head>
<body>
<noscript>

View File

@ -60,26 +60,6 @@
<el-form-item label="最小射程(km)" prop="min_range_km">
<el-input-number v-model="formData.min_range_km"></el-input-number>
</el-form-item>
<el-form-item label="机动方式" prop="mobility_type">
<el-select v-model="formData.mobility_type">
<el-option label="轮式" value="轮式"></el-option>
<el-option label="履带式" value="履带式"></el-option>
</el-select>
</el-form-item>
<el-form-item label="结构布局" prop="structure_layout">
<el-select v-model="formData.structure_layout">
<el-option label="8x8轮式底盘" value="8x8轮式底盘"></el-option>
<el-option label="6x6轮式底盘" value="6x6轮式底盘"></el-option>
<el-option label="4x4轮式底盘" value="4x4轮式底盘"></el-option>
<el-option label="履带式底盘" value="履带式底盘"></el-option>
</el-select>
</el-form-item>
<el-form-item label="发动机型号" prop="engine_model">
<el-input v-model="formData.engine_model"></el-input>
</el-form-item>
<el-form-item label="发动机参数" prop="engine_params">
<el-input v-model="formData.engine_params"></el-input>
</el-form-item>
<el-form-item label="功率(hp)" prop="power_hp">
<el-input-number v-model="formData.power_hp"></el-input-number>
</el-form-item>
@ -237,10 +217,6 @@ const formData = reactive({
combat_weight_kg: 15000,
speed_kmh: 60,
min_range_km: 5,
mobility_type: '轮式',
structure_layout: '6x6轮式底盘',
engine_model: 'WD615',
engine_params: '6缸直列柴油机',
power_hp: 280,
travel_range_km: 600,
wingspan_m: 2.5,
@ -394,10 +370,6 @@ const handleTypeChange = () => {
formData.combat_weight_kg = 15000
formData.speed_kmh = 60
formData.min_range_km = 5
formData.mobility_type = '轮式'
formData.structure_layout = '6x6轮式底盘'
formData.engine_model = 'WD615'
formData.engine_params = '6缸直列柴油机'
formData.power_hp = 280
formData.travel_range_km = 600
@ -449,10 +421,6 @@ const handleTypeChange = () => {
formData.combat_weight_kg = null
formData.speed_kmh = null
formData.min_range_km = null
formData.mobility_type = ''
formData.structure_layout = ''
formData.engine_model = ''
formData.engine_params = ''
formData.power_hp = null
formData.travel_range_km = null
}

View File

@ -106,7 +106,7 @@ def predict():
equipment_type = data.get('type')
logger.info(f"Received prediction request for equipment type: {equipment_type}")
# 获取最新的激活模型非PLS模型
# 获取最新的激活模型非PLS,尝试加载直到成功
with get_db_connection() as conn:
cursor = conn.cursor()
cursor.execute("""
@ -114,16 +114,24 @@ def predict():
WHERE equipment_type = ?
AND model_type != 'pls'
AND is_active = TRUE
ORDER BY training_date DESC LIMIT 1
ORDER BY training_date DESC
""", (equipment_type,))
model = cursor.fetchone()
models = cursor.fetchall()
if not model:
if not models:
return jsonify({'error': '未找到可用的模型'}), 404
# 使用普通预测方法
# 逐个尝试加载,跳过架构不兼容的模型
predictor = CostPredictor()
prediction = predictor.predict(data, model) # 使用普通predict方法
for model in models:
try:
prediction = predictor.predict(data, model)
break
except ValueError as e:
logger.warning(f"Model {model['model_name']} failed: {e}, trying next...")
continue
else:
return jsonify({'error': '所有激活模型加载失败,请重新训练'}), 500
# 返回预测结果
return jsonify({