✨ feat: 增加打印信息
This commit is contained in:
@@ -129,9 +129,17 @@ async def detect_file(
|
||||
model_name: str,
|
||||
file: UploadFile = File(...)
|
||||
):
|
||||
# 1. 打印 model_name(直接打印字符串即可)
|
||||
print(f"接收到的 model_name: {model_name}")
|
||||
|
||||
# 2. 打印 file 的基本信息(文件名、内容类型等)
|
||||
print(f"文件名: {file.filename}")
|
||||
print(f"文件内容类型: {file.content_type}") # 例如 image/jpeg、text/plain 等
|
||||
"""Detect objects in an uploaded image file"""
|
||||
global model_manager
|
||||
|
||||
|
||||
|
||||
if not model_manager:
|
||||
raise HTTPException(status_code=500, detail="Model manager not initialized")
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
<svg-icon icon-class="code" />
|
||||
</div>
|
||||
|
||||
|
||||
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
||||
|
||||
<el-tooltip content="主题模式" effect="dark" placement="bottom">
|
||||
|
||||
@@ -12,6 +12,11 @@
|
||||
<el-option v-for="dict in task_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="模型" prop="modelName">
|
||||
<el-select v-model="queryParams.modelName" placeholder="请选择模型" clearable>
|
||||
<el-option v-for="dict in py_model_manager" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
@@ -40,7 +45,12 @@
|
||||
|
||||
<el-table v-loading="loading" :data="inspectionList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="任务ID" align="center" prop="taskId" />
|
||||
<!-- <el-table-column label="任务ID" align="center" prop="taskId" /> -->
|
||||
<el-table-column label="模型" align="center" prop="modelName">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="py_model_manager" :value="scope.row.modelName" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="任务名称" align="center" prop="taskName" />
|
||||
<el-table-column label="设备名称" align="center" prop="deviceName" />
|
||||
<el-table-column label="Cron表达式" align="center" prop="cronExpression" />
|
||||
@@ -90,6 +100,11 @@
|
||||
<el-form-item label="任务名称" prop="taskName">
|
||||
<el-input v-model="form.taskName" placeholder="请输入任务名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模型" prop="modelName">
|
||||
<el-select v-model="form.modelName" placeholder="请选择模型" style="width: 100%">
|
||||
<el-option v-for="dict in py_model_manager" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备" prop="deviceId">
|
||||
<el-select v-model="form.deviceId" placeholder="请选择设备" style="width: 100%">
|
||||
<el-option v-for="device in deviceList" :key="device.deviceId" :label="device.ip"
|
||||
@@ -146,7 +161,7 @@ import Crontab from '@/components/Crontab'
|
||||
import router from '@/router'
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { sys_normal_disable, task_status } = proxy.useDict('sys_normal_disable', 'task_status');
|
||||
const { sys_normal_disable, task_status, py_model_manager } = proxy.useDict('sys_normal_disable', 'task_status', 'py_model_manager');
|
||||
|
||||
const inspectionList = ref([]);
|
||||
const deviceList = ref([]);
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch">
|
||||
<el-form-item label="字典标签" prop="dictLabel">
|
||||
<el-form-item label="模型简称" prop="dictLabel">
|
||||
<el-input
|
||||
v-model="queryParams.dictLabel"
|
||||
placeholder="请输入字典标签"
|
||||
placeholder="请输入模型简称"
|
||||
clearable
|
||||
style="width: 200px"
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -70,15 +70,13 @@
|
||||
|
||||
<el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="字典编码" align="center" prop="dictCode" />
|
||||
<el-table-column label="字典标签" align="center" prop="dictLabel">
|
||||
<el-table-column label="模型简称" align="center" prop="dictLabel">
|
||||
<template #default="scope">
|
||||
<span v-if="(scope.row.listClass == '' || scope.row.listClass == 'default') && (scope.row.cssClass == '' || scope.row.cssClass == null)">{{ scope.row.dictLabel }}</span>
|
||||
<el-tag v-else :type="scope.row.listClass == 'primary' ? '' : scope.row.listClass" :class="scope.row.cssClass">{{ scope.row.dictLabel }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="字典键值" align="center" prop="dictValue" />
|
||||
<el-table-column label="字典排序" align="center" prop="dictSort" />
|
||||
<el-table-column label="模型名称" align="center" prop="dictValue" />
|
||||
<el-table-column label="状态" align="center" prop="status">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
|
||||
@@ -109,27 +107,11 @@
|
||||
<!-- 添加或修改参数配置对话框 -->
|
||||
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
|
||||
<el-form ref="dataRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="数据标签" prop="dictLabel">
|
||||
<el-form-item label="模型简称" prop="dictLabel">
|
||||
<el-input v-model="form.dictLabel" placeholder="请输入数据标签" />
|
||||
</el-form-item>
|
||||
<el-form-item label="数据键值" prop="dictValue">
|
||||
<el-input v-model="form.dictValue" placeholder="请输入数据键值" />
|
||||
</el-form-item>
|
||||
<el-form-item label="样式属性" prop="cssClass">
|
||||
<el-input v-model="form.cssClass" placeholder="请输入样式属性" />
|
||||
</el-form-item>
|
||||
<el-form-item label="显示排序" prop="dictSort">
|
||||
<el-input-number v-model="form.dictSort" controls-position="right" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="回显样式" prop="listClass">
|
||||
<el-select v-model="form.listClass">
|
||||
<el-option
|
||||
v-for="item in listClassOptions"
|
||||
:key="item.value"
|
||||
:label="item.label + '(' + item.value + ')'"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
<el-form-item label="模型名称" prop="dictValue">
|
||||
<el-input v-model="form.dictValue" placeholder="请输入模型名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
|
||||
@@ -71,28 +71,23 @@ public class HttpYoloDetector implements YoloDetector {
|
||||
byte[] jpgBytes = new byte[(int)(buffer.capacity())];
|
||||
buffer.get(jpgBytes);
|
||||
buffer.deallocate();
|
||||
|
||||
// 准备HTTP请求参数
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
|
||||
|
||||
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
|
||||
// 仅发送文件,model_name 放到查询参数
|
||||
// 1. 添加文件参数(正确)
|
||||
body.add("file", new CustomByteArrayResource(jpgBytes, "image.jpg"));
|
||||
// 2. 添加 model_name 作为表单参数(关键修改)
|
||||
body.add("model_name", modelName); // 直接添加到表单数据中
|
||||
|
||||
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
|
||||
|
||||
// 将 model_name 作为查询参数
|
||||
String urlWithQuery;
|
||||
try {
|
||||
String encoded = java.net.URLEncoder.encode(modelName, java.nio.charset.StandardCharsets.UTF_8.toString());
|
||||
urlWithQuery = apiUrl + (apiUrl.contains("?") ? "&" : "?") + "model_name=" + encoded;
|
||||
} catch (Exception ex) {
|
||||
urlWithQuery = apiUrl + (apiUrl.contains("?") ? "&" : "?") + "model_name=" + modelName;
|
||||
}
|
||||
// 不需要拼接查询参数,直接使用原始API URL
|
||||
String url = apiUrl;
|
||||
|
||||
// 发送请求到Python服务
|
||||
ResponseEntity<String> response = restTemplate.postForEntity(urlWithQuery, requestEntity, String.class);
|
||||
// 发送请求
|
||||
ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class);
|
||||
String responseBody = response.getBody();
|
||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
||||
log.error("HTTP检测失败: status={}, body={}", response.getStatusCodeValue(), responseBody);
|
||||
|
||||
Reference in New Issue
Block a user