训练体系整合与标注单阶段化

- 标注:AI 预标注直写 labels_json(去候选确认两阶段);重叠去重(minIoU);全量标注按钮
- 训练:脚本迁移入 server/training/(Go 化 prepare_yolo/analyze_rfdetr,保留 train_server.py);tflite 产物自检并入训练流程(check_tflite)
- 数据目录/权重不进 git;.gitignore 迁移至仓库根
This commit is contained in:
2026-08-26 18:22:56 +08:00
parent 4f39e85882
commit a0b115d954
108 changed files with 10877 additions and 798 deletions
+56 -10
View File
@@ -1,14 +1,22 @@
<script setup>
import { computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import {
List as ListIcon,
Key as KeyIcon,
Refresh as RefreshIcon,
SwitchButton as SwitchIcon,
Picture as PictureIcon,
} from '@element-plus/icons-vue'
const route = useRoute()
const router = useRouter()
// 详情页 /datasets/:id 仍高亮「数据训练」菜单项
const activeMenu = computed(() =>
route.path.startsWith('/datasets') ? '/datasets' : route.path,
)
function logout() {
localStorage.removeItem('adminToken')
router.push('/login')
@@ -21,8 +29,11 @@ function logout() {
<el-container v-else class="app-layout">
<el-aside width="200px" class="app-aside">
<div class="app-logo">视野管理端</div>
<el-menu :default-active="route.path" router>
<el-menu :default-active="activeMenu" router>
<el-menu-item index="/datasets">
<el-icon><PictureIcon /></el-icon>
<span>数据训练</span>
</el-menu-item>
<el-menu-item index="/orders">
<el-icon><ListIcon /></el-icon>
<span>订单管理</span>
@@ -31,6 +42,10 @@ function logout() {
<el-icon><KeyIcon /></el-icon>
<span>授权管理</span>
</el-menu-item>
<el-menu-item index="/app-versions">
<el-icon><RefreshIcon /></el-icon>
<span>版本管理</span>
</el-menu-item>
</el-menu>
</el-aside>
<el-container>
@@ -52,14 +67,6 @@ function logout() {
.app-aside {
background: #001529;
}
.app-logo {
height: 56px;
line-height: 56px;
text-align: center;
color: #fff;
font-size: 16px;
font-weight: 600;
}
.app-aside :deep(.el-menu) {
border-right: none;
background: #001529;
@@ -86,4 +93,43 @@ function logout() {
.app-main {
background: #f0f2f5;
}
/* 手机竖屏:侧栏收为顶部横向菜单,页面自然滚动 */
@media (max-width: 767px) {
.app-layout {
display: block;
height: auto;
}
.app-aside {
width: 100% !important;
}
.app-logo {
height: 48px;
line-height: 48px;
font-size: 15px;
}
.app-aside :deep(.el-menu) {
display: flex;
flex-wrap: wrap;
border-bottom: none;
}
.app-aside :deep(.el-menu-item) {
flex: 1;
justify-content: center;
height: 44px;
line-height: 44px;
min-width: 96px;
}
.app-header {
height: 48px;
padding: 0 12px;
}
.app-main {
overflow: visible;
padding: 10px;
}
.app-main :deep(.el-card) {
overflow-x: auto;
}
}
</style>