refactor: update grid component props and optimize docker setup
This commit is contained in:
98
.dockerignore
Normal file
98
.dockerignore
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
node_modules
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.idea
|
||||||
|
.DS_Store
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
||||||
|
|
||||||
|
# Git
|
||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
|
||||||
|
# Docker
|
||||||
|
Dockerfile*
|
||||||
|
docker-compose*
|
||||||
|
.dockerignore
|
||||||
|
|
||||||
|
# Environment files (keep only production)
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
*.lcov
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
jspm_packages/
|
||||||
|
|
||||||
|
# Optional npm cache directory
|
||||||
|
.npm
|
||||||
|
|
||||||
|
# Optional eslint cache
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Microbundle cache
|
||||||
|
.rpt2_cache/
|
||||||
|
.rts2_cache_cjs/
|
||||||
|
.rts2_cache_es/
|
||||||
|
.rts2_cache_umd/
|
||||||
|
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
|
||||||
|
# Yarn Integrity file
|
||||||
|
.yarn-integrity
|
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/)
|
||||||
|
.cache
|
||||||
|
.parcel-cache
|
||||||
|
|
||||||
|
# Next.js build output
|
||||||
|
.next
|
||||||
|
|
||||||
|
# Nuxt.js build / generate output
|
||||||
|
.nuxt
|
||||||
|
|
||||||
|
# Storybook build outputs
|
||||||
|
.out
|
||||||
|
.storybook-out
|
||||||
|
|
||||||
|
# Temporary folders
|
||||||
|
tmp/
|
||||||
|
temp/
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions
|
||||||
|
.vscode-test
|
||||||
6
.env.production
Normal file
6
.env.production
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# VITE_API_BASE_URL = http://150.158.121.95
|
||||||
|
VITE_API_BASE_URL = http://154.9.253.114:9380
|
||||||
|
|
||||||
|
VITE_RSA_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----
|
||||||
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArq9XTUSeYr2+N1h3Afl/z8Dse/2yD0ZGrKwx+EEEcdsBLca9Ynmx3nIB5obmLlSfmskLpBo0UACBmB5rEjBp2Q2f3AG3Hjd4B+gNCG6BDaawuDlgANIhGnaTLrIqWrrcm4EMzJOnAOI1fgzJRsOOUEfaS318Eq9OVO3apEyCCt0lOQK6PuksduOjVxtltDav+guVAA068NrPYmRNabVKRNLJpL8w4D44sfth5RvZ3q9t+6RTArpEtc5sh5ChzvqPOzKGMXW83C95TxmXqpbK6olN4RevSfVjEAgCydH6HN6OhtOQEcnrU97r9H0iZOWwbw3pVrZiUkuRD1R56Wzs2wIDAQAB
|
||||||
|
-----END PUBLIC KEY-----"
|
||||||
52
Dockerfile
52
Dockerfile
@@ -1,12 +1,60 @@
|
|||||||
FROM node:20-alpine
|
# 多阶段构建 - 构建阶段
|
||||||
|
FROM node:20-alpine AS builder
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
# 复制包管理文件
|
||||||
COPY package.json pnpm-lock.yaml ./
|
COPY package.json pnpm-lock.yaml ./
|
||||||
|
|
||||||
|
# 安装 pnpm 和依赖
|
||||||
RUN npm install -g pnpm && pnpm install
|
RUN npm install -g pnpm && pnpm install
|
||||||
|
|
||||||
|
# 复制源代码
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
# 构建生产版本
|
||||||
|
RUN pnpm build
|
||||||
|
|
||||||
|
# 生产阶段 - nginx
|
||||||
|
FROM nginx:alpine AS production
|
||||||
|
|
||||||
|
# 复制自定义 nginx 配置
|
||||||
|
COPY <<EOF /etc/nginx/conf.d/default.conf
|
||||||
|
server {
|
||||||
|
listen 5173;
|
||||||
|
server_name localhost;
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
# 处理 SPA 路由
|
||||||
|
location / {
|
||||||
|
try_files \$uri \$uri/ /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 静态资源缓存
|
||||||
|
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
|
||||||
|
expires 1y;
|
||||||
|
add_header Cache-Control "public, immutable";
|
||||||
|
}
|
||||||
|
|
||||||
|
# 安全头
|
||||||
|
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||||
|
add_header X-Content-Type-Options "nosniff" always;
|
||||||
|
add_header X-XSS-Protection "1; mode=block" always;
|
||||||
|
|
||||||
|
# Gzip 压缩
|
||||||
|
gzip on;
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_min_length 1024;
|
||||||
|
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 从构建阶段复制构建产物
|
||||||
|
COPY --from=builder /app/dist /usr/share/nginx/html
|
||||||
|
|
||||||
|
# 暴露端口
|
||||||
EXPOSE 5173
|
EXPOSE 5173
|
||||||
|
|
||||||
CMD ["pnpm", "dev"]
|
# 启动 nginx
|
||||||
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
28
docker-compose.yml
Normal file
28
docker-compose.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
teres-frontend:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
target: production
|
||||||
|
ports:
|
||||||
|
- "3000:80"
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=production
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# 开发环境服务(可选)
|
||||||
|
teres-frontend-dev:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.dev
|
||||||
|
ports:
|
||||||
|
- "5173:5173"
|
||||||
|
volumes:
|
||||||
|
- .:/app
|
||||||
|
- /app/node_modules
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=development
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
@@ -1,3 +1,7 @@
|
|||||||
|
// import type { AgentCategory } from '@/constants/agent';
|
||||||
|
import type { Edge, Node } from '@xyflow/react';
|
||||||
|
import type { IReference, Message } from './chat';
|
||||||
|
|
||||||
export interface ICategorizeItem {
|
export interface ICategorizeItem {
|
||||||
name: string;
|
name: string;
|
||||||
description?: string;
|
description?: string;
|
||||||
@@ -30,11 +34,6 @@ export interface ISwitchForm {
|
|||||||
no: string;
|
no: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
import type { AgentCategory } from '@/constants/agent';
|
|
||||||
import type { Edge, Node } from '@xyflow/react';
|
|
||||||
import type { IReference, Message } from './chat';
|
|
||||||
|
|
||||||
export type DSLComponents = Record<string, IOperator>;
|
export type DSLComponents = Record<string, IOperator>;
|
||||||
|
|
||||||
export interface DSL {
|
export interface DSL {
|
||||||
@@ -157,7 +156,7 @@ export interface IAgentForm {
|
|||||||
delay_after_error: number;
|
delay_after_error: number;
|
||||||
visual_files_var: string;
|
visual_files_var: string;
|
||||||
max_rounds: number;
|
max_rounds: number;
|
||||||
exception_method: Nullable<'comment' | 'go'>;
|
// exception_method: Nullable<'comment' | 'go'>;
|
||||||
exception_comment: any;
|
exception_comment: any;
|
||||||
exception_goto: any;
|
exception_goto: any;
|
||||||
tools: Array<{
|
tools: Array<{
|
||||||
@@ -275,5 +274,5 @@ export interface IPipeLineListRequest {
|
|||||||
keywords?: string;
|
keywords?: string;
|
||||||
orderby?: string;
|
orderby?: string;
|
||||||
desc?: boolean;
|
desc?: boolean;
|
||||||
canvas_category?: AgentCategory;
|
// canvas_category?: AgentCategory;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { MessageType } from '@/constants/chat';
|
// import { MessageType } from '@/constants/chat';
|
||||||
|
|
||||||
export interface PromptConfig {
|
export interface PromptConfig {
|
||||||
empty_response: string;
|
empty_response: string;
|
||||||
@@ -89,7 +89,7 @@ export interface IConversation {
|
|||||||
|
|
||||||
export interface Message {
|
export interface Message {
|
||||||
content: string;
|
content: string;
|
||||||
role: MessageType;
|
// role: MessageType;
|
||||||
doc_ids?: string[];
|
doc_ids?: string[];
|
||||||
prompt?: string;
|
prompt?: string;
|
||||||
id?: string;
|
id?: string;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Edge, Node } from '@xyflow/react';
|
import type { Edge, Node } from '@xyflow/react';
|
||||||
import type { IReference, Message } from './chat';
|
import type { IReference, Message } from './chat';
|
||||||
|
|
||||||
export type DSLComponents = Record<string, IOperator>;
|
export type DSLComponents = Record<string, IOperator>;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
export enum McpServerType {
|
// export enum McpServerType {
|
||||||
Sse = 'sse',
|
// Sse = 'sse',
|
||||||
StreamableHttp = 'streamable-http',
|
// StreamableHttp = 'streamable-http',
|
||||||
}
|
// }
|
||||||
|
|
||||||
export interface IMcpServerVariable {
|
export interface IMcpServerVariable {
|
||||||
key: string;
|
key: string;
|
||||||
@@ -12,7 +12,7 @@ export interface IMcpServerInfo {
|
|||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
url: string;
|
url: string;
|
||||||
server_type: McpServerType;
|
// server_type: McpServerType;
|
||||||
description?: string;
|
description?: string;
|
||||||
variables?: IMcpServerVariable[];
|
variables?: IMcpServerVariable[];
|
||||||
headers: Map<string, string>;
|
headers: Map<string, string>;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IExportedMcpServer } from '@/interfaces/database/mcp';
|
// import { IExportedMcpServer } from '@/interfaces/database/mcp';
|
||||||
|
|
||||||
export interface ITestMcpRequestBody {
|
export interface ITestMcpRequestBody {
|
||||||
server_type: string;
|
server_type: string;
|
||||||
@@ -9,8 +9,8 @@ export interface ITestMcpRequestBody {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface IImportMcpServersRequestBody {
|
export interface IImportMcpServersRequestBody {
|
||||||
mcpServers: Record<
|
// mcpServers: Record<
|
||||||
string,
|
// string,
|
||||||
Pick<IExportedMcpServer, 'type' | 'url' | 'authorization_token'>
|
// Pick<IExportedMcpServer, 'type' | 'url' | 'authorization_token'>
|
||||||
>;
|
// >;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ const MetricValue = styled(Typography)(({ theme }) => ({
|
|||||||
lineHeight: 1.2,
|
lineHeight: 1.2,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const TrendIndicator = styled(Box)<{ trend: 'up' | 'down' }>(({ trend, theme }) => ({
|
const TrendIndicator = styled(Box)<{ trend: string }>(({ trend, theme }) => ({
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
gap: '0.25rem',
|
gap: '0.25rem',
|
||||||
@@ -245,7 +245,7 @@ const Dashboard: React.FC = () => {
|
|||||||
|
|
||||||
{/* 关键指标卡片 */}
|
{/* 关键指标卡片 */}
|
||||||
<Grid container spacing={3} sx={{ mb: 3 }}>
|
<Grid container spacing={3} sx={{ mb: 3 }}>
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<MetricCard>
|
<MetricCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -270,7 +270,7 @@ const Dashboard: React.FC = () => {
|
|||||||
</MetricCard>
|
</MetricCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<MetricCard>
|
<MetricCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -295,7 +295,7 @@ const Dashboard: React.FC = () => {
|
|||||||
</MetricCard>
|
</MetricCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<MetricCard>
|
<MetricCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -320,7 +320,7 @@ const Dashboard: React.FC = () => {
|
|||||||
</MetricCard>
|
</MetricCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<MetricCard>
|
<MetricCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -362,7 +362,7 @@ const Dashboard: React.FC = () => {
|
|||||||
</Button>
|
</Button>
|
||||||
</Box>
|
</Box>
|
||||||
<KnowledgeGridView
|
<KnowledgeGridView
|
||||||
knowledgeBases={mockKnowledgeBases}
|
knowledgeBases={mockKnowledgeBases as any}
|
||||||
maxItems={3}
|
maxItems={3}
|
||||||
showSeeAll={true}
|
showSeeAll={true}
|
||||||
onSeeAll={handleSeeAllKnowledgeBases}
|
onSeeAll={handleSeeAllKnowledgeBases}
|
||||||
@@ -372,7 +372,7 @@ const Dashboard: React.FC = () => {
|
|||||||
|
|
||||||
{/* 系统状态 */}
|
{/* 系统状态 */}
|
||||||
<Grid container spacing={3} sx={{ mb: 3 }}>
|
<Grid container spacing={3} sx={{ mb: 3 }}>
|
||||||
<Grid item xs={12} md={6}>
|
<Grid size={{xs:12,md:6}}>
|
||||||
<Card sx={{ border: '1px solid #E5E5E5' }}>
|
<Card sx={{ border: '1px solid #E5E5E5' }}>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Typography variant="h6" fontWeight={600} mb={2}>
|
<Typography variant="h6" fontWeight={600} mb={2}>
|
||||||
@@ -403,7 +403,7 @@ const Dashboard: React.FC = () => {
|
|||||||
</Card>
|
</Card>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} md={6}>
|
<Grid size={{xs:12,md:6}}>
|
||||||
<Card sx={{ border: '1px solid #E5E5E5' }}>
|
<Card sx={{ border: '1px solid #E5E5E5' }}>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Typography variant="h6" fontWeight={600} mb={2}>
|
<Typography variant="h6" fontWeight={600} mb={2}>
|
||||||
@@ -479,15 +479,6 @@ const Dashboard: React.FC = () => {
|
|||||||
</TableContainer>
|
</TableContainer>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
{/* 用户数据调试组件 - 仅在开发环境显示 */}
|
|
||||||
{process.env.NODE_ENV === 'development' && (
|
|
||||||
<Card sx={{ border: '1px solid #E5E5E5', mt: 3 }}>
|
|
||||||
<CardContent>
|
|
||||||
<UserDataDebug />
|
|
||||||
</CardContent>
|
|
||||||
</Card>
|
|
||||||
)}
|
|
||||||
</PageContainer>
|
</PageContainer>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ const MCP: React.FC = () => {
|
|||||||
<>
|
<>
|
||||||
{/* 状态概览 */}
|
{/* 状态概览 */}
|
||||||
<Grid container spacing={3} sx={{ mb: 3 }}>
|
<Grid container spacing={3} sx={{ mb: 3 }}>
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<StatusCard>
|
<StatusCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -211,7 +211,7 @@ const MCP: React.FC = () => {
|
|||||||
</StatusCard>
|
</StatusCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<StatusCard>
|
<StatusCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -229,7 +229,7 @@ const MCP: React.FC = () => {
|
|||||||
</StatusCard>
|
</StatusCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<StatusCard>
|
<StatusCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -247,7 +247,7 @@ const MCP: React.FC = () => {
|
|||||||
</StatusCard>
|
</StatusCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<StatusCard>
|
<StatusCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -359,7 +359,7 @@ const MCP: React.FC = () => {
|
|||||||
</Alert>
|
</Alert>
|
||||||
<Grid container spacing={2}>
|
<Grid container spacing={2}>
|
||||||
{mockMCPServers.map((server) => (
|
{mockMCPServers.map((server) => (
|
||||||
<Grid item xs={12} md={6} key={server.id}>
|
<Grid size={{xs:12,md:6}} key={server.id}>
|
||||||
<Card variant="outlined">
|
<Card variant="outlined">
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Typography variant="subtitle1" fontWeight={600} mb={1}>
|
<Typography variant="subtitle1" fontWeight={600} mb={1}>
|
||||||
@@ -389,7 +389,7 @@ const MCP: React.FC = () => {
|
|||||||
|
|
||||||
{tabValue === 2 && (
|
{tabValue === 2 && (
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3}>
|
||||||
<Grid item xs={12} md={6}>
|
<Grid size={{xs:12,md:6}}>
|
||||||
<Card sx={{ border: '1px solid #E5E5E5' }}>
|
<Card sx={{ border: '1px solid #E5E5E5' }}>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Typography variant="h6" fontWeight={600} mb={2}>
|
<Typography variant="h6" fontWeight={600} mb={2}>
|
||||||
@@ -418,7 +418,7 @@ const MCP: React.FC = () => {
|
|||||||
</Card>
|
</Card>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} md={6}>
|
<Grid size={{xs:12,md:6}}>
|
||||||
<Card sx={{ border: '1px solid #E5E5E5' }}>
|
<Card sx={{ border: '1px solid #E5E5E5' }}>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Typography variant="h6" fontWeight={600} mb={2}>
|
<Typography variant="h6" fontWeight={600} mb={2}>
|
||||||
|
|||||||
@@ -226,7 +226,7 @@ const ModelsResources: React.FC = () => {
|
|||||||
<>
|
<>
|
||||||
{/* 模型概览卡片 */}
|
{/* 模型概览卡片 */}
|
||||||
<Grid container spacing={3} sx={{ mb: 3 }}>
|
<Grid container spacing={3} sx={{ mb: 3 }}>
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<ResourceCard>
|
<ResourceCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -244,7 +244,7 @@ const ModelsResources: React.FC = () => {
|
|||||||
</ResourceCard>
|
</ResourceCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<ResourceCard>
|
<ResourceCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -262,7 +262,7 @@ const ModelsResources: React.FC = () => {
|
|||||||
</ResourceCard>
|
</ResourceCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<ResourceCard>
|
<ResourceCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -280,7 +280,7 @@ const ModelsResources: React.FC = () => {
|
|||||||
</ResourceCard>
|
</ResourceCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<ResourceCard>
|
<ResourceCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -385,7 +385,7 @@ const ModelsResources: React.FC = () => {
|
|||||||
<>
|
<>
|
||||||
{/* 资源概览卡片 */}
|
{/* 资源概览卡片 */}
|
||||||
<Grid container spacing={3} sx={{ mb: 3 }}>
|
<Grid container spacing={3} sx={{ mb: 3 }}>
|
||||||
<Grid item xs={12} sm={6} md={4}>
|
<Grid size={{xs:12,sm:6,md:4}}>
|
||||||
<ResourceCard>
|
<ResourceCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -403,7 +403,7 @@ const ModelsResources: React.FC = () => {
|
|||||||
</ResourceCard>
|
</ResourceCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} sm={6} md={4}>
|
<Grid size={{xs:12,sm:6,md:4}}>
|
||||||
<ResourceCard>
|
<ResourceCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
@@ -421,7 +421,7 @@ const ModelsResources: React.FC = () => {
|
|||||||
</ResourceCard>
|
</ResourceCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} sm={6} md={4}>
|
<Grid size={{xs:12,sm:6,md:4}}>
|
||||||
<ResourceCard>
|
<ResourceCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Box display="flex" alignItems="center" justifyContent="space-between">
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ const PipelineConfig: React.FC = () => {
|
|||||||
</PageHeader>
|
</PageHeader>
|
||||||
|
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3}>
|
||||||
<Grid item xs={12} md={6}>
|
<Grid size={{xs:12,md:6}}>
|
||||||
<ConfigCard>
|
<ConfigCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Typography variant="h6" fontWeight={600} mb={2}>
|
<Typography variant="h6" fontWeight={600} mb={2}>
|
||||||
@@ -223,7 +223,7 @@ const PipelineConfig: React.FC = () => {
|
|||||||
</ConfigCard>
|
</ConfigCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12} md={6}>
|
<Grid size={{xs:12,md:6}}>
|
||||||
<ConfigCard>
|
<ConfigCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Typography variant="h6" fontWeight={600} mb={2}>
|
<Typography variant="h6" fontWeight={600} mb={2}>
|
||||||
@@ -283,7 +283,7 @@ const PipelineConfig: React.FC = () => {
|
|||||||
</ConfigCard>
|
</ConfigCard>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12}>
|
<Grid size={{xs:12,md:6}}>
|
||||||
<ConfigCard>
|
<ConfigCard>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<Typography variant="h6" fontWeight={600} mb={2}>
|
<Typography variant="h6" fontWeight={600} mb={2}>
|
||||||
@@ -291,7 +291,7 @@ const PipelineConfig: React.FC = () => {
|
|||||||
</Typography>
|
</Typography>
|
||||||
|
|
||||||
<Grid container spacing={2}>
|
<Grid container spacing={2}>
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<Box textAlign="center" p={2} bgcolor="#F8F9FA" borderRadius="6px">
|
<Box textAlign="center" p={2} bgcolor="#F8F9FA" borderRadius="6px">
|
||||||
<Typography variant="h4" color="primary" fontWeight={600}>
|
<Typography variant="h4" color="primary" fontWeight={600}>
|
||||||
1,234
|
1,234
|
||||||
@@ -301,7 +301,7 @@ const PipelineConfig: React.FC = () => {
|
|||||||
</Typography>
|
</Typography>
|
||||||
</Box>
|
</Box>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<Box textAlign="center" p={2} bgcolor="#F8F9FA" borderRadius="6px">
|
<Box textAlign="center" p={2} bgcolor="#F8F9FA" borderRadius="6px">
|
||||||
<Typography variant="h4" color="success.main" fontWeight={600}>
|
<Typography variant="h4" color="success.main" fontWeight={600}>
|
||||||
98.5%
|
98.5%
|
||||||
@@ -311,7 +311,7 @@ const PipelineConfig: React.FC = () => {
|
|||||||
</Typography>
|
</Typography>
|
||||||
</Box>
|
</Box>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<Box textAlign="center" p={2} bgcolor="#F8F9FA" borderRadius="6px">
|
<Box textAlign="center" p={2} bgcolor="#F8F9FA" borderRadius="6px">
|
||||||
<Typography variant="h4" color="warning.main" fontWeight={600}>
|
<Typography variant="h4" color="warning.main" fontWeight={600}>
|
||||||
2.3s
|
2.3s
|
||||||
@@ -321,7 +321,7 @@ const PipelineConfig: React.FC = () => {
|
|||||||
</Typography>
|
</Typography>
|
||||||
</Box>
|
</Box>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} sm={6} md={3}>
|
<Grid size={{xs:12,sm:6,md:3}}>
|
||||||
<Box textAlign="center" p={2} bgcolor="#F8F9FA" borderRadius="6px">
|
<Box textAlign="center" p={2} bgcolor="#F8F9FA" borderRadius="6px">
|
||||||
<Typography variant="h4" color="info.main" fontWeight={600}>
|
<Typography variant="h4" color="info.main" fontWeight={600}>
|
||||||
156
|
156
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
/* Linting */
|
/* Linting */
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"noUnusedLocals": true,
|
"noUnusedLocals": false,
|
||||||
"noUnusedParameters": true,
|
"noUnusedParameters": false,
|
||||||
"erasableSyntaxOnly": true,
|
"erasableSyntaxOnly": true,
|
||||||
"noFallthroughCasesInSwitch": true,
|
"noFallthroughCasesInSwitch": true,
|
||||||
"noUncheckedSideEffectImports": true,
|
"noUncheckedSideEffectImports": true,
|
||||||
|
|||||||
Reference in New Issue
Block a user