logo
159
dev/README.md
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
# MaxKB 开发环境
|
||||||
|
|
||||||
|
提供两种开发环境配置方案,根据需求选择使用。
|
||||||
|
|
||||||
|
## ⚠️ 重要说明
|
||||||
|
|
||||||
|
1. **首次启动较慢**:MaxKB 启动时需要初始化数据库、加载模型等,可能需要 3-5 分钟
|
||||||
|
2. **镜像要求**:需要先构建本地镜像 `maxkb-local:latest`
|
||||||
|
```bash
|
||||||
|
# 在项目根目录构建镜像
|
||||||
|
docker build -f installer/Dockerfile -t maxkb-local:latest .
|
||||||
|
```
|
||||||
|
|
||||||
|
## 方案一:最简单模式(推荐)
|
||||||
|
|
||||||
|
使用官方镜像,通过挂载源码实现开发调试。
|
||||||
|
|
||||||
|
### 快速启动
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd dev
|
||||||
|
|
||||||
|
# 方式一:使用启动脚本(推荐,会等待服务完全启动)
|
||||||
|
./start-dev.sh
|
||||||
|
|
||||||
|
# 方式二:手动启动
|
||||||
|
docker-compose -f docker-compose-simple.yml up -d
|
||||||
|
# 查看日志
|
||||||
|
docker-compose -f docker-compose-simple.yml logs -f
|
||||||
|
```
|
||||||
|
|
||||||
|
访问:
|
||||||
|
- 应用地址:http://localhost:8081
|
||||||
|
- 默认账号:admin / Admin@1234
|
||||||
|
|
||||||
|
### 特点
|
||||||
|
- ✅ 一个容器包含所有服务(PostgreSQL、Redis、Django、Celery)
|
||||||
|
- ✅ Python代码修改自动重载
|
||||||
|
- ✅ 最简单的配置
|
||||||
|
- ❌ 前端需要手动构建才能看到效果
|
||||||
|
|
||||||
|
## 方案二:完整开发模式
|
||||||
|
|
||||||
|
分离前后端开发环境,支持前端热重载。
|
||||||
|
|
||||||
|
### 启动方式
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd dev
|
||||||
|
|
||||||
|
# 启动所有服务
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# 仅启动后端
|
||||||
|
docker-compose up -d maxkb-dev
|
||||||
|
|
||||||
|
# 仅启动前端开发服务器
|
||||||
|
docker-compose up -d frontend-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
访问:
|
||||||
|
- Django后端:http://localhost:8080
|
||||||
|
- 前端开发服务器(管理界面):http://localhost:5173
|
||||||
|
- 前端开发服务器(聊天界面):http://localhost:5174
|
||||||
|
|
||||||
|
### 特点
|
||||||
|
- ✅ 前后端都支持热重载
|
||||||
|
- ✅ 前端使用Vite开发服务器,体验更好
|
||||||
|
- ✅ 可以独立开发前端或后端
|
||||||
|
- ❌ 配置相对复杂
|
||||||
|
|
||||||
|
## 开发流程
|
||||||
|
|
||||||
|
### 后端开发
|
||||||
|
|
||||||
|
1. 修改 `apps/` 目录下的Python代码
|
||||||
|
2. Django开发服务器会自动检测变化并重载
|
||||||
|
3. 查看容器日志观察变化:
|
||||||
|
```bash
|
||||||
|
docker logs -f maxkb-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### 前端开发
|
||||||
|
|
||||||
|
#### 方案一(简单模式)
|
||||||
|
1. 修改 `ui/` 目录下的代码
|
||||||
|
2. 在容器内手动构建:
|
||||||
|
```bash
|
||||||
|
docker exec -it maxkb-dev bash
|
||||||
|
cd /opt/maxkb-app
|
||||||
|
python main.py collect_static
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 方案二(完整模式)
|
||||||
|
1. 修改 `ui/` 目录下的代码
|
||||||
|
2. Vite开发服务器自动热重载
|
||||||
|
3. 访问 http://localhost:5173 查看效果
|
||||||
|
|
||||||
|
### 数据库操作
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 执行数据库迁移
|
||||||
|
docker exec -it maxkb-dev python /opt/maxkb-app/main.py upgrade_db
|
||||||
|
|
||||||
|
# 进入Django Shell
|
||||||
|
docker exec -it maxkb-dev python /opt/maxkb-app/apps/manage.py shell
|
||||||
|
|
||||||
|
# 创建超级用户
|
||||||
|
docker exec -it maxkb-dev python /opt/maxkb-app/apps/manage.py createsuperuser
|
||||||
|
```
|
||||||
|
|
||||||
|
## 常见问题
|
||||||
|
|
||||||
|
### 1. 端口冲突
|
||||||
|
修改 docker-compose.yml 中的端口映射,例如:
|
||||||
|
```yaml
|
||||||
|
ports:
|
||||||
|
- "8081:8080" # 改为8081
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 权限问题
|
||||||
|
如果遇到文件权限问题:
|
||||||
|
```bash
|
||||||
|
sudo chown -R $USER:$USER ../apps ../ui
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 前端连接后端失败
|
||||||
|
确保环境变量 `VITE_APP_BASE_URL` 设置正确:
|
||||||
|
```bash
|
||||||
|
VITE_APP_BASE_URL=http://localhost:8080
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. 查看所有环境变量
|
||||||
|
```bash
|
||||||
|
docker exec maxkb-dev env | grep MAXKB
|
||||||
|
```
|
||||||
|
|
||||||
|
## 生产镜像构建
|
||||||
|
|
||||||
|
如果需要构建自己的镜像:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 在项目根目录
|
||||||
|
docker build -f installer/Dockerfile -t my-maxkb:dev .
|
||||||
|
|
||||||
|
# 修改 docker-compose.yml 使用自定义镜像
|
||||||
|
# image: my-maxkb:dev
|
||||||
|
```
|
||||||
|
|
||||||
|
## 清理环境
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 停止并删除容器
|
||||||
|
docker-compose down
|
||||||
|
|
||||||
|
# 清理所有数据(慎用)
|
||||||
|
docker-compose down -v
|
||||||
|
rm -rf ~/.maxkb-dev
|
||||||
|
```
|
||||||
30
dev/dev.env
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# MaxKB Development Environment Configuration
|
||||||
|
|
||||||
|
# Django Settings
|
||||||
|
DJANGO_DEBUG=True
|
||||||
|
DJANGO_SECRET_KEY=dev-secret-key-only-for-development
|
||||||
|
DJANGO_ALLOWED_HOSTS=*
|
||||||
|
|
||||||
|
# Database (using internal PostgreSQL)
|
||||||
|
MAXKB_DB_HOST=127.0.0.1
|
||||||
|
MAXKB_DB_PORT=5432
|
||||||
|
MAXKB_DB_NAME=maxkb
|
||||||
|
MAXKB_DB_USER=root
|
||||||
|
MAXKB_DB_PASSWORD=Password123@postgres
|
||||||
|
|
||||||
|
# Redis (using internal Redis)
|
||||||
|
MAXKB_REDIS_HOST=127.0.0.1
|
||||||
|
MAXKB_REDIS_PORT=6379
|
||||||
|
MAXKB_REDIS_PASSWORD=Password123@redis
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
MAXKB_LOG_LEVEL=DEBUG
|
||||||
|
|
||||||
|
# API URLs
|
||||||
|
MAXKB_ADMIN_PATH=/admin
|
||||||
|
ADMIN_API_URL=/admin/api
|
||||||
|
CHAT_API_URL=/chat/api
|
||||||
|
|
||||||
|
# Development specific
|
||||||
|
PYTHONUNBUFFERED=1
|
||||||
|
WERKZEUG_DEBUG_PIN=off
|
||||||
27
dev/docker-compose-simple.yml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# 最简化的开发环境配置 - 使用单容器模式
|
||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
maxkb:
|
||||||
|
# 使用官方镜像
|
||||||
|
image: maxkb-local:latest
|
||||||
|
container_name: maxkb-dev
|
||||||
|
ports:
|
||||||
|
- "8081:8080"
|
||||||
|
volumes:
|
||||||
|
# 挂载Python源码 - 实现后端热重载
|
||||||
|
- ../apps:/opt/maxkb-app/apps:rw
|
||||||
|
- ../main.py:/opt/maxkb-app/main.py:rw
|
||||||
|
|
||||||
|
# 挂载前端源码 - 用于查看和调试
|
||||||
|
- ../ui:/opt/maxkb-app/ui:rw
|
||||||
|
|
||||||
|
# 数据持久化
|
||||||
|
- ~/.maxkb-dev:/opt/maxkb
|
||||||
|
environment:
|
||||||
|
# 开启调试模式
|
||||||
|
DJANGO_DEBUG: "True"
|
||||||
|
PYTHONUNBUFFERED: "1"
|
||||||
|
MAXKB_LOG_LEVEL: "DEBUG"
|
||||||
|
restart: unless-stopped
|
||||||
|
# 使用镜像默认的启动命令
|
||||||
78
dev/docker-compose.yml
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# maxkb-dev:
|
||||||
|
# # 使用生产镜像或本地构建的镜像
|
||||||
|
# image: maxkb-local:latest
|
||||||
|
# # 如果需要本地构建,取消下面两行注释
|
||||||
|
# # build:
|
||||||
|
# # context: ../
|
||||||
|
# # dockerfile: installer/Dockerfile
|
||||||
|
# container_name: maxkb-dev
|
||||||
|
# ports:
|
||||||
|
# - "8080:8080"
|
||||||
|
# volumes:
|
||||||
|
# # 挂载Python源码实现热重载
|
||||||
|
# - ../apps:/opt/maxkb-app/apps
|
||||||
|
# - ../main.py:/opt/maxkb-app/main.py
|
||||||
|
# - ../installer/maxkb.py:/opt/maxkb-app/maxkb.py
|
||||||
|
|
||||||
|
# # 挂载UI源码(用于前端开发)
|
||||||
|
# - ../ui/src:/opt/maxkb-app/ui/src
|
||||||
|
# - ../ui/public:/opt/maxkb-app/ui/public
|
||||||
|
|
||||||
|
# # 持久化数据
|
||||||
|
# - maxkb_data:/opt/maxkb/data
|
||||||
|
|
||||||
|
# # 开发配置
|
||||||
|
# - ./dev.env:/opt/maxkb-app/.env
|
||||||
|
# environment:
|
||||||
|
# # 开发环境变量
|
||||||
|
# DJANGO_DEBUG: "True"
|
||||||
|
# PYTHONUNBUFFERED: "1"
|
||||||
|
# MAXKB_LOG_LEVEL: "DEBUG"
|
||||||
|
|
||||||
|
# # 数据库配置(使用内置的PostgreSQL)
|
||||||
|
# MAXKB_DB_HOST: "127.0.0.1"
|
||||||
|
# MAXKB_DB_PORT: "5432"
|
||||||
|
# MAXKB_DB_NAME: "maxkb"
|
||||||
|
# MAXKB_DB_USER: "root"
|
||||||
|
# MAXKB_DB_PASSWORD: "Password123@postgres"
|
||||||
|
|
||||||
|
# # Redis配置(使用内置的Redis)
|
||||||
|
# MAXKB_REDIS_HOST: "127.0.0.1"
|
||||||
|
# MAXKB_REDIS_PORT: "6379"
|
||||||
|
# MAXKB_REDIS_PASSWORD: "Password123@redis"
|
||||||
|
# # 使用默认的启动命令,让容器内的所有服务正常启动
|
||||||
|
# # command 留空使用镜像默认的 entrypoint
|
||||||
|
# networks:
|
||||||
|
# - maxkb-network
|
||||||
|
|
||||||
|
# 独立的前端开发服务器(可选)
|
||||||
|
frontend-dev:
|
||||||
|
image: node:20-alpine
|
||||||
|
container_name: maxkb-frontend-dev
|
||||||
|
working_dir: /app
|
||||||
|
volumes:
|
||||||
|
- ../ui:/app
|
||||||
|
- /app/node_modules # 防止覆盖node_modules
|
||||||
|
ports:
|
||||||
|
- "5173:5173" # Vite开发服务器
|
||||||
|
- "5174:5174" # Chat界面开发服务器
|
||||||
|
environment:
|
||||||
|
- VITE_APP_BASE_URL=http://localhost:8080
|
||||||
|
command: >
|
||||||
|
sh -c "
|
||||||
|
npm config set registry https://registry.npmmirror.com &&
|
||||||
|
npm install &&
|
||||||
|
npm run dev
|
||||||
|
"
|
||||||
|
networks:
|
||||||
|
- maxkb-network
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
maxkb_data:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
maxkb-network:
|
||||||
|
driver: bridge
|
||||||
41
dev/start-dev.sh
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# MaxKB 开发环境启动脚本
|
||||||
|
|
||||||
|
echo "启动 MaxKB 开发环境..."
|
||||||
|
|
||||||
|
# 停止并删除旧容器
|
||||||
|
docker-compose -f docker-compose-simple.yml down 2>/dev/null
|
||||||
|
|
||||||
|
# 启动容器
|
||||||
|
docker-compose -f docker-compose-simple.yml up -d
|
||||||
|
|
||||||
|
echo "等待服务启动..."
|
||||||
|
echo "这可能需要几分钟时间,因为应用需要初始化..."
|
||||||
|
|
||||||
|
# 等待服务启动
|
||||||
|
max_attempts=60
|
||||||
|
attempt=0
|
||||||
|
while [ $attempt -lt $max_attempts ]; do
|
||||||
|
if docker exec maxkb-dev curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8080/admin/ | grep -q "200\|302"; then
|
||||||
|
echo ""
|
||||||
|
echo "✅ MaxKB 开发环境启动成功!"
|
||||||
|
echo ""
|
||||||
|
echo "访问地址:"
|
||||||
|
echo " - 应用地址: http://localhost:8081"
|
||||||
|
echo " - 默认账号: admin / Admin@1234"
|
||||||
|
echo ""
|
||||||
|
echo "查看日志:"
|
||||||
|
echo " docker logs -f maxkb-dev"
|
||||||
|
echo ""
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "."
|
||||||
|
sleep 5
|
||||||
|
attempt=$((attempt + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "❌ 服务启动超时,请检查日志:"
|
||||||
|
echo "docker logs maxkb-dev"
|
||||||
|
exit 1
|
||||||
@ -1,13 +1,26 @@
|
|||||||
FROM node:24-alpine AS web-build
|
FROM node:24-alpine AS web-build
|
||||||
|
|
||||||
|
# Configure npm to use npmmirror
|
||||||
|
RUN npm config set registry https://registry.npmmirror.com
|
||||||
|
|
||||||
COPY ui ui
|
COPY ui ui
|
||||||
RUN cd ui && ls -la && if [ -d "dist" ]; then exit 0; fi && \
|
RUN cd ui && ls -la && if [ -d "dist" ]; then exit 0; fi && \
|
||||||
npm install --prefer-offline --no-audit && \
|
npm install --prefer-offline --no-audit && \
|
||||||
npm install -D concurrently && \
|
npm install -D concurrently && \
|
||||||
NODE_OPTIONS="--max-old-space-size=4096" npx concurrently "npm run build" "npm run build-chat" && \
|
NODE_OPTIONS="--max-old-space-size=8192" npx concurrently "npm run build" "npm run build-chat" && \
|
||||||
find . -maxdepth 1 ! -name '.' ! -name 'dist' ! -name 'public' -exec rm -rf {} +
|
find . -maxdepth 1 ! -name '.' ! -name 'dist' ! -name 'public' -exec rm -rf {} +
|
||||||
|
|
||||||
FROM ghcr.io/1panel-dev/maxkb-base:python3.11-pg17.6 AS stage-build
|
FROM ghcr.io/1panel-dev/maxkb-base:python3.11-pg17.6 AS stage-build
|
||||||
|
|
||||||
|
# Configure apt to use Aliyun mirror (for Debian 12 bookworm)
|
||||||
|
RUN if [ -f /etc/apt/sources.list.d/debian.sources ]; then \
|
||||||
|
sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources && \
|
||||||
|
sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources; \
|
||||||
|
else \
|
||||||
|
sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \
|
||||||
|
sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list; \
|
||||||
|
fi
|
||||||
|
|
||||||
ARG DEPENDENCIES=" \
|
ARG DEPENDENCIES=" \
|
||||||
python3-pip"
|
python3-pip"
|
||||||
|
|
||||||
@ -19,15 +32,20 @@ RUN apt-get update && \
|
|||||||
COPY --chmod=700 . /opt/maxkb-app
|
COPY --chmod=700 . /opt/maxkb-app
|
||||||
|
|
||||||
WORKDIR /opt/maxkb-app
|
WORKDIR /opt/maxkb-app
|
||||||
|
|
||||||
|
# Configure pip to use Aliyun mirror
|
||||||
|
RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && \
|
||||||
|
pip config set install.trusted-host mirrors.aliyun.com
|
||||||
|
|
||||||
RUN rm -rf /opt/maxkb-app/ui && \
|
RUN rm -rf /opt/maxkb-app/ui && \
|
||||||
python3 -m venv /opt/py3 && \
|
python3 -m venv /opt/py3 && \
|
||||||
pip install uv --break-system-packages && \
|
pip install uv --break-system-packages && \
|
||||||
. /opt/py3/bin/activate && \
|
. /opt/py3/bin/activate && \
|
||||||
uv pip install -r pyproject.toml && \
|
uv pip install -r pyproject.toml --index-url https://mirrors.aliyun.com/pypi/simple/ && \
|
||||||
find /opt/maxkb-app -depth \( -name ".git*" -o -name ".docker*" -o -name ".idea*" -o -name ".editorconfig*" -o -name ".prettierrc*" -o -name "README.md" -o -name "poetry.lock" -o -name "pyproject.toml" \) -exec rm -rf {} + && \
|
find /opt/maxkb-app -depth \( -name ".git*" -o -name ".docker*" -o -name ".idea*" -o -name ".editorconfig*" -o -name ".prettierrc*" -o -name "README.md" -o -name "poetry.lock" -o -name "pyproject.toml" \) -exec rm -rf {} + && \
|
||||||
export MAXKB_CONFIG_TYPE=ENV && python3 /opt/maxkb-app/apps/manage.py compilemessages && \
|
export MAXKB_CONFIG_TYPE=ENV && python3 /opt/maxkb-app/apps/manage.py compilemessages && \
|
||||||
export PIP_TARGET=/opt/maxkb-app/sandbox/python-packages && \
|
export PIP_TARGET=/opt/maxkb-app/sandbox/python-packages && \
|
||||||
uv pip install --target=$PIP_TARGET requests pymysql psycopg2-binary && \
|
uv pip install --target=$PIP_TARGET --index-url https://mirrors.aliyun.com/pypi/simple/ requests pymysql psycopg2-binary && \
|
||||||
rm -rf /opt/maxkb-app/installer
|
rm -rf /opt/maxkb-app/installer
|
||||||
COPY --from=web-build --chmod=700 ui /opt/maxkb-app/ui
|
COPY --from=web-build --chmod=700 ui /opt/maxkb-app/ui
|
||||||
|
|
||||||
|
|||||||
@ -19,7 +19,18 @@ ARG DEPENDENCIES=" \
|
|||||||
|
|
||||||
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
|
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
|
||||||
echo "Asia/Shanghai" > /etc/timezone && \
|
echo "Asia/Shanghai" > /etc/timezone && \
|
||||||
|
# Configure apt to use Aliyun mirror (for Debian 12 trixie)
|
||||||
|
if [ -f /etc/apt/sources.list.d/debian.sources ]; then \
|
||||||
|
sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources && \
|
||||||
|
sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources; \
|
||||||
|
else \
|
||||||
|
sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \
|
||||||
|
sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list; \
|
||||||
|
fi && \
|
||||||
apt-get update && apt-get install -y --no-install-recommends $DEPENDENCIES && \
|
apt-get update && apt-get install -y --no-install-recommends $DEPENDENCIES && \
|
||||||
|
# Configure pip to use Aliyun mirror
|
||||||
|
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && \
|
||||||
|
pip config set install.trusted-host mirrors.aliyun.com && \
|
||||||
chmod 755 /usr/bin/start-*.sh && \
|
chmod 755 /usr/bin/start-*.sh && \
|
||||||
find /etc/ -type f ! -path '/etc/resolv.conf' ! -path '/etc/hosts' | xargs chmod g-rx && \
|
find /etc/ -type f ! -path '/etc/resolv.conf' ! -path '/etc/hosts' | xargs chmod g-rx && \
|
||||||
curl -L --connect-timeout 120 -m 1800 https://resource.fit2cloud.com/maxkb/ffmpeg/get-ffmpeg-linux | sh && \
|
curl -L --connect-timeout 120 -m 1800 https://resource.fit2cloud.com/maxkb/ffmpeg/get-ffmpeg-linux | sh && \
|
||||||
|
|||||||
@ -1,20 +1,17 @@
|
|||||||
<svg width="122" height="36" viewBox="0 0 122 36" xmlns="http://www.w3.org/2000/svg" fill="#FF8800">
|
<svg width="122" height="36" viewBox="0 0 122 36" xmlns="http://www.w3.org/2000/svg">
|
||||||
<g clip-path="url(#clip0_5682_1471)" fill-rule="evenodd">
|
<g fill="currentColor">
|
||||||
<path d="M75.3094 19.0805V27.05H71.8274L71.8109 26.2436C70.5933 26.8762 69.4033 27.1925 68.2412 27.1923H67.8972C66.7033 27.1923 65.7546 26.7337 65.051 25.8166C64.5855 25.1007 64.342 24.2631 64.3513 23.4092V23.3143C64.3513 21.7489 64.9008 20.7092 65.9997 20.1953C66.4505 19.8949 67.5929 19.7447 69.4271 19.7447H71.3008V19.3058C71.3008 18.4045 71.1703 17.8867 70.9094 17.7523C70.6249 17.5388 70.1228 17.4321 69.4033 17.4321H65.6678L65.7312 14.2396L70.032 14.1233C72.5857 14.1233 74.1669 14.7558 74.7758 16.0208C75.1315 16.756 75.3094 17.7759 75.3094 19.0805ZM68.6032 22.3901C68.4844 22.5315 68.3597 22.9902 68.3597 23.3143C68.3597 24.0259 68.7234 24.3817 69.4508 24.3817C69.8855 24.3817 70.5022 24.2038 71.3008 23.848V22.1112C71.3008 22.1112 69.0361 21.875 68.6032 22.3901Z" fill="currentColor"/>
|
<!-- AI Brain Icon -->
|
||||||
<path d="M56.6308 27.3317L55.4162 15.1815L52.0028 27.3317H48.028L44.6928 15.1815L43.4348 27.3317L37.9399 27.2849L40.6207 9.35034H47.6212L50.0211 17.8845L52.4444 9.35034H59.281L62.0087 27.3317H56.6308Z" fill="currentColor"/>
|
<g transform="translate(5, 3)">
|
||||||
<path d="M85.3943 26.9654L83.5118 23.1105L81.6291 26.9654H77.2017L80.831 20.5778L77.3644 14.6084H81.6525L83.5118 18.2543L85.313 14.6084H89.6009L86.1576 20.5778L89.7637 26.9654H85.3943Z" fill="currentColor"/>
|
<!-- Brain outline -->
|
||||||
<path d="M101.114 26.9656C101.029 26.8419 96.8966 20.1336 96.8966 20.1336L95.5396 22.2226V26.9656H90.9727V9.11621H95.5396V16.3526L99.7128 9.17639H104.477L99.514 17.1079L105.855 26.9656H101.114Z" fill="currentColor"/>
|
<path d="M15 5c-2.5 0-4.5 2-4.5 4.5 0 0.5 0.1 1 0.2 1.5-1.8 0.5-3.2 2.1-3.2 4 0 1.5 0.8 2.8 2 3.5-0.1 0.3-0.2 0.7-0.2 1 0 2 1.6 3.5 3.5 3.5 0.5 0 1-0.1 1.5-0.3 0.5 1.5 1.9 2.8 3.7 2.8s3.2-1.3 3.7-2.8c0.5 0.2 1 0.3 1.5 0.3 1.9 0 3.5-1.5 3.5-3.5 0-0.3-0.1-0.7-0.2-1 1.2-0.7 2-2 2-3.5 0-1.9-1.4-3.5-3.2-4 0.1-0.5 0.2-1 0.2-1.5 0-2.5-2-4.5-4.5-4.5-1.5 0-2.8 0.7-3.5 1.8C17.8 5.7 16.5 5 15 5z" stroke-width="1.5" fill="none" stroke="currentColor"/>
|
||||||
<path d="M121.036 22.145C121.036 24.745 119.74 27.1282 115.097 27.1282H107.032V9.02689L113.203 8.90869C113.203 8.90869 116.858 8.74751 118.706 10.153C120.068 11.1885 120.515 13.0021 120.384 14.5197C120.254 16.0373 119.553 17.0129 118.405 17.727C119.979 18.354 121.036 19.5451 121.036 22.145ZM114.228 16.3325C115.766 16.3325 116.62 15.5559 116.62 14.45C116.62 13.2735 115.833 12.5837 114.228 12.5837L111.576 12.5906V16.3325H114.228ZM114.365 23.5374C116.497 23.5374 117.022 22.393 117.022 21.6316C117.022 20.4308 116.17 19.563 114.752 19.563H111.576V23.5374H114.365Z" fill="currentColor"/>
|
<!-- Neural connections -->
|
||||||
<path d="M17.4213 26.7354H12.8296L11.1277 28.4372C11.028 28.5369 10.9601 28.6639 10.9326 28.8022C10.9051 28.9405 10.9193 29.0838 10.9732 29.2141C11.0272 29.3443 11.1185 29.4557 11.2358 29.534C11.353 29.6123 11.4908 29.6541 11.6318 29.6541H18.6192C18.7602 29.6541 18.898 29.6123 19.0153 29.534C19.1325 29.4557 19.2239 29.3443 19.2778 29.2141C19.3318 29.0838 19.3459 28.9405 19.3184 28.8022C19.2909 28.6639 19.223 28.5369 19.1233 28.4372L17.4213 26.7354Z" fill="currentColor"/>
|
<circle cx="12" cy="12" r="1.5"/>
|
||||||
<path d="M30.04 13.3823H29.1348V19.7499H30.04C30.1305 19.7499 30.2201 19.732 30.3037 19.6974C30.3873 19.6628 30.4633 19.612 30.5273 19.548C30.5913 19.484 30.642 19.4081 30.6767 19.3244C30.7113 19.2408 30.7291 19.1512 30.7291 19.0607V14.0715C30.7291 13.8887 30.6565 13.7134 30.5273 13.5842C30.398 13.4549 30.2227 13.3823 30.04 13.3823Z" fill="currentColor"/>
|
<circle cx="18" cy="10" r="1.5"/>
|
||||||
<path d="M1.92296 13.3823H1.01776C0.834985 13.3823 0.659698 13.4549 0.530458 13.5842C0.401219 13.7134 0.328613 13.8887 0.328613 14.0715V19.0607C0.328611 19.1512 0.346435 19.2408 0.381067 19.3244C0.415699 19.4081 0.466461 19.484 0.530455 19.548C0.594448 19.612 0.670419 19.6628 0.754031 19.6974C0.837643 19.732 0.927258 19.7499 1.01776 19.7499H1.92296V13.3823Z" fill="currentColor"/>
|
<circle cx="20" cy="16" r="1.5"/>
|
||||||
<path d="M19.0238 14.2251C18.682 14.2251 18.3541 14.3609 18.1124 14.6026C17.8707 14.8443 17.7349 15.1722 17.7349 15.514V16.4382C17.7349 16.7801 17.8707 17.108 18.1124 17.3497C18.3541 17.5914 18.682 17.7272 19.0239 17.7272C19.3657 17.7272 19.6936 17.5914 19.9353 17.3497C20.1771 17.108 20.3129 16.7801 20.3129 16.4382V15.5141C20.3129 15.3448 20.2796 15.1772 20.2148 15.0208C20.15 14.8644 20.055 14.7223 19.9353 14.6026C19.8156 14.4829 19.6735 14.388 19.5171 14.3232C19.3607 14.2584 19.1931 14.2251 19.0238 14.2251Z" fill="currentColor"/>
|
<circle cx="14" cy="18" r="1.5"/>
|
||||||
<path d="M12.3012 14.2251C11.9593 14.2251 11.6315 14.3609 11.3897 14.6026C11.148 14.8443 11.0122 15.1722 11.0122 15.514V16.4382C11.0122 16.7801 11.148 17.108 11.3897 17.3497C11.6315 17.5914 11.9593 17.7272 12.3012 17.7272C12.6431 17.7272 12.9709 17.5914 13.2127 17.3497C13.4544 17.108 13.5902 16.7801 13.5902 16.4382V15.5141C13.5902 15.3448 13.5569 15.1772 13.4921 15.0208C13.4273 14.8644 13.3324 14.7223 13.2127 14.6026C13.093 14.4829 12.9509 14.388 12.7945 14.3232C12.6381 14.2584 12.4704 14.2251 12.3012 14.2251Z" fill="currentColor"/>
|
<path d="M12 12L18 10M18 10L20 16M20 16L14 18M14 18L12 12" stroke-width="1" fill="none" stroke="currentColor"/>
|
||||||
<path d="M23.3607 6.91333H7.69709C6.3139 6.91489 4.98782 7.46505 4.00976 8.44311C3.0317 9.42117 2.48154 10.7473 2.47998 12.1304V20.9612C2.48154 22.3444 3.03169 23.6705 4.00975 24.6486C4.98781 25.6266 6.3139 26.1768 7.69709 26.1784H23.3607C24.7439 26.1768 26.07 25.6267 27.0481 24.6486C28.0262 23.6705 28.5764 22.3444 28.5779 20.9612V12.1304C28.5763 10.7472 28.0262 9.42115 27.0481 8.44309C26.07 7.46503 24.7439 6.91487 23.3607 6.91333ZM23.7988 20.9085C23.7988 21.1577 23.6998 21.3968 23.5235 21.573C23.3473 21.7492 23.1083 21.8482 22.859 21.8482H15.2189C14.0629 21.8482 12.9263 22.1453 11.9181 22.711L9.355 24.1492V21.8483H8.19882C7.94958 21.8483 7.71055 21.7493 7.53432 21.573C7.35808 21.3968 7.25907 21.1578 7.25906 20.9085V11.547C7.25907 11.2978 7.35808 11.0588 7.53432 10.8825C7.71056 10.7063 7.94958 10.6073 8.19882 10.6073H22.859C23.1082 10.6073 23.3472 10.7063 23.5235 10.8825C23.6997 11.0588 23.7987 11.2978 23.7987 11.5471L23.7988 20.9085Z" fill="currentColor"/>
|
|
||||||
</g>
|
</g>
|
||||||
<defs>
|
<!-- Text -->
|
||||||
<clipPath id="clip0_5682_1471">
|
<text x="42" y="23" font-family="Arial, sans-serif" font-size="20" font-weight="bold" fill="currentColor">Xbase</text>
|
||||||
<rect width="121" height="36" fill="white"/>
|
</g>
|
||||||
</clipPath>
|
</svg>
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 1.0 KiB |
@ -1,64 +1,23 @@
|
|||||||
<svg width="122" height="36" viewBox="0 0 122 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="122" height="36" viewBox="0 0 122 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<g clip-path="url(#clip0_5734_851)">
|
|
||||||
<path d="M75.3094 19.0802V27.0498H71.8274L71.8109 26.2433C70.5933 26.876 69.4033 27.1922 68.2412 27.1921H67.8972C66.7033 27.1921 65.7546 26.7335 65.051 25.8164C64.5855 25.1005 64.342 24.2629 64.3513 23.409V23.314C64.3513 21.7486 64.9008 20.7089 65.9997 20.195C66.4505 19.8947 67.5929 19.7445 69.4271 19.7444H71.3008V19.3056C71.3008 18.4043 71.1703 17.8865 70.9094 17.752C70.6249 17.5385 70.1228 17.4318 69.4033 17.4318H65.6678L65.7312 14.2393L70.032 14.123C72.5857 14.123 74.1669 14.7555 74.7758 16.0206C75.1315 16.7558 75.3094 17.7757 75.3094 19.0802ZM68.6032 22.3899C68.4844 22.5313 68.3597 22.99 68.3597 23.314C68.3597 24.0256 68.7234 24.3814 69.4508 24.3814C69.8855 24.3814 70.5022 24.2035 71.3008 23.8478V22.111C71.3008 22.111 69.0361 21.8747 68.6032 22.3899Z" fill="url(#paint0_linear_5734_851)"/>
|
|
||||||
<path d="M56.6308 27.3319L55.4162 15.1817L52.0028 27.3319H48.028L44.6928 15.1817L43.4348 27.3319L37.9399 27.2851L40.6207 9.35059H47.6212L50.0211 17.8847L52.4444 9.35059H59.281L62.0087 27.3319H56.6308Z" fill="url(#paint1_linear_5734_851)"/>
|
|
||||||
<path d="M85.3943 26.9654L83.5118 23.1105L81.6291 26.9654H77.2017L80.831 20.5778L77.3644 14.6084H81.6525L83.5118 18.2543L85.313 14.6084H89.6009L86.1576 20.5778L89.7637 26.9654H85.3943Z" fill="url(#paint2_linear_5734_851)"/>
|
|
||||||
<path d="M101.114 26.9656C101.029 26.8419 96.8966 20.1336 96.8966 20.1336L95.5396 22.2226V26.9656H90.9727V9.11621H95.5396V16.3526L99.7128 9.17639H104.477L99.514 17.1079L105.855 26.9656H101.114Z" fill="url(#paint3_linear_5734_851)"/>
|
|
||||||
<path d="M121.036 22.1453C121.036 24.7452 119.74 27.1284 115.097 27.1284H107.032V9.02713L113.203 8.90893C113.203 8.90893 116.858 8.74776 118.706 10.1533C120.068 11.1888 120.515 13.0023 120.384 14.5199C120.254 16.0375 119.553 17.0132 118.405 17.7272C119.979 18.3542 121.036 19.5453 121.036 22.1453ZM114.228 16.3327C115.766 16.3327 116.62 15.5561 116.62 14.4502C116.62 13.2738 115.833 12.5839 114.228 12.5839L111.576 12.5909V16.3327H114.228ZM114.365 23.5376C116.497 23.5376 117.022 22.3933 117.022 21.6318C117.022 20.4311 116.17 19.5633 114.752 19.5633H111.576V23.5376H114.365Z" fill="url(#paint4_linear_5734_851)"/>
|
|
||||||
<path d="M17.4213 26.7354H12.8296L11.1277 28.4372C11.028 28.5369 10.9601 28.6639 10.9326 28.8022C10.9051 28.9405 10.9193 29.0838 10.9732 29.2141C11.0272 29.3443 11.1185 29.4557 11.2358 29.534C11.353 29.6123 11.4908 29.6541 11.6318 29.6541H18.6192C18.7602 29.6541 18.898 29.6123 19.0153 29.534C19.1325 29.4557 19.2239 29.3443 19.2778 29.2141C19.3318 29.0838 19.3459 28.9405 19.3184 28.8022C19.2909 28.6639 19.223 28.5369 19.1233 28.4372L17.4213 26.7354Z" fill="url(#paint5_linear_5734_851)"/>
|
|
||||||
<path d="M30.04 13.3823H29.1348V19.7499H30.04C30.1305 19.7499 30.2201 19.732 30.3037 19.6974C30.3873 19.6628 30.4633 19.612 30.5273 19.548C30.5913 19.484 30.642 19.4081 30.6767 19.3244C30.7113 19.2408 30.7291 19.1512 30.7291 19.0607V14.0715C30.7291 13.8887 30.6565 13.7134 30.5273 13.5842C30.398 13.4549 30.2227 13.3823 30.04 13.3823Z" fill="url(#paint6_linear_5734_851)"/>
|
|
||||||
<path d="M1.92296 13.3823H1.01776C0.834985 13.3823 0.659698 13.4549 0.530458 13.5842C0.401219 13.7134 0.328613 13.8887 0.328613 14.0715V19.0607C0.328611 19.1512 0.346435 19.2408 0.381067 19.3244C0.415699 19.4081 0.466461 19.484 0.530455 19.548C0.594448 19.612 0.670419 19.6628 0.754031 19.6974C0.837643 19.732 0.927258 19.7499 1.01776 19.7499H1.92296V13.3823Z" fill="url(#paint7_linear_5734_851)"/>
|
|
||||||
<path d="M19.0238 14.2251C18.682 14.2251 18.3541 14.3609 18.1124 14.6026C17.8707 14.8443 17.7349 15.1722 17.7349 15.514V16.4382C17.7349 16.7801 17.8707 17.108 18.1124 17.3497C18.3541 17.5914 18.682 17.7272 19.0239 17.7272C19.3657 17.7272 19.6936 17.5914 19.9353 17.3497C20.1771 17.108 20.3129 16.7801 20.3129 16.4382V15.5141C20.3129 15.3448 20.2796 15.1772 20.2148 15.0208C20.15 14.8644 20.055 14.7223 19.9353 14.6026C19.8156 14.4829 19.6735 14.388 19.5171 14.3232C19.3607 14.2584 19.1931 14.2251 19.0238 14.2251Z" fill="url(#paint8_linear_5734_851)"/>
|
|
||||||
<path d="M12.3012 14.2251C11.9593 14.2251 11.6315 14.3609 11.3897 14.6026C11.148 14.8443 11.0122 15.1722 11.0122 15.514V16.4382C11.0122 16.7801 11.148 17.108 11.3897 17.3497C11.6315 17.5914 11.9593 17.7272 12.3012 17.7272C12.6431 17.7272 12.9709 17.5914 13.2127 17.3497C13.4544 17.108 13.5902 16.7801 13.5902 16.4382V15.5141C13.5902 15.3448 13.5569 15.1772 13.4921 15.0208C13.4273 14.8644 13.3324 14.7223 13.2127 14.6026C13.093 14.4829 12.9509 14.388 12.7945 14.3232C12.6381 14.2584 12.4704 14.2251 12.3012 14.2251Z" fill="url(#paint9_linear_5734_851)"/>
|
|
||||||
<path d="M23.3607 6.91309H7.69709C6.3139 6.91465 4.98782 7.46481 4.00976 8.44287C3.0317 9.42092 2.48154 10.747 2.47998 12.1302V20.9609C2.48154 22.3441 3.03169 23.6702 4.00975 24.6483C4.98781 25.6264 6.3139 26.1766 7.69709 26.1781H23.3607C24.7439 26.1766 26.07 25.6264 27.0481 24.6483C28.0262 23.6703 28.5764 22.3442 28.5779 20.9609V12.1302C28.5763 10.747 28.0262 9.4209 27.0481 8.44284C26.07 7.46478 24.7439 6.91463 23.3607 6.91309ZM23.7988 20.9082C23.7988 21.1575 23.6998 21.3965 23.5235 21.5727C23.3473 21.749 23.1083 21.848 22.859 21.848H15.2189C14.0629 21.848 12.9263 22.1451 11.9181 22.7108L9.355 24.149V21.848H8.19882C7.94958 21.848 7.71055 21.749 7.53432 21.5728C7.35808 21.3966 7.25907 21.1575 7.25906 20.9083V11.5468C7.25907 11.2976 7.35808 11.0585 7.53432 10.8823C7.71056 10.7061 7.94958 10.6071 8.19882 10.6071H22.859C23.1082 10.6071 23.3472 10.7061 23.5235 10.8823C23.6997 11.0585 23.7987 11.2976 23.7987 11.5468L23.7988 20.9082Z" fill="url(#paint10_linear_5734_851)"/>
|
|
||||||
</g>
|
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient id="paint0_linear_5734_851" x1="69.8304" y1="10.0003" x2="69.8304" y2="27.3566" gradientUnits="userSpaceOnUse">
|
<linearGradient id="paint_gradient" x1="0" y1="18" x2="122" y2="18" gradientUnits="userSpaceOnUse">
|
||||||
<stop stop-color="#3370FF"/>
|
<stop stop-color="#3370FF"/>
|
||||||
<stop offset="1" stop-color="#7F3BF5"/>
|
<stop offset="1" stop-color="#7F3BF5"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="paint1_linear_5734_851" x1="49.9743" y1="10.5855" x2="49.9743" y2="27.4838" gradientUnits="userSpaceOnUse">
|
|
||||||
<stop stop-color="#3370FF"/>
|
|
||||||
<stop offset="1" stop-color="#7F3BF5"/>
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient id="paint2_linear_5734_851" x1="83.4827" y1="9.95634" x2="83.4827" y2="26.918" gradientUnits="userSpaceOnUse">
|
|
||||||
<stop stop-color="#3370FF"/>
|
|
||||||
<stop offset="1" stop-color="#7F3BF5"/>
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient id="paint3_linear_5734_851" x1="98.4139" y1="9.57325" x2="98.4139" y2="26.5967" gradientUnits="userSpaceOnUse">
|
|
||||||
<stop stop-color="#3370FF"/>
|
|
||||||
<stop offset="1" stop-color="#7F3BF5"/>
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient id="paint4_linear_5734_851" x1="114.034" y1="9.05828" x2="114.034" y2="26.3934" gradientUnits="userSpaceOnUse">
|
|
||||||
<stop stop-color="#3370FF"/>
|
|
||||||
<stop offset="1" stop-color="#7F3BF5"/>
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient id="paint5_linear_5734_851" x1="15.1255" y1="26.7354" x2="15.1255" y2="29.6542" gradientUnits="userSpaceOnUse">
|
|
||||||
<stop stop-color="#3370FF"/>
|
|
||||||
<stop offset="1" stop-color="#7F3BF5"/>
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient id="paint6_linear_5734_851" x1="29.9319" y1="13.3823" x2="29.9319" y2="19.7499" gradientUnits="userSpaceOnUse">
|
|
||||||
<stop stop-color="#3370FF"/>
|
|
||||||
<stop offset="1" stop-color="#7F3BF5"/>
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient id="paint7_linear_5734_851" x1="1.12576" y1="13.3823" x2="1.12576" y2="19.7499" gradientUnits="userSpaceOnUse">
|
|
||||||
<stop stop-color="#3370FF"/>
|
|
||||||
<stop offset="1" stop-color="#7F3BF5"/>
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient id="paint8_linear_5734_851" x1="19.0238" y1="14.2251" x2="19.0238" y2="17.7273" gradientUnits="userSpaceOnUse">
|
|
||||||
<stop stop-color="#3370FF"/>
|
|
||||||
<stop offset="1" stop-color="#7F3BF5"/>
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient id="paint9_linear_5734_851" x1="12.3012" y1="14.2251" x2="12.3012" y2="17.7273" gradientUnits="userSpaceOnUse">
|
|
||||||
<stop stop-color="#3370FF"/>
|
|
||||||
<stop offset="1" stop-color="#7F3BF5"/>
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient id="paint10_linear_5734_851" x1="15.5289" y1="6.91309" x2="15.5289" y2="26.1782" gradientUnits="userSpaceOnUse">
|
|
||||||
<stop stop-color="#3370FF"/>
|
|
||||||
<stop offset="1" stop-color="#7F3BF5"/>
|
|
||||||
</linearGradient>
|
|
||||||
<clipPath id="clip0_5734_851">
|
|
||||||
<rect width="121" height="36" fill="white"/>
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
</defs>
|
||||||
</svg>
|
<g fill="url(#paint_gradient)">
|
||||||
|
<!-- AI Brain Icon -->
|
||||||
|
<g transform="translate(5, 3)">
|
||||||
|
<!-- Brain outline -->
|
||||||
|
<path d="M15 5c-2.5 0-4.5 2-4.5 4.5 0 0.5 0.1 1 0.2 1.5-1.8 0.5-3.2 2.1-3.2 4 0 1.5 0.8 2.8 2 3.5-0.1 0.3-0.2 0.7-0.2 1 0 2 1.6 3.5 3.5 3.5 0.5 0 1-0.1 1.5-0.3 0.5 1.5 1.9 2.8 3.7 2.8s3.2-1.3 3.7-2.8c0.5 0.2 1 0.3 1.5 0.3 1.9 0 3.5-1.5 3.5-3.5 0-0.3-0.1-0.7-0.2-1 1.2-0.7 2-2 2-3.5 0-1.9-1.4-3.5-3.2-4 0.1-0.5 0.2-1 0.2-1.5 0-2.5-2-4.5-4.5-4.5-1.5 0-2.8 0.7-3.5 1.8C17.8 5.7 16.5 5 15 5z" stroke-width="1.5" fill="none" stroke="url(#paint_gradient)"/>
|
||||||
|
<!-- Neural connections -->
|
||||||
|
<circle cx="12" cy="12" r="1.5"/>
|
||||||
|
<circle cx="18" cy="10" r="1.5"/>
|
||||||
|
<circle cx="20" cy="16" r="1.5"/>
|
||||||
|
<circle cx="14" cy="18" r="1.5"/>
|
||||||
|
<path d="M12 12L18 10M18 10L20 16M20 16L14 18M14 18L12 12" stroke-width="1" fill="none" stroke="url(#paint_gradient)"/>
|
||||||
|
</g>
|
||||||
|
<!-- Text -->
|
||||||
|
<text x="42" y="23" font-family="Arial, sans-serif" font-size="20" font-weight="bold" fill="url(#paint_gradient)">Xbase</text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 1.3 KiB |
@ -1 +1,15 @@
|
|||||||
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 232.4409 232.4409"><title>MaxKB</title><path class="cls-1" d="M128.4532,177H98.7785L87.78,187.9985a4.6069,4.6069,0,0,0,3.2576,7.8644h45.1569a4.6069,4.6069,0,0,0,3.2575-7.8644Z"/><path class="cls-1" d="M210.0008,90.7042h-5.85v41.1511h5.85a4.4537,4.4537,0,0,0,4.4537-4.4537V95.1579A4.4537,4.4537,0,0,0,210.0008,90.7042Z"/><path class="cls-1" d="M28.29,90.7042H22.44a4.4538,4.4538,0,0,0-4.4538,4.4537v32.2437a4.4538,4.4538,0,0,0,4.4538,4.4537h5.85Z"/><path class="cls-1" d="M138.8087,96.1512a8.33,8.33,0,0,0-8.33,8.33v5.9727a8.33,8.33,0,1,0,16.6607,0v-5.9727A8.33,8.33,0,0,0,138.8087,96.1512Z"/><path class="cls-1" d="M95.3622,96.1512a8.33,8.33,0,0,0-8.33,8.33v5.9727a8.33,8.33,0,1,0,16.6607,0v-5.9727A8.33,8.33,0,0,0,95.3622,96.1512Z"/><path class="cls-1" d="M166.8344,48.8968H65.6064A33.7544,33.7544,0,0,0,31.89,82.6131v57.07A33.7548,33.7548,0,0,0,65.6064,173.4h101.228a33.7549,33.7549,0,0,0,33.7168-33.7168v-57.07A33.7545,33.7545,0,0,0,166.8344,48.8968Zm2.831,90.4457a6.0733,6.0733,0,0,1-6.0732,6.0733H114.2168a43.5922,43.5922,0,0,0-21.3313,5.5757l-16.5647,9.2946v-14.87h-7.472a6.0733,6.0733,0,0,1-6.0733-6.0733v-60.5a6.0733,6.0733,0,0,1,6.0733-6.0733h94.7434a6.0733,6.0733,0,0,1,6.0732,6.0733Z"/></svg>
|
<svg viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g fill="currentColor">
|
||||||
|
<!-- AI Brain Icon -->
|
||||||
|
<g transform="translate(3, 3)">
|
||||||
|
<!-- Brain outline -->
|
||||||
|
<path d="M15 5c-2.5 0-4.5 2-4.5 4.5 0 0.5 0.1 1 0.2 1.5-1.8 0.5-3.2 2.1-3.2 4 0 1.5 0.8 2.8 2 3.5-0.1 0.3-0.2 0.7-0.2 1 0 2 1.6 3.5 3.5 3.5 0.5 0 1-0.1 1.5-0.3 0.5 1.5 1.9 2.8 3.7 2.8s3.2-1.3 3.7-2.8c0.5 0.2 1 0.3 1.5 0.3 1.9 0 3.5-1.5 3.5-3.5 0-0.3-0.1-0.7-0.2-1 1.2-0.7 2-2 2-3.5 0-1.9-1.4-3.5-3.2-4 0.1-0.5 0.2-1 0.2-1.5 0-2.5-2-4.5-4.5-4.5-1.5 0-2.8 0.7-3.5 1.8C17.8 5.7 16.5 5 15 5z" stroke-width="1.5" fill="none" stroke="currentColor"/>
|
||||||
|
<!-- Neural connections -->
|
||||||
|
<circle cx="12" cy="12" r="1.5"/>
|
||||||
|
<circle cx="18" cy="10" r="1.5"/>
|
||||||
|
<circle cx="20" cy="16" r="1.5"/>
|
||||||
|
<circle cx="14" cy="18" r="1.5"/>
|
||||||
|
<path d="M12 12L18 10M18 10L20 16M20 16L14 18M14 18L12 12" stroke-width="1" fill="none" stroke="currentColor"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 899 B |
@ -1 +1,21 @@
|
|||||||
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 232.4409 232.4409"><defs><style>.cls-1{fill:url(#未命名的渐变_7);}.cls-2{fill:url(#未命名的渐变_7-2);}.cls-3{fill:url(#未命名的渐变_7-3);}.cls-4{fill:url(#未命名的渐变_7-4);}.cls-5{fill:url(#未命名的渐变_7-5);}.cls-6{fill:url(#未命名的渐变_7-6);}</style><linearGradient id="未命名的渐变_7" x1="113.6159" y1="176.9998" x2="113.6159" y2="195.8629" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#3370FF"/><stop offset="1" stop-color="#7f3bf5"/></linearGradient><linearGradient id="未命名的渐变_7-2" x1="209.3027" y1="90.7042" x2="209.3027" y2="131.8553" xlink:href="#未命名的渐变_7"/><linearGradient id="未命名的渐变_7-3" x1="23.1384" y1="90.7042" x2="23.1384" y2="131.8553" xlink:href="#未命名的渐变_7"/><linearGradient id="未命名的渐变_7-4" x1="138.8087" y1="96.1512" x2="138.8087" y2="118.7847" xlink:href="#未命名的渐变_7"/><linearGradient id="未命名的渐变_7-5" x1="95.3622" y1="96.1512" x2="95.3622" y2="118.7847" xlink:href="#未命名的渐变_7"/><linearGradient id="未命名的渐变_7-6" x1="116.2206" y1="48.8968" x2="116.2206" y2="173.4002" xlink:href="#未命名的渐变_7"/></defs><title>MaxKB</title><path class="cls-1" d="M128.4532,177H98.7785L87.78,187.9985a4.6069,4.6069,0,0,0,3.2576,7.8644h45.1569a4.6069,4.6069,0,0,0,3.2575-7.8644Z"/><path class="cls-2" d="M210.0008,90.7042h-5.85v41.1511h5.85a4.4537,4.4537,0,0,0,4.4537-4.4537V95.1579A4.4537,4.4537,0,0,0,210.0008,90.7042Z"/><path class="cls-3" d="M28.29,90.7042H22.44a4.4538,4.4538,0,0,0-4.4538,4.4537v32.2437a4.4538,4.4538,0,0,0,4.4538,4.4537h5.85Z"/><path class="cls-4" d="M138.8087,96.1512a8.33,8.33,0,0,0-8.33,8.33v5.9727a8.33,8.33,0,1,0,16.6607,0v-5.9727A8.33,8.33,0,0,0,138.8087,96.1512Z"/><path class="cls-5" d="M95.3622,96.1512a8.33,8.33,0,0,0-8.33,8.33v5.9727a8.33,8.33,0,1,0,16.6607,0v-5.9727A8.33,8.33,0,0,0,95.3622,96.1512Z"/><path class="cls-6" d="M166.8344,48.8968H65.6064A33.7544,33.7544,0,0,0,31.89,82.6131v57.07A33.7548,33.7548,0,0,0,65.6064,173.4h101.228a33.7549,33.7549,0,0,0,33.7168-33.7168v-57.07A33.7545,33.7545,0,0,0,166.8344,48.8968Zm2.831,90.4457a6.0733,6.0733,0,0,1-6.0732,6.0733H114.2168a43.5922,43.5922,0,0,0-21.3313,5.5757l-16.5647,9.2946v-14.87h-7.472a6.0733,6.0733,0,0,1-6.0733-6.0733v-60.5a6.0733,6.0733,0,0,1,6.0733-6.0733h94.7434a6.0733,6.0733,0,0,1,6.0732,6.0733Z"/></svg>
|
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="paint_gradient" x1="0" y1="18" x2="36" y2="18" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#3370FF"/>
|
||||||
|
<stop offset="1" stop-color="#7F3BF5"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g fill="url(#paint_gradient)">
|
||||||
|
<!-- AI Brain Icon -->
|
||||||
|
<g transform="translate(3, 3)">
|
||||||
|
<!-- Brain outline -->
|
||||||
|
<path d="M15 5c-2.5 0-4.5 2-4.5 4.5 0 0.5 0.1 1 0.2 1.5-1.8 0.5-3.2 2.1-3.2 4 0 1.5 0.8 2.8 2 3.5-0.1 0.3-0.2 0.7-0.2 1 0 2 1.6 3.5 3.5 3.5 0.5 0 1-0.1 1.5-0.3 0.5 1.5 1.9 2.8 3.7 2.8s3.2-1.3 3.7-2.8c0.5 0.2 1 0.3 1.5 0.3 1.9 0 3.5-1.5 3.5-3.5 0-0.3-0.1-0.7-0.2-1 1.2-0.7 2-2 2-3.5 0-1.9-1.4-3.5-3.2-4 0.1-0.5 0.2-1 0.2-1.5 0-2.5-2-4.5-4.5-4.5-1.5 0-2.8 0.7-3.5 1.8C17.8 5.7 16.5 5 15 5z" stroke-width="1.5" fill="none" stroke="url(#paint_gradient)"/>
|
||||||
|
<!-- Neural connections -->
|
||||||
|
<circle cx="12" cy="12" r="1.5"/>
|
||||||
|
<circle cx="18" cy="10" r="1.5"/>
|
||||||
|
<circle cx="20" cy="16" r="1.5"/>
|
||||||
|
<circle cx="14" cy="18" r="1.5"/>
|
||||||
|
<path d="M12 12L18 10M18 10L20 16M20 16L14 18M14 18L12 12" stroke-width="1" fill="none" stroke="url(#paint_gradient)"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.1 KiB |