feat: 完善模型管理功能
- 新增模型 API 路由,支持 CRUD 和测试连接 - 支持 MiniMax、GLM、OpenAI Compatible 三种供应商 - 添加连接状态持久化 (untested/connected/disconnected) - 修复 CORS 和数据库模型兼容性问题 - 前端 UI 优化:供应商默认 API 地址自动填充 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,33 @@
|
||||
<!-- Hero Section -->
|
||||
<section class="hero">
|
||||
<div class="hero-content">
|
||||
<!-- Logo -->
|
||||
<div class="hero-logo">
|
||||
<svg width="56" height="56" viewBox="0 0 56 56" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="logoGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#00d4ff"/>
|
||||
<stop offset="100%" style="stop-color:#7c3aed"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<!-- 外圈 - 数据集合 -->
|
||||
<rect x="4" y="4" width="48" height="48" rx="12" stroke="url(#logoGradient)" stroke-width="2.5" fill="none" opacity="0.3"/>
|
||||
<!-- Y 字母 - 数据流/分支 -->
|
||||
<path d="M18 42V22L28 12V18" stroke="url(#logoGradient)" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
|
||||
<path d="M28 18L38 28" stroke="url(#logoGradient)" stroke-width="3.5" stroke-linecap="round" fill="none"/>
|
||||
<!-- 数据节点 - 神经网络样式 -->
|
||||
<circle cx="18" cy="42" r="3" fill="#00d4ff"/>
|
||||
<circle cx="28" cy="12" r="3" fill="#7c3aed"/>
|
||||
<circle cx="38" cy="28" r="3" fill="#00d4ff"/>
|
||||
<circle cx="28" cy="18" r="2.5" fill="#00d4ff" opacity="0.7"/>
|
||||
<!-- 连接线 - 数据流向 -->
|
||||
<circle cx="28" cy="32" r="2" fill="#7c3aed" opacity="0.5"/>
|
||||
<circle cx="20" cy="32" r="1.5" fill="#00d4ff" opacity="0.4"/>
|
||||
<circle cx="36" cy="38" r="1.5" fill="#7c3aed" opacity="0.4"/>
|
||||
</svg>
|
||||
<span class="logo-text">YG<span class="logo-highlight">Datasets</span></span>
|
||||
</div>
|
||||
|
||||
<div class="hero-badge">
|
||||
<span class="badge-dot"></span>
|
||||
<span>AI 驱动数据生成</span>
|
||||
@@ -20,103 +47,85 @@
|
||||
<el-icon><Plus /></el-icon>
|
||||
创建项目
|
||||
</el-button>
|
||||
<el-button size="large" @click="goToDataSquare" class="btn-secondary">
|
||||
<el-icon><Grid /></el-icon>
|
||||
数据集广场
|
||||
<el-button size="large" @click="goToModels" class="btn-secondary">
|
||||
<el-icon><Cpu /></el-icon>
|
||||
模型管理
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Hero Visual - 全息粒子矩阵风格 -->
|
||||
<!-- Hero Visual - Modern Abstract Composition -->
|
||||
<div class="hero-visual">
|
||||
<!-- Card 1: 多格式支持 -->
|
||||
<div class="hologram-card card-1">
|
||||
<div class="card-bg"></div>
|
||||
<div class="scan-line"></div>
|
||||
<div class="particles-container">
|
||||
<span class="particle" style="--x: 20%; --y: 30%"></span>
|
||||
<span class="particle" style="--x: 80%; --y: 20%"></span>
|
||||
<span class="particle" style="--x: 50%; --y: 70%"></span>
|
||||
<span class="particle" style="--x: 30%; --y: 60%"></span>
|
||||
<span class="particle" style="--x: 70%; --y: 80%"></span>
|
||||
<span class="particle" style="--x: 15%; --y: 85%"></span>
|
||||
<span class="particle" style="--x: 85%; --y: 45%"></span>
|
||||
<span class="particle" style="--x: 45%; --y: 15%"></span>
|
||||
<!-- Light rays -->
|
||||
<div class="light-rays">
|
||||
<div class="ray"></div>
|
||||
<div class="ray"></div>
|
||||
<div class="ray"></div>
|
||||
<div class="ray"></div>
|
||||
<div class="ray"></div>
|
||||
</div>
|
||||
|
||||
<!-- Ambient particles -->
|
||||
<span class="ambient-particle"></span>
|
||||
<span class="ambient-particle"></span>
|
||||
<span class="ambient-particle"></span>
|
||||
<span class="ambient-particle"></span>
|
||||
<span class="ambient-particle"></span>
|
||||
|
||||
<!-- Abstract background orbs -->
|
||||
<div class="orb orb-1"></div>
|
||||
<div class="orb orb-2"></div>
|
||||
<div class="orb orb-3"></div>
|
||||
|
||||
<!-- Central floating UI element -->
|
||||
<div class="floating-ui">
|
||||
<div class="ui-header">
|
||||
<div class="ui-dot"></div>
|
||||
<div class="ui-dot"></div>
|
||||
<div class="ui-dot"></div>
|
||||
</div>
|
||||
<div class="pulse-ring"></div>
|
||||
<div class="card-content">
|
||||
<div class="icon-wrapper cyan">
|
||||
<div class="icon-glow"></div>
|
||||
<el-icon size="28"><Document /></el-icon>
|
||||
</div>
|
||||
<span class="card-label">多格式支持</span>
|
||||
<span class="card-sublabel">PDF DOCX EPUB Excel</span>
|
||||
<div class="ui-content">
|
||||
<div class="ui-line"></div>
|
||||
<div class="ui-line short"></div>
|
||||
<div class="ui-line"></div>
|
||||
</div>
|
||||
<div class="ui-badge">
|
||||
<el-icon><Check /></el-icon>
|
||||
<span>处理完成</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Card 2: AI 生成 -->
|
||||
<div class="hologram-card card-2">
|
||||
<div class="card-bg"></div>
|
||||
<div class="scan-line"></div>
|
||||
<div class="particles-container">
|
||||
<span class="particle" style="--x: 25%; --y: 35%"></span>
|
||||
<span class="particle" style="--x: 75%; --y: 25%"></span>
|
||||
<span class="particle" style="--x: 55%; --y: 65%"></span>
|
||||
<span class="particle" style="--x: 35%; --y: 55%"></span>
|
||||
<span class="particle" style="--x: 65%; --y: 85%"></span>
|
||||
<span class="particle" style="--x: 20%; --y: 80%"></span>
|
||||
<span class="particle" style="--x: 80%; --y: 50%"></span>
|
||||
<span class="particle" style="--x: 50%; --y: 20%"></span>
|
||||
</div>
|
||||
<div class="pulse-ring"></div>
|
||||
<div class="card-content">
|
||||
<div class="icon-wrapper violet">
|
||||
<div class="icon-glow"></div>
|
||||
<el-icon size="28"><MagicStick /></el-icon>
|
||||
</div>
|
||||
<span class="card-label">AI 生成</span>
|
||||
<span class="card-sublabel">智能问答 自动标注</span>
|
||||
</div>
|
||||
<!-- Floating feature pills - main features -->
|
||||
<div class="feature-pill pill-1">
|
||||
<el-icon><Document /></el-icon>
|
||||
<span>多格式支持</span>
|
||||
</div>
|
||||
<div class="feature-pill pill-2">
|
||||
<el-icon><MagicStick /></el-icon>
|
||||
<span>AI 生成</span>
|
||||
</div>
|
||||
<div class="feature-pill pill-3">
|
||||
<el-icon><DataAnalysis /></el-icon>
|
||||
<span>智能评估</span>
|
||||
</div>
|
||||
|
||||
<!-- Card 3: 智能评估 -->
|
||||
<div class="hologram-card card-3">
|
||||
<div class="card-bg"></div>
|
||||
<div class="scan-line"></div>
|
||||
<div class="particles-container">
|
||||
<span class="particle" style="--x: 30%; --y: 25%"></span>
|
||||
<span class="particle" style="--x: 70%; --y: 35%"></span>
|
||||
<span class="particle" style="--x: 45%; --y: 75%"></span>
|
||||
<span class="particle" style="--x: 25%; --y: 65%"></span>
|
||||
<span class="particle" style="--x: 75%; --y: 85%"></span>
|
||||
<span class="particle" style="--x: 10%; --y: 75%"></span>
|
||||
<span class="particle" style="--x: 90%; --y: 40%"></span>
|
||||
<span class="particle" style="--x: 40%; --y: 10%"></span>
|
||||
</div>
|
||||
<div class="pulse-ring"></div>
|
||||
<div class="card-content">
|
||||
<div class="icon-wrapper teal">
|
||||
<div class="icon-glow"></div>
|
||||
<el-icon size="28"><DataAnalysis /></el-icon>
|
||||
</div>
|
||||
<span class="card-label">智能评估</span>
|
||||
<span class="card-sublabel">质量分析 模型对比</span>
|
||||
</div>
|
||||
<!-- Additional floating labels -->
|
||||
<div class="feature-pill pill-4">
|
||||
<el-icon><Connection /></el-icon>
|
||||
<span>API 集成</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Quick Actions -->
|
||||
<section class="quick-actions">
|
||||
<div class="action-card" @click="goToModels">
|
||||
<div class="action-icon">
|
||||
<el-icon><Setting /></el-icon>
|
||||
<div class="feature-pill pill-5">
|
||||
<el-icon><Clock /></el-icon>
|
||||
<span>批量处理</span>
|
||||
</div>
|
||||
<div class="action-info">
|
||||
<h3>模型配置</h3>
|
||||
<p>管理 AI 模型 API 配置</p>
|
||||
<div class="feature-pill pill-6">
|
||||
<el-icon><Lock /></el-icon>
|
||||
<span>数据安全</span>
|
||||
</div>
|
||||
<div class="feature-pill pill-7">
|
||||
<el-icon><TrendCharts /></el-icon>
|
||||
<span>可视化</span>
|
||||
</div>
|
||||
<el-icon class="action-arrow"><ArrowRight /></el-icon>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -179,7 +188,7 @@
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { FolderAdd } from '@element-plus/icons-vue'
|
||||
import { FolderAdd, Check, Connection, Clock, Lock, TrendCharts } from '@element-plus/icons-vue'
|
||||
import { projectApi } from '@/api'
|
||||
import type { Project, ProjectCreate } from '@/types'
|
||||
|
||||
@@ -275,5 +284,5 @@ onMounted(() => fetchProjects())
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@import '@/styles/home.scss';
|
||||
@import '@/styles/pages/home.scss';
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user