视觉与UX体验升级:全站配图全面采用现代中式科技高级抽象矢量体系并补充技术文章智能封面Fallback
@@ -852,7 +852,16 @@
|
||||
{if !empty($art['image'])}
|
||||
<img src="{$art['image']}" alt="{$art['title']}" loading="lazy">
|
||||
{else/}
|
||||
<div style="width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: #F1F5F9; color: #94A3B8; font-size: 14px;">纳海川技术洞察</div>
|
||||
{php}
|
||||
$cover_fallbacks = [
|
||||
0 => '/assets/addons/official/images/articles/article_cache.svg',
|
||||
1 => '/assets/addons/official/images/articles/article_mysql_page.svg',
|
||||
2 => '/assets/addons/official/images/articles/article_xxl_job.svg',
|
||||
3 => '/assets/addons/official/images/articles/article_redis_split.svg',
|
||||
];
|
||||
$cover_src = isset($cover_fallbacks[$idx]) ? $cover_fallbacks[$idx] : '/assets/addons/official/images/articles/article_microservice.svg';
|
||||
{/php}
|
||||
<img src="{$cover_src}" alt="{$art['title']}" loading="lazy" style="width: 100%; height: 100%; object-fit: cover;">
|
||||
{/if}
|
||||
</a>
|
||||
<div class="nhc-article-card-body">
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
@@ -28,7 +28,7 @@
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="10" result="blur"/>
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
@@ -48,15 +48,17 @@
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
|
||||
<circle cx="0" cy="0" r="100" fill="#FAF5FF" opacity="0.7"/>
|
||||
<ellipse cx="0" cy="0" rx="150" ry="60" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4" transform="rotate(-30)"/>
|
||||
<ellipse cx="0" cy="0" rx="150" ry="60" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4" transform="rotate(30)"/>
|
||||
<polygon points="0,-50 45,-20 45,25 0,55 -45,25 -45,-20" fill="none" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="24" fill="url(#artPurple)" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="0" r="15" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#FFFFFF"/>
|
||||
<circle cx="-130" cy="0" r="5" fill="#7C3AED" transform="rotate(-30)"/>
|
||||
<circle cx="130" cy="0" r="5" fill="#06B6D4" transform="rotate(30)"/>
|
||||
<circle cx="0" cy="0" r="100" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<polygon points="0,-65 56,-32 56,32 0,65 -56,32 -56,-32" fill="none" stroke="#C4B5FD" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="28" fill="url(#artPurple)" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="-65" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="56" cy="-32" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="56" cy="32" r="4.5" fill="#7C3AED"/>
|
||||
<circle cx="0" cy="65" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="-56" cy="32" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="-56" cy="-32" r="4.5" fill="#7C3AED"/>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 3.2 KiB 之后 宽度: | 高度: | 大小: 3.1 KiB |
@@ -0,0 +1,63 @@
|
||||
<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
|
||||
<linearGradient id="artBgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF"/>
|
||||
<stop offset="100%" stop-color="#F8FAFC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artBlue" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#2563EB"/>
|
||||
<stop offset="100%" stop-color="#1D4ED8"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artCyan" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#06B6D4"/>
|
||||
<stop offset="100%" stop-color="#0EA5E9"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artPurple" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#7C3AED"/>
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="artShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
|
||||
<rect width="600" height="380" rx="8" fill="url(#artBgGrad)"/>
|
||||
<rect width="600" height="380" rx="8" fill="url(#artLattice)" opacity="0.6"/>
|
||||
<rect x="1" y="1" width="598" height="378" rx="7" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
|
||||
|
||||
<g transform="translate(554, 20)">
|
||||
<rect width="24" height="24" rx="4" fill="#FEF2F2" stroke="#DC2626" stroke-width="1.2"/>
|
||||
<rect x="2" y="2" width="20" height="20" rx="2" fill="none" stroke="#DC2626" stroke-width="0.5" stroke-opacity="0.5"/>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">盾</text>
|
||||
</g>
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
|
||||
<ellipse cx="0" cy="65" rx="190" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<!-- 布隆过滤器位图光栅与防御漏斗 -->
|
||||
<polygon points="0,-85 90,-45 0,-15 -90,-45" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.5" filter="url(#artShadow)"/>
|
||||
<polygon points="0,-35 60,-5 0,18 -60,-5" fill="url(#artGlass)" stroke="#06B6D4" stroke-width="1.2"/>
|
||||
<polygon points="0,5 35,22 0,38 -35,22" fill="url(#artBlue)"/>
|
||||
<line x1="0" y1="-85" x2="0" y2="70" stroke="url(#artBlue)" stroke-width="2.5" stroke-dasharray="4,3"/>
|
||||
<circle cx="0" cy="70" r="18" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="70" r="6" fill="#2563EB" filter="url(#artGlow)"/>
|
||||
<circle cx="-65" cy="-25" r="3.5" fill="#DC2626"/>
|
||||
<circle cx="65" cy="-25" r="3.5" fill="#DC2626"/>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
之后 宽度: | 高度: | 大小: 3.3 KiB |
@@ -18,8 +18,8 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
@@ -28,7 +28,7 @@
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="10" result="blur"/>
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
@@ -54,13 +54,12 @@
|
||||
<rect x="-35" y="-55" width="70" height="95" rx="3" fill="#FFFFFF" stroke="#E2E8F0"/>
|
||||
<circle cx="0" cy="52" r="3" fill="#94A3B8"/>
|
||||
</g>
|
||||
<g transform="translate(65, 10)" filter="url(#artShadow)">
|
||||
<rect x="-32" y="-70" width="64" height="140" rx="10" fill="#FFFFFF" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<rect x="-26" y="-55" width="52" height="110" rx="5" fill="url(#artBgGrad)"/>
|
||||
<circle cx="0" cy="-20" r="14" fill="url(#artPurple)"/>
|
||||
<g transform="translate(60, 10)" filter="url(#artShadow)">
|
||||
<rect x="-38" y="-75" width="76" height="150" rx="10" fill="#FFFFFF" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="-25" r="14" fill="url(#artBlue)"/>
|
||||
</g>
|
||||
<path d="M -20 -15 C 10 -40 30 -30 65 -15" fill="none" stroke="url(#artCyan)" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="20" cy="-25" r="4" fill="#06B6D4" filter="url(#artGlow)"/>
|
||||
<path d="M -20 -30 Q 15 -60 45 -40" fill="none" stroke="url(#artCyan)" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M 45 35 Q 15 65 -20 40" fill="none" stroke="url(#artPurple)" stroke-width="2" stroke-linecap="round" stroke-dasharray="4,3"/>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 3.4 KiB 之后 宽度: | 高度: | 大小: 3.3 KiB |
@@ -18,8 +18,8 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
@@ -28,7 +28,7 @@
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="10" result="blur"/>
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
@@ -42,29 +42,24 @@
|
||||
<g transform="translate(554, 20)">
|
||||
<rect width="24" height="24" rx="4" fill="#FEF2F2" stroke="#DC2626" stroke-width="1.2"/>
|
||||
<rect x="2" y="2" width="20" height="20" rx="2" fill="none" stroke="#DC2626" stroke-width="0.5" stroke-opacity="0.5"/>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">准</text>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">构</text>
|
||||
</g>
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
|
||||
<ellipse cx="0" cy="55" rx="170" ry="60" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<g transform="translate(-65, 15)" filter="url(#artShadow)">
|
||||
<polygon points="0,-25 30,-8 0,8 -30,-8" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-30,-8 0,8 0,28 -30,12" fill="#E2E8F0"/>
|
||||
<polygon points="0,8 30,-8 30,12 0,28" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="0" r="110" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<line x1="-90" y1="0" x2="90" y2="0" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<line x1="0" y1="-90" x2="0" y2="90" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<g filter="url(#artShadow)">
|
||||
<polygon points="0,-35 32,-12 32,22 0,42 -32,22 -32,-12" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="5" r="16" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="5" r="7" fill="#FFFFFF"/>
|
||||
</g>
|
||||
<g transform="translate(65, 15)" filter="url(#artShadow)">
|
||||
<polygon points="0,-25 30,-8 0,8 -30,-8" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-30,-8 0,8 0,28 -30,12" fill="#E2E8F0"/>
|
||||
<polygon points="0,8 30,-8 30,12 0,28" fill="#F1F5F9"/>
|
||||
</g>
|
||||
<g transform="translate(0, -30)" filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="32" fill="none" stroke="#2563EB" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#FFFFFF"/>
|
||||
</g>
|
||||
<path d="M -65 5 Q 0 -15 65 5" fill="none" stroke="url(#artCyan)" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="0" cy="-80" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="80" cy="0" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="80" r="4.5" fill="#7C3AED"/>
|
||||
<circle cx="-80" cy="0" r="4.5" fill="#2563EB"/>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 3.5 KiB 之后 宽度: | 高度: | 大小: 3.1 KiB |
@@ -18,8 +18,8 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
@@ -28,7 +28,7 @@
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="10" result="blur"/>
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
|
||||
|
之前 宽度: | 高度: | 大小: 3.5 KiB 之后 宽度: | 高度: | 大小: 3.5 KiB |
@@ -0,0 +1,71 @@
|
||||
<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
|
||||
<linearGradient id="artBgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF"/>
|
||||
<stop offset="100%" stop-color="#F8FAFC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artBlue" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#2563EB"/>
|
||||
<stop offset="100%" stop-color="#1D4ED8"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artCyan" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#06B6D4"/>
|
||||
<stop offset="100%" stop-color="#0EA5E9"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artPurple" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#7C3AED"/>
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="artShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
|
||||
<rect width="600" height="380" rx="8" fill="url(#artBgGrad)"/>
|
||||
<rect width="600" height="380" rx="8" fill="url(#artLattice)" opacity="0.6"/>
|
||||
<rect x="1" y="1" width="598" height="378" rx="7" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
|
||||
|
||||
<g transform="translate(554, 20)">
|
||||
<rect width="24" height="24" rx="4" fill="#FEF2F2" stroke="#DC2626" stroke-width="1.2"/>
|
||||
<rect x="2" y="2" width="20" height="20" rx="2" fill="none" stroke="#DC2626" stroke-width="0.5" stroke-opacity="0.5"/>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">跃</text>
|
||||
</g>
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
|
||||
<ellipse cx="0" cy="60" rx="180" ry="65" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<!-- B+Tree 索引阶梯结构 -->
|
||||
<line x1="-120" y1="40" x2="120" y2="40" stroke="#CBD5E1" stroke-width="1.5"/>
|
||||
<g transform="translate(-80, 20)">
|
||||
<rect x="-15" y="-15" width="30" height="30" rx="4" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="3" fill="#94A3B8"/>
|
||||
</g>
|
||||
<g transform="translate(-20, 0)">
|
||||
<rect x="-15" y="-15" width="30" height="30" rx="4" fill="url(#artGlass)" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="3" fill="#2563EB"/>
|
||||
</g>
|
||||
<!-- 高性能延迟关联跳跃抛物线 (由 3.8s 降至 12ms) -->
|
||||
<path d="M -80 5 C -30 -70 40 -70 80 -10" fill="none" stroke="url(#artCyan)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<g transform="translate(80, -10)" filter="url(#artShadow)">
|
||||
<rect x="-20" y="-20" width="40" height="40" rx="6" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#FFFFFF" filter="url(#artGlow)"/>
|
||||
</g>
|
||||
<circle cx="0" cy="-60" r="4.5" fill="#06B6D4" filter="url(#artGlow)"/>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
之后 宽度: | 高度: | 大小: 3.6 KiB |
@@ -18,8 +18,8 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
@@ -28,7 +28,7 @@
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="10" result="blur"/>
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
@@ -42,21 +42,21 @@
|
||||
<g transform="translate(554, 20)">
|
||||
<rect width="24" height="24" rx="4" fill="#FEF2F2" stroke="#DC2626" stroke-width="1.2"/>
|
||||
<rect x="2" y="2" width="20" height="20" rx="2" fill="none" stroke="#DC2626" stroke-width="0.5" stroke-opacity="0.5"/>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">笃</text>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">核</text>
|
||||
</g>
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
|
||||
<circle cx="0" cy="0" r="120" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="90" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<path d="M 0 -70 L 45 -45 V 0 C 45 35 0 70 0 70 C 0 70 -45 35 -45 0 V -45 Z" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1.5" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#artBlue)" filter="url(#artGlow)"/>
|
||||
<circle cx="0" cy="0" r="10" fill="#FFFFFF"/>
|
||||
<line x1="-90" y1="0" x2="-22" y2="0" stroke="url(#artCyan)" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="22" y1="0" x2="90" y2="0" stroke="url(#artBlue)" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="-90" cy="0" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="90" cy="0" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="0" cy="0" r="115" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<ellipse cx="-55" cy="0" rx="55" ry="50" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<ellipse cx="55" cy="0" rx="55" ry="50" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="-55" cy="0" r="26" fill="url(#artBlue)" filter="url(#artShadow)"/>
|
||||
<circle cx="-55" cy="0" r="10" fill="#FFFFFF"/>
|
||||
<circle cx="55" cy="0" r="26" fill="url(#artCyan)" filter="url(#artShadow)"/>
|
||||
<circle cx="55" cy="0" r="10" fill="#FFFFFF"/>
|
||||
<path d="M -30 -10 C -10 -25 10 -25 30 -10" fill="none" stroke="url(#artBlue)" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M 30 10 C 10 25 -10 25 -30 10" fill="none" stroke="url(#artCyan)" stroke-width="2" stroke-linecap="round"/>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 3.2 KiB 之后 宽度: | 高度: | 大小: 3.2 KiB |
@@ -0,0 +1,71 @@
|
||||
<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
|
||||
<linearGradient id="artBgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF"/>
|
||||
<stop offset="100%" stop-color="#F8FAFC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artBlue" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#2563EB"/>
|
||||
<stop offset="100%" stop-color="#1D4ED8"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artCyan" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#06B6D4"/>
|
||||
<stop offset="100%" stop-color="#0EA5E9"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artPurple" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#7C3AED"/>
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="artShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
|
||||
<rect width="600" height="380" rx="8" fill="url(#artBgGrad)"/>
|
||||
<rect width="600" height="380" rx="8" fill="url(#artLattice)" opacity="0.6"/>
|
||||
<rect x="1" y="1" width="598" height="378" rx="7" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
|
||||
|
||||
<g transform="translate(554, 20)">
|
||||
<rect width="24" height="24" rx="4" fill="#FEF2F2" stroke="#DC2626" stroke-width="1.2"/>
|
||||
<rect x="2" y="2" width="20" height="20" rx="2" fill="none" stroke="#DC2626" stroke-width="0.5" stroke-opacity="0.5"/>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">防</text>
|
||||
</g>
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
|
||||
<!-- 网络分区虚线隔断 -->
|
||||
<line x1="0" y1="-100" x2="0" y2="100" stroke="#CBD5E1" stroke-width="1.5" stroke-dasharray="6,4"/>
|
||||
<!-- 左侧:健康多数派集群节点 -->
|
||||
<g transform="translate(-75, 0)" filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="45" fill="#EFF6FF" opacity="0.8"/>
|
||||
<circle cx="0" cy="0" r="32" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="14" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#1D4ED8"/>
|
||||
<circle cx="-35" cy="-35" r="5" fill="#06B6D4"/>
|
||||
<circle cx="35" cy="-35" r="5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="45" r="5" fill="#2563EB"/>
|
||||
</g>
|
||||
<!-- 右侧:孤立少数派休眠节点 -->
|
||||
<g transform="translate(75, 0)">
|
||||
<circle cx="0" cy="0" r="38" fill="none" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="24" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#94A3B8"/>
|
||||
</g>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
之后 宽度: | 高度: | 大小: 3.4 KiB |
@@ -18,8 +18,8 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
@@ -28,7 +28,7 @@
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="10" result="blur"/>
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
@@ -42,23 +42,16 @@
|
||||
<g transform="translate(554, 20)">
|
||||
<rect width="24" height="24" rx="4" fill="#FEF2F2" stroke="#DC2626" stroke-width="1.2"/>
|
||||
<rect x="2" y="2" width="20" height="20" rx="2" fill="none" stroke="#DC2626" stroke-width="0.5" stroke-opacity="0.5"/>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">安</text>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">固</text>
|
||||
</g>
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
|
||||
<polygon points="0,-95 82,-47 82,47 0,95 -82,47 -82,-47" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<polygon points="0,-75 65,-37 65,37 0,75 -65,37 -65,-37" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1.5" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="0" r="26" fill="url(#artPurple)"/>
|
||||
<circle cx="0" cy="0" r="14" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="-75" r="4" fill="#2563EB"/>
|
||||
<circle cx="65" cy="-37" r="4" fill="#7C3AED"/>
|
||||
<circle cx="65" cy="37" r="4" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="75" r="4" fill="#2563EB"/>
|
||||
<circle cx="-65" cy="37" r="4" fill="#7C3AED"/>
|
||||
<circle cx="-65" cy="-37" r="4" fill="#06B6D4"/>
|
||||
<path d="M 0 -85 L 60 -50 V 0 C 60 50 0 85 0 85 C 0 85 -60 50 -60 0 V -50 Z" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.5" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="0" r="26" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="12" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#1D4ED8"/>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 3.1 KiB 之后 宽度: | 高度: | 大小: 2.7 KiB |
@@ -18,8 +18,8 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
@@ -28,7 +28,7 @@
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="10" result="blur"/>
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
@@ -48,26 +48,11 @@
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
|
||||
<ellipse cx="0" cy="20" rx="180" ry="80" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<g filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="28" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="12" fill="#FFFFFF"/>
|
||||
</g>
|
||||
<g transform="translate(-110, -25)">
|
||||
<circle cx="0" cy="0" r="16" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#2563EB"/>
|
||||
<line x1="0" y1="0" x2="85" y2="20" stroke="#93C5FD" stroke-width="1.5" stroke-dasharray="3,3"/>
|
||||
</g>
|
||||
<g transform="translate(110, -25)">
|
||||
<circle cx="0" cy="0" r="16" fill="url(#artGlass)" stroke="#06B6D4" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#06B6D4"/>
|
||||
<line x1="0" y1="0" x2="-85" y2="20" stroke="#93C5FD" stroke-width="1.5" stroke-dasharray="3,3"/>
|
||||
</g>
|
||||
<g transform="translate(0, 70)">
|
||||
<circle cx="0" cy="0" r="14" fill="url(#artGlass)" stroke="#7C3AED" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="4.5" fill="#7C3AED"/>
|
||||
<line x1="0" y1="0" x2="0" y2="-42" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
</g>
|
||||
<ellipse cx="0" cy="40" rx="180" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<path d="M -120 40 Q -60 -40 0 20 T 120 10" fill="none" stroke="url(#artBlue)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<circle cx="-60" cy="-10" r="6" fill="#2563EB" filter="url(#artGlow)"/>
|
||||
<circle cx="0" cy="20" r="7" fill="#06B6D4" filter="url(#artGlow)"/>
|
||||
<circle cx="60" cy="-15" r="6" fill="#7C3AED" filter="url(#artGlow)"/>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 3.5 KiB 之后 宽度: | 高度: | 大小: 2.9 KiB |
@@ -18,8 +18,8 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
@@ -28,7 +28,7 @@
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="10" result="blur"/>
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
@@ -42,27 +42,17 @@
|
||||
<g transform="translate(554, 20)">
|
||||
<rect width="24" height="24" rx="4" fill="#FEF2F2" stroke="#DC2626" stroke-width="1.2"/>
|
||||
<rect x="2" y="2" width="20" height="20" rx="2" fill="none" stroke="#DC2626" stroke-width="0.5" stroke-opacity="0.5"/>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">律</text>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">规</text>
|
||||
</g>
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
|
||||
<circle cx="0" cy="0" r="110" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="5,5"/>
|
||||
<g transform="translate(-60, 0)" filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="30" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="12" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#1D4ED8"/>
|
||||
</g>
|
||||
<g transform="translate(60, 0)" filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="30" fill="url(#artCyan)"/>
|
||||
<circle cx="0" cy="0" r="12" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#0891B2"/>
|
||||
</g>
|
||||
<path d="M -30 -15 C 0 -35 0 -35 30 -15" fill="none" stroke="url(#artBlue)" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<path d="M 30 15 C 0 35 0 35 -30 15" fill="none" stroke="url(#artCyan)" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<circle cx="0" cy="-26" r="4" fill="#2563EB" filter="url(#artGlow)"/>
|
||||
<circle cx="0" cy="26" r="4" fill="#06B6D4" filter="url(#artGlow)"/>
|
||||
<rect x="-85" y="-85" width="170" height="170" rx="6" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="65" fill="none" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<polygon points="0,-40 38,25 -38,25" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.5" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="5" r="14" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="5" r="6" fill="#FFFFFF"/>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 3.4 KiB 之后 宽度: | 高度: | 大小: 2.8 KiB |
@@ -0,0 +1,69 @@
|
||||
<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
|
||||
<linearGradient id="artBgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF"/>
|
||||
<stop offset="100%" stop-color="#F8FAFC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artBlue" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#2563EB"/>
|
||||
<stop offset="100%" stop-color="#1D4ED8"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artCyan" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#06B6D4"/>
|
||||
<stop offset="100%" stop-color="#0EA5E9"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artPurple" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#7C3AED"/>
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="artShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
|
||||
<rect width="600" height="380" rx="8" fill="url(#artBgGrad)"/>
|
||||
<rect width="600" height="380" rx="8" fill="url(#artLattice)" opacity="0.6"/>
|
||||
<rect x="1" y="1" width="598" height="378" rx="7" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
|
||||
|
||||
<g transform="translate(554, 20)">
|
||||
<rect width="24" height="24" rx="4" fill="#FEF2F2" stroke="#DC2626" stroke-width="1.2"/>
|
||||
<rect x="2" y="2" width="20" height="20" rx="2" fill="none" stroke="#DC2626" stroke-width="0.5" stroke-opacity="0.5"/>
|
||||
<text x="12" y="17" fill="#DC2626" font-family="'Noto Serif SC', 'SimSun', serif" font-size="12" font-weight="700" text-anchor="middle">播</text>
|
||||
</g>
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
|
||||
<ellipse cx="0" cy="0" rx="150" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<ellipse cx="0" cy="0" rx="100" ry="50" fill="none" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<ellipse cx="0" cy="0" rx="50" ry="25" fill="none" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<!-- 中心调度器 -->
|
||||
<g filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="26" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="10" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="4" fill="#1D4ED8"/>
|
||||
</g>
|
||||
<!-- 环绕分片广播执行节点 -->
|
||||
<circle cx="-130" cy="0" r="8" fill="url(#artGlass)" stroke="#06B6D4" stroke-width="1.5"/>
|
||||
<circle cx="130" cy="0" r="8" fill="url(#artGlass)" stroke="#06B6D4" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="-65" r="7" fill="url(#artGlass)" stroke="#7C3AED" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="65" r="7" fill="url(#artGlass)" stroke="#7C3AED" stroke-width="1.5"/>
|
||||
<circle cx="-90" cy="-40" r="5" fill="#2563EB"/>
|
||||
<circle cx="90" cy="40" r="5" fill="#2563EB"/>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
之后 宽度: | 高度: | 大小: 3.5 KiB |
@@ -18,18 +18,23 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
@@ -47,30 +52,34 @@
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<ellipse cx="-80" cy="0" rx="80" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
<ellipse cx="80" cy="0" rx="80" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
<!-- 双环共振轨道 (门店前台与后厨 KDS 联动) -->
|
||||
<ellipse cx="-85" cy="0" rx="85" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
<ellipse cx="85" cy="0" rx="85" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
|
||||
<g transform="translate(-80, 0)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="36" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#1D4ED8"/>
|
||||
<!-- 左核:本地离线持久化节点 -->
|
||||
<g transform="translate(-85, 0)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="40" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="18" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#1D4ED8"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(80, 0)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="36" fill="url(#cyanGrad)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#0891B2"/>
|
||||
<!-- 右核:云端实时同步与对账中枢 -->
|
||||
<g transform="translate(85, 0)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="40" fill="url(#cyanGrad)"/>
|
||||
<circle cx="0" cy="0" r="18" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#0891B2"/>
|
||||
</g>
|
||||
|
||||
<path d="M -44 -14 C -15 -35 15 -35 44 -14" fill="none" stroke="url(#blueGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M 44 14 C 15 35 -15 35 -44 14" fill="none" stroke="url(#cyanGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<!-- 双向莫比乌斯回环流动 (网络中断无缝记账,恢复自动双向对齐) -->
|
||||
<path d="M -48 -16 C -18 -40 18 -40 48 -16" fill="none" stroke="url(#blueGrad)" stroke-width="2.8" stroke-linecap="round"/>
|
||||
<path d="M 48 16 C 18 40 -18 40 -48 16" fill="none" stroke="url(#cyanGrad)" stroke-width="2.8" stroke-linecap="round"/>
|
||||
|
||||
<circle cx="0" cy="-28" r="4.5" fill="#2563EB" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="28" r="4.5" fill="#06B6D4" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="-32" r="5" fill="#2563EB" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="32" r="5" fill="#06B6D4" filter="url(#softGlow)"/>
|
||||
|
||||
<circle cx="-160" cy="-30" r="3.5" fill="#CBD5E1"/>
|
||||
<circle cx="-160" cy="30" r="3.5" fill="#CBD5E1"/>
|
||||
<circle cx="160" cy="-30" r="3.5" fill="#CBD5E1"/>
|
||||
<circle cx="160" cy="30" r="3.5" fill="#CBD5E1"/>
|
||||
<circle cx="-170" cy="-35" r="4" fill="#CBD5E1"/>
|
||||
<circle cx="-170" cy="35" r="4" fill="#CBD5E1"/>
|
||||
<circle cx="170" cy="-35" r="4" fill="#CBD5E1"/>
|
||||
<circle cx="170" cy="35" r="4" fill="#CBD5E1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 3.6 KiB 之后 宽度: | 高度: | 大小: 4.2 KiB |
@@ -18,18 +18,23 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
@@ -47,37 +52,43 @@
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<ellipse cx="0" cy="20" rx="200" ry="90" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<!-- 经纬拓扑网格底台 -->
|
||||
<ellipse cx="0" cy="20" rx="215" ry="95" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
|
||||
<circle cx="0" cy="0" r="45" fill="#EFF6FF" opacity="0.8"/>
|
||||
<circle cx="0" cy="0" r="32" fill="url(#blueGrad)" filter="url(#cardShadow)"/>
|
||||
<circle cx="0" cy="0" r="14" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#1D4ED8"/>
|
||||
<!-- 核心调度枢纽 (全国订货大中台) -->
|
||||
<circle cx="0" cy="0" r="50" fill="#EFF6FF" opacity="0.85"/>
|
||||
<circle cx="0" cy="0" r="36" fill="url(#blueGrad)" filter="url(#cardShadow)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#1D4ED8"/>
|
||||
|
||||
<g transform="translate(-130, -35)">
|
||||
<line x1="0" y1="0" x2="105" y2="28" stroke="#93C5FD" stroke-width="1.5" stroke-dasharray="4,3"/>
|
||||
<circle cx="0" cy="0" r="20" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#2563EB"/>
|
||||
<!-- 分支节点 A:区域分销网络 -->
|
||||
<g transform="translate(-140, -40)">
|
||||
<line x1="0" y1="0" x2="115" y2="32" stroke="#93C5FD" stroke-width="1.8" stroke-dasharray="4,3"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(130, -35)">
|
||||
<line x1="0" y1="0" x2="-105" y2="28" stroke="#93C5FD" stroke-width="1.5" stroke-dasharray="4,3"/>
|
||||
<circle cx="0" cy="0" r="20" fill="url(#glassGrad)" stroke="#06B6D4" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#06B6D4"/>
|
||||
<!-- 分支节点 B:全渠道订单汇聚 -->
|
||||
<g transform="translate(140, -40)">
|
||||
<line x1="0" y1="0" x2="-115" y2="32" stroke="#93C5FD" stroke-width="1.8" stroke-dasharray="4,3"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#glassGrad)" stroke="#06B6D4" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#06B6D4"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(-85, 65)">
|
||||
<line x1="0" y1="0" x2="68" y2="-52" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="15" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#7C3AED"/>
|
||||
<!-- 底部仓储与履约节点 -->
|
||||
<g transform="translate(-95, 70)">
|
||||
<line x1="0" y1="0" x2="75" y2="-56" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="16" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#7C3AED"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(85, 65)">
|
||||
<line x1="0" y1="0" x2="-68" y2="-52" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="15" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#2563EB"/>
|
||||
<g transform="translate(95, 70)">
|
||||
<line x1="0" y1="0" x2="-75" y2="-56" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="16" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<path d="M -130 -35 Q 0 -80 130 -35" fill="none" stroke="url(#cyanGrad)" stroke-width="2" stroke-linecap="round"/>
|
||||
<!-- 高并发吞吐流动波峰曲线 (海纳百川江海意象) -->
|
||||
<path d="M -140 -40 Q 0 -90 140 -40" fill="none" stroke="url(#cyanGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 4.0 KiB 之后 宽度: | 高度: | 大小: 4.6 KiB |
@@ -18,18 +18,23 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
@@ -47,23 +52,27 @@
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<polygon points="0,-120 104,-60 104,60 0,120 -104,60 -104,-60" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<polygon points="0,-95 82,-47 82,47 0,95 -82,47 -82,-47" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5" opacity="0.7"/>
|
||||
<!-- 正八边形内网物理隔离边界 (零公网外泄) -->
|
||||
<polygon points="0,-125 110,-65 110,65 0,125 -110,65 -110,-65" fill="none" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="5,4"/>
|
||||
<polygon points="0,-100 88,-50 88,50 0,100 -88,50 -88,-50" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5" opacity="0.75"/>
|
||||
|
||||
<circle cx="0" cy="0" r="62" fill="#FAF5FF" opacity="0.8"/>
|
||||
<circle cx="0" cy="0" r="50" fill="none" stroke="#7C3AED" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<!-- 政策规章 RAG 知识库检索光芒同心环 -->
|
||||
<circle cx="0" cy="0" r="68" fill="#FAF5FF" opacity="0.85"/>
|
||||
<circle cx="0" cy="0" r="54" fill="none" stroke="#7C3AED" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
|
||||
<!-- 人机协同核心初审自动化决策中枢 -->
|
||||
<g filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="32" fill="url(#purpleGrad)"/>
|
||||
<circle cx="0" cy="0" r="20" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="9" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="35" fill="url(#purpleGrad)"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="10" fill="#FFFFFF"/>
|
||||
</g>
|
||||
|
||||
<circle cx="0" cy="-95" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="82" cy="-47" r="4.5" fill="#7C3AED"/>
|
||||
<circle cx="82" cy="47" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="95" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="-82" cy="47" r="4.5" fill="#7C3AED"/>
|
||||
<circle cx="-82" cy="-47" r="4.5" fill="#06B6D4"/>
|
||||
<!-- 规章依据定位与防伪节点 -->
|
||||
<circle cx="0" cy="-100" r="5" fill="#2563EB"/>
|
||||
<circle cx="88" cy="-50" r="5" fill="#7C3AED"/>
|
||||
<circle cx="88" cy="50" r="5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="100" r="5" fill="#2563EB"/>
|
||||
<circle cx="-88" cy="50" r="5" fill="#7C3AED"/>
|
||||
<circle cx="-88" cy="-50" r="5" fill="#06B6D4"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 3.3 KiB 之后 宽度: | 高度: | 大小: 3.8 KiB |
@@ -18,18 +18,23 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
@@ -47,25 +52,29 @@
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<circle cx="0" cy="0" r="130" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="6,4"/>
|
||||
<circle cx="0" cy="0" r="100" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="70" fill="#EFF6FF" opacity="0.6"/>
|
||||
<!-- 精密工程同心圆与刻度盘 -->
|
||||
<circle cx="0" cy="0" r="140" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="6,4"/>
|
||||
<circle cx="0" cy="0" r="110" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="75" fill="#EFF6FF" opacity="0.7"/>
|
||||
|
||||
<line x1="-120" y1="0" x2="120" y2="0" stroke="#CBD5E1" stroke-width="0.8"/>
|
||||
<line x1="0" y1="-120" x2="0" y2="120" stroke="#CBD5E1" stroke-width="0.8"/>
|
||||
<line x1="-85" y1="-85" x2="85" y2="85" stroke="#E2E8F0" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
<line x1="-85" y1="85" x2="85" y2="-85" stroke="#E2E8F0" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
<!-- 直交工程测量基准线 -->
|
||||
<line x1="-130" y1="0" x2="130" y2="0" stroke="#CBD5E1" stroke-width="0.8"/>
|
||||
<line x1="0" y1="-130" x2="0" y2="130" stroke="#CBD5E1" stroke-width="0.8"/>
|
||||
<line x1="-95" y1="-95" x2="95" y2="95" stroke="#E2E8F0" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
<line x1="-95" y1="95" x2="95" y2="-95" stroke="#E2E8F0" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
|
||||
<!-- 核心多级 BOM 装配与物料追溯中枢 -->
|
||||
<g filter="url(#cardShadow)">
|
||||
<polygon points="0,-40 38,-15 38,25 0,50 -38,25 -38,-15" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="5" r="22" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="5" r="10" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="5" r="4" fill="#1D4ED8"/>
|
||||
<polygon points="0,-44 42,-16 42,28 0,55 -42,28 -42,-16" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="6" r="24" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="6" r="11" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="6" r="4.5" fill="#1D4ED8"/>
|
||||
</g>
|
||||
|
||||
<circle cx="0" cy="-100" r="5" fill="#2563EB"/>
|
||||
<circle cx="100" cy="0" r="5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="100" r="5" fill="#7C3AED"/>
|
||||
<circle cx="-100" cy="0" r="5" fill="#2563EB"/>
|
||||
<!-- 四方咬合与溯源特征节点 -->
|
||||
<circle cx="0" cy="-110" r="5.5" fill="#2563EB"/>
|
||||
<circle cx="110" cy="0" r="5.5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="110" r="5.5" fill="#7C3AED"/>
|
||||
<circle cx="-110" cy="0" r="5.5" fill="#2563EB"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 3.5 KiB 之后 宽度: | 高度: | 大小: 4.0 KiB |
@@ -18,18 +18,23 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
@@ -47,34 +52,38 @@
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<ellipse cx="0" cy="65" rx="190" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,5"/>
|
||||
<!-- 空间底座仓储经纬线 -->
|
||||
<ellipse cx="0" cy="70" rx="210" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,5"/>
|
||||
|
||||
<g transform="translate(-80, 20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-30 38,-10 0,10 -38,-10" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-38,-10 0,10 0,40 -38,20" fill="#E2E8F0"/>
|
||||
<polygon points="0,10 38,-10 38,20 0,40" fill="#F1F5F9"/>
|
||||
<line x1="-19" y1="0" x2="19" y2="-20" stroke="#94A3B8" stroke-width="0.8"/>
|
||||
<circle cx="0" cy="-10" r="3.5" fill="#2563EB"/>
|
||||
<!-- 仓储库位等轴测透明格栅 (采购/入库/盘点/调拨) -->
|
||||
<g transform="translate(-90, 20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-34 42,-12 0,10 -42,-12" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-42,-12 0,10 0,44 -42,22" fill="#E2E8F0"/>
|
||||
<polygon points="0,10 42,-12 42,22 0,44" fill="#F1F5F9"/>
|
||||
<line x1="-21" y1="-1" x2="21" y2="-23" stroke="#94A3B8" stroke-width="1"/>
|
||||
<circle cx="0" cy="-12" r="4" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(80, 20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-30 38,-10 0,10 -38,-10" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-38,-10 0,10 0,40 -38,20" fill="#E2E8F0"/>
|
||||
<polygon points="0,10 38,-10 38,20 0,40" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-10" r="3.5" fill="#06B6D4"/>
|
||||
<g transform="translate(90, 20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-34 42,-12 0,10 -42,-12" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-42,-12 0,10 0,44 -42,22" fill="#E2E8F0"/>
|
||||
<polygon points="0,10 42,-12 42,22 0,44" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-12" r="4" fill="#06B6D4"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, -35)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="42" fill="none" stroke="#2563EB" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="32" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="14" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#1D4ED8"/>
|
||||
<!-- 核心业财一体化平衡中枢 -->
|
||||
<g transform="translate(0, -40)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="46" fill="none" stroke="#2563EB" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<circle cx="0" cy="0" r="35" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#1D4ED8"/>
|
||||
</g>
|
||||
|
||||
<path d="M -80 10 Q 0 -15 80 10" fill="none" stroke="url(#cyanGrad)" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M 80 30 Q 0 60 -80 30" fill="none" stroke="#2563EB" stroke-width="1.8" stroke-linecap="round" stroke-dasharray="5,3"/>
|
||||
<!-- 批次溯源与流转能量曲线 -->
|
||||
<path d="M -90 10 Q 0 -20 90 10" fill="none" stroke="url(#cyanGrad)" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<path d="M 90 32 Q 0 65 -90 32" fill="none" stroke="#2563EB" stroke-width="2" stroke-linecap="round" stroke-dasharray="5,3"/>
|
||||
|
||||
<line x1="0" y1="5" x2="0" y2="40" stroke="#CBD5E1" stroke-width="1.5" stroke-dasharray="3,3"/>
|
||||
<circle cx="0" cy="40" r="3.5" fill="#7C3AED"/>
|
||||
<line x1="0" y1="5" x2="0" y2="45" stroke="#CBD5E1" stroke-width="1.5" stroke-dasharray="3,3"/>
|
||||
<circle cx="0" cy="45" r="4" fill="#7C3AED"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 4.0 KiB 之后 宽度: | 高度: | 大小: 4.5 KiB |
@@ -18,18 +18,23 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
@@ -47,42 +52,49 @@
|
||||
|
||||
|
||||
<g transform="translate(300, 195)">
|
||||
<ellipse cx="0" cy="60" rx="190" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="4,4"/>
|
||||
<!-- 东方开阔地平基底 -->
|
||||
<ellipse cx="0" cy="65" rx="210" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
|
||||
<polygon points="0,-20 140,40 0,100 -140,40" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5"/>
|
||||
<polygon points="-140,40 0,100 0,116 -140,56" fill="#E2E8F0"/>
|
||||
<polygon points="0,100 140,40 140,56 0,116" fill="#F1F5F9"/>
|
||||
<!-- 底层全渠道汇聚大台 (Omnichannel Hub) -->
|
||||
<polygon points="0,-25 150,42 0,110 -150,42" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-150,42 0,110 0,126 -150,58" fill="#E2E8F0"/>
|
||||
<polygon points="0,110 150,42 150,58 0,126" fill="#F1F5F9"/>
|
||||
|
||||
<g transform="translate(0, 5)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-32 40,-12 0,10 -40,-12" fill="url(#blueGrad)"/>
|
||||
<polygon points="-40,-12 0,10 0,42 -40,20" fill="#1D4ED8"/>
|
||||
<polygon points="0,10 40,-12 40,20 0,42" fill="#1E40AF"/>
|
||||
<!-- 核心交易与分账立方体 -->
|
||||
<g transform="translate(0, 10)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-36 44,-14 0,12 -44,-14" fill="url(#blueGrad)"/>
|
||||
<polygon points="-44,-14 0,12 0,46 -44,22" fill="#1D4ED8"/>
|
||||
<polygon points="0,12 44,-14 44,22 0,46" fill="#1E40AF"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(-75, -20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-24 30,-9 0,8 -30,-9" fill="url(#cyanGrad)"/>
|
||||
<polygon points="-30,-9 0,8 0,30 -30,13" fill="#0891B2"/>
|
||||
<polygon points="0,8 30,-9 30,13 0,30" fill="#0E7490"/>
|
||||
<!-- 分销裂变支流矩阵:多商户入驻与渠道分销 -->
|
||||
<g transform="translate(-85, -20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-26 32,-10 0,8 -32,-10" fill="url(#cyanGrad)"/>
|
||||
<polygon points="-32,-10 0,8 0,32 -32,14" fill="#0891B2"/>
|
||||
<polygon points="0,8 32,-10 32,14 0,32" fill="#0E7490"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(75, -20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-24 30,-9 0,8 -30,-9" fill="url(#purpleGrad)"/>
|
||||
<polygon points="-30,-9 0,8 0,30 -30,13" fill="#6D28D9"/>
|
||||
<polygon points="0,8 30,-9 30,13 0,30" fill="#5B21B6"/>
|
||||
<g transform="translate(85, -20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-26 32,-10 0,8 -32,-10" fill="url(#purpleGrad)"/>
|
||||
<polygon points="-32,-10 0,8 0,32 -32,14" fill="#6D28D9"/>
|
||||
<polygon points="0,8 32,-10 32,14 0,32" fill="#5B21B6"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, -75)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-18 22,-6 0,6 -22,-6" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<polygon points="-22,-6 0,6 0,20 -22,8" fill="#DBEAFE"/>
|
||||
<polygon points="0,6 22,-6 22,8 0,20" fill="#BFDBFE"/>
|
||||
<circle cx="0" cy="0" r="3" fill="#2563EB"/>
|
||||
<!-- 顶端私域流量聚合枢纽 -->
|
||||
<g transform="translate(0, -78)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-20 25,-7 0,7 -25,-7" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<polygon points="-25,-7 0,7 0,22 -25,9" fill="#DBEAFE"/>
|
||||
<polygon points="0,7 25,-7 25,9 0,22" fill="#BFDBFE"/>
|
||||
<circle cx="0" cy="0" r="3.5" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<path d="M -75 -10 Q 0 -50 75 -10" fill="none" stroke="url(#blueGrad)" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M 75 10 Q 0 50 -75 10" fill="none" stroke="url(#cyanGrad)" stroke-width="1.8" stroke-linecap="round" stroke-dasharray="4,3"/>
|
||||
<line x1="0" y1="-50" x2="0" y2="-25" stroke="#2563EB" stroke-width="1.5" stroke-dasharray="2,2"/>
|
||||
<!-- 斐波那契能量流线互锁 -->
|
||||
<path d="M -85 -10 Q 0 -55 85 -10" fill="none" stroke="url(#blueGrad)" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<path d="M 85 10 Q 0 55 -85 10" fill="none" stroke="url(#cyanGrad)" stroke-width="2" stroke-linecap="round" stroke-dasharray="4,3"/>
|
||||
<line x1="0" y1="-55" x2="0" y2="-26" stroke="#2563EB" stroke-width="1.5" stroke-dasharray="2,2"/>
|
||||
|
||||
<circle cx="-35" cy="-35" r="3.5" fill="#2563EB" opacity="0.6"/>
|
||||
<circle cx="45" cy="-35" r="3" fill="#7C3AED" opacity="0.6"/>
|
||||
<circle cx="-40" cy="-35" r="4" fill="#2563EB" opacity="0.7"/>
|
||||
<circle cx="50" cy="-35" r="3.5" fill="#7C3AED" opacity="0.7"/>
|
||||
<circle cx="0" cy="65" r="4" fill="#06B6D4" opacity="0.7"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 4.4 KiB 之后 宽度: | 高度: | 大小: 5.0 KiB |
@@ -18,18 +18,23 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
@@ -47,26 +52,30 @@
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<circle cx="0" cy="0" r="140" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="110" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="80" fill="#EFF6FF" opacity="0.7"/>
|
||||
<!-- 极精确的外围时钟刻度脉冲 -->
|
||||
<circle cx="0" cy="0" r="145" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="120" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="85" fill="#EFF6FF" opacity="0.75"/>
|
||||
|
||||
<path d="M 0 -85 L 55 -55 V 0 C 55 45 0 85 0 85 C 0 85 -55 45 -55 0 V -55 Z" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5" filter="url(#cardShadow)"/>
|
||||
<path d="M 0 -70 L 42 -45 V 0 C 42 35 0 68 0 68 C 0 68 -42 35 -42 0 V -45 Z" fill="none" stroke="#93C5FD" stroke-width="1"/>
|
||||
<!-- 软硬件一体双向坚固护盾结构 (离线记账与在线秒级核销) -->
|
||||
<path d="M 0 -95 L 60 -60 V 0 C 60 50 0 95 0 95 C 0 95 -60 50 -60 0 V -60 Z" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5" filter="url(#cardShadow)"/>
|
||||
<path d="M 0 -80 L 46 -50 V 0 C 46 38 0 76 0 76 C 0 76 -46 38 -46 0 V -50 Z" fill="none" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
|
||||
<circle cx="0" cy="0" r="28" fill="url(#blueGrad)" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="0" r="14" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#2563EB"/>
|
||||
<!-- 核心确定性原子事务锁 -->
|
||||
<circle cx="0" cy="0" r="32" fill="url(#blueGrad)" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#1D4ED8"/>
|
||||
|
||||
<line x1="-120" y1="0" x2="-28" y2="0" stroke="url(#cyanGrad)" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="-120" cy="0" r="5" fill="#06B6D4"/>
|
||||
<circle cx="-120" cy="0" r="9" fill="none" stroke="#06B6D4" stroke-width="1" opacity="0.5"/>
|
||||
<!-- 左右双向对称通信信道 (左:外设硬件驱动 / 右:云端资金清算) -->
|
||||
<line x1="-135" y1="0" x2="-32" y2="0" stroke="url(#cyanGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<circle cx="-135" cy="0" r="6" fill="#06B6D4"/>
|
||||
<circle cx="-135" cy="0" r="10" fill="none" stroke="#06B6D4" stroke-width="1" opacity="0.5"/>
|
||||
|
||||
<line x1="28" y1="0" x2="120" y2="0" stroke="url(#blueGrad)" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="120" cy="0" r="5" fill="#2563EB"/>
|
||||
<circle cx="120" cy="0" r="9" fill="none" stroke="#2563EB" stroke-width="1" opacity="0.5"/>
|
||||
<line x1="32" y1="0" x2="135" y2="0" stroke="url(#blueGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<circle cx="135" cy="0" r="6" fill="#2563EB"/>
|
||||
<circle cx="135" cy="0" r="10" fill="none" stroke="#2563EB" stroke-width="1" opacity="0.5"/>
|
||||
|
||||
<line x1="0" y1="-85" x2="0" y2="-120" stroke="#7C3AED" stroke-width="1.8" stroke-dasharray="3,3"/>
|
||||
<circle cx="0" cy="-120" r="4.5" fill="#7C3AED"/>
|
||||
<line x1="0" y1="-95" x2="0" y2="-130" stroke="#7C3AED" stroke-width="2" stroke-dasharray="3,3"/>
|
||||
<circle cx="0" cy="-130" r="5" fill="#7C3AED"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 3.8 KiB 之后 宽度: | 高度: | 大小: 4.3 KiB |
@@ -18,18 +18,23 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
@@ -47,35 +52,40 @@
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<ellipse cx="0" cy="65" rx="195" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4"/>
|
||||
<!-- 空间基底椭圆 -->
|
||||
<ellipse cx="0" cy="70" rx="210" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4"/>
|
||||
|
||||
<g transform="translate(0, 55)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-25 110,12 0,48 -110,12" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-110,12 0,48 0,58 -110,22" fill="#E2E8F0"/>
|
||||
<polygon points="0,48 110,12 110,22 0,58" fill="#F1F5F9"/>
|
||||
<circle cx="-50" cy="12" r="3" fill="#2563EB"/>
|
||||
<circle cx="50" cy="12" r="3" fill="#06B6D4"/>
|
||||
<!-- 第 1 层切片:数据存储与物理隔离底座 -->
|
||||
<g transform="translate(0, 60)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-28 125,14 0,55 -125,14" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-125,14 0,55 0,66 -125,25" fill="#E2E8F0"/>
|
||||
<polygon points="0,55 125,14 125,25 0,66" fill="#F1F5F9"/>
|
||||
<circle cx="-60" cy="14" r="3.5" fill="#2563EB"/>
|
||||
<circle cx="60" cy="14" r="3.5" fill="#06B6D4"/>
|
||||
</g>
|
||||
|
||||
<!-- 第 2 层切片:微服务与多租户逻辑强隔离中枢 -->
|
||||
<g transform="translate(0, 5)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-25 110,12 0,48 -110,12" fill="url(#glassGrad)" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<polygon points="-110,12 0,48 0,58 -110,22" fill="#BFDBFE"/>
|
||||
<polygon points="0,48 110,12 110,22 0,58" fill="#DBEAFE"/>
|
||||
<circle cx="0" cy="12" r="5" fill="#2563EB" filter="url(#softGlow)"/>
|
||||
<polygon points="0,-28 125,14 0,55 -125,14" fill="url(#glassGrad)" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<polygon points="-125,14 0,55 0,66 -125,25" fill="#BFDBFE"/>
|
||||
<polygon points="0,55 125,14 125,25 0,66" fill="#DBEAFE"/>
|
||||
<circle cx="0" cy="14" r="6" fill="#2563EB" filter="url(#softGlow)"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, -45)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-25 110,12 0,48 -110,12" fill="url(#glassGrad)" stroke="#C4B5FD" stroke-width="1.2"/>
|
||||
<polygon points="-110,12 0,48 0,58 -110,22" fill="#DDD6FE"/>
|
||||
<polygon points="0,48 110,12 110,22 0,58" fill="#EDE9FE"/>
|
||||
<circle cx="0" cy="12" r="6" fill="#7C3AED" filter="url(#softGlow)"/>
|
||||
<!-- 第 3 层切片:云原生网关与应用多维接入层 -->
|
||||
<g transform="translate(0, -50)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-28 125,14 0,55 -125,14" fill="url(#glassGrad)" stroke="#C4B5FD" stroke-width="1.2"/>
|
||||
<polygon points="-125,14 0,55 0,66 -125,25" fill="#DDD6FE"/>
|
||||
<polygon points="0,55 125,14 125,25 0,66" fill="#EDE9FE"/>
|
||||
<circle cx="0" cy="14" r="7" fill="#7C3AED" filter="url(#softGlow)"/>
|
||||
</g>
|
||||
|
||||
<line x1="0" y1="-75" x2="0" y2="70" stroke="url(#blueGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<line x1="-60" y1="-30" x2="-60" y2="60" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
<line x1="60" y1="-30" x2="60" y2="60" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
<!-- 垂直穿透的弹性集群伸缩中轴 (Elastic Spinal Column) -->
|
||||
<line x1="0" y1="-85" x2="0" y2="80" stroke="url(#blueGrad)" stroke-width="3" stroke-linecap="round"/>
|
||||
<line x1="-70" y1="-35" x2="-70" y2="68" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
<line x1="70" y1="-35" x2="70" y2="68" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
|
||||
<circle cx="-130" cy="-20" r="4" fill="#06B6D4"/>
|
||||
<circle cx="130" cy="-20" r="4" fill="#2563EB"/>
|
||||
<circle cx="-140" cy="-25" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="140" cy="-25" r="4.5" fill="#2563EB"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 4.1 KiB 之后 宽度: | 高度: | 大小: 4.7 KiB |
@@ -18,18 +18,23 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
@@ -47,37 +52,36 @@
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<circle cx="0" cy="0" r="110" fill="#FAF5FF" opacity="0.7"/>
|
||||
<circle cx="0" cy="0" r="80" fill="#EFF6FF" opacity="0.9"/>
|
||||
<!-- 外层东方方圆防护边界 (物理隔离与合规) -->
|
||||
<rect x="-115" y="-115" width="230" height="230" rx="8" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4"/>
|
||||
<circle cx="0" cy="0" r="115" fill="none" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="85" fill="#FAF5FF" opacity="0.75"/>
|
||||
|
||||
<ellipse cx="0" cy="0" rx="170" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4" transform="rotate(-25)"/>
|
||||
<ellipse cx="0" cy="0" rx="170" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4" transform="rotate(35)"/>
|
||||
<circle cx="0" cy="0" r="130" fill="none" stroke="#CBD5E1" stroke-width="0.8"/>
|
||||
|
||||
<g transform="rotate(-25)">
|
||||
<circle cx="-150" cy="0" r="6" fill="#7C3AED" filter="url(#softGlow)"/>
|
||||
<circle cx="150" cy="0" r="5" fill="#2563EB"/>
|
||||
</g>
|
||||
<g transform="rotate(35)">
|
||||
<circle cx="0" cy="-65" r="5.5" fill="#06B6D4" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="65" r="4.5" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<polygon points="0,-60 52,-25 52,35 0,68 -52,35 -52,-25" fill="none" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<polygon points="0,-40 35,-15 35,25 0,48 -35,25 -35,-15" fill="none" stroke="#C4B5FD" stroke-width="1"/>
|
||||
<line x1="0" y1="-60" x2="0" y2="68" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
<line x1="-52" y1="-25" x2="52" y2="35" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
<line x1="-52" y1="35" x2="52" y2="-25" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
|
||||
<circle cx="0" cy="0" r="26" fill="url(#purpleGrad)" filter="url(#cardShadow)"/>
|
||||
<circle cx="0" cy="0" r="18" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#FFFFFF"/>
|
||||
<!-- 高维多面体向量结界 -->
|
||||
<polygon points="0,-75 65,-37 65,37 0,75 -65,37 -65,-37" fill="none" stroke="#C4B5FD" stroke-width="1.2"/>
|
||||
<polygon points="0,-55 45,-26 45,26 0,55 -45,26 -45,-26" fill="none" stroke="#93C5FD" stroke-width="1.2" stroke-dasharray="4,3"/>
|
||||
|
||||
<circle cx="0" cy="-60" r="3.5" fill="#2563EB"/>
|
||||
<circle cx="52" cy="-25" r="3.5" fill="#06B6D4"/>
|
||||
<circle cx="52" cy="35" r="3.5" fill="#7C3AED"/>
|
||||
<circle cx="0" cy="68" r="3.5" fill="#2563EB"/>
|
||||
<circle cx="-52" cy="35" r="3.5" fill="#06B6D4"/>
|
||||
<circle cx="-52" cy="-25" r="3.5" fill="#7C3AED"/>
|
||||
<!-- 放射状 RAG 向量探寻光栅 -->
|
||||
<line x1="0" y1="-75" x2="0" y2="75" stroke="#CBD5E1" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
<line x1="-65" y1="-37" x2="65" y2="37" stroke="#CBD5E1" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
<line x1="-65" y1="37" x2="65" y2="-37" stroke="#CBD5E1" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
|
||||
<!-- 知识库星云聚类核心 (Agent Core) -->
|
||||
<circle cx="0" cy="0" r="32" fill="url(#purpleGrad)" filter="url(#cardShadow)"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="10" fill="#FFFFFF" filter="url(#softGlow)"/>
|
||||
|
||||
<!-- 命中特征粒子矩阵 -->
|
||||
<circle cx="0" cy="-75" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="65" cy="-37" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="65" cy="37" r="4.5" fill="#7C3AED"/>
|
||||
<circle cx="0" cy="75" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="-65" cy="37" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="-65" cy="-37" r="4.5" fill="#7C3AED"/>
|
||||
|
||||
<circle cx="-35" cy="-45" r="3" fill="#2563EB" opacity="0.6"/>
|
||||
<circle cx="40" cy="-50" r="3" fill="#7C3AED" opacity="0.6"/>
|
||||
<circle cx="-45" cy="40" r="3" fill="#06B6D4" opacity="0.6"/>
|
||||
<circle cx="48" cy="42" r="3" fill="#2563EB" opacity="0.6"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 4.2 KiB 之后 宽度: | 高度: | 大小: 4.5 KiB |
@@ -18,18 +18,23 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
@@ -47,35 +52,37 @@
|
||||
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<ellipse cx="0" cy="70" rx="200" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="4,4"/>
|
||||
|
||||
<g transform="translate(-110, -10)" filter="url(#cardShadow)">
|
||||
<rect x="-65" y="-85" width="130" height="170" rx="8" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5"/>
|
||||
<rect x="-55" y="-75" width="110" height="135" rx="4" fill="#FFFFFF" stroke="#E2E8F0"/>
|
||||
<line x1="-45" y1="-60" x2="0" y2="-60" stroke="#CBD5E1" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<rect x="-45" y="-45" width="42" height="36" rx="3" fill="#EFF6FF" stroke="#BFDBFE"/>
|
||||
<rect x="3" y="-45" width="42" height="36" rx="3" fill="#F1F5F9" stroke="#E2E8F0"/>
|
||||
<rect x="-45" y="0" width="90" height="48" rx="3" fill="#F8FAFC" stroke="#E2E8F0"/>
|
||||
<circle cx="0" cy="72" r="4" fill="#94A3B8"/>
|
||||
<!-- 空间同心流动轨道环 (iOS / Android / 微信多端协同) -->
|
||||
<ellipse cx="0" cy="0" rx="210" ry="80" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4" transform="rotate(-15)"/>
|
||||
<ellipse cx="0" cy="0" rx="170" ry="65" fill="none" stroke="#CBD5E1" stroke-width="1.2" transform="rotate(20)"/>
|
||||
<ellipse cx="0" cy="0" rx="120" ry="50" fill="none" stroke="#93C5FD" stroke-width="1" stroke-dasharray="4,4"/>
|
||||
|
||||
<!-- 核心设备与多端界面等轴测悬浮板 -->
|
||||
<g transform="translate(-70, -25)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-45 42,-18 0,10 -42,-18" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-42,-18 0,10 0,65 -42,38" fill="#FFFFFF" stroke="#E2E8F0"/>
|
||||
<polygon points="0,10 42,-18 42,38 0,65" fill="#F8FAFC" stroke="#E2E8F0"/>
|
||||
<!-- 极简微界面线条与卡片 -->
|
||||
<line x1="-28" y1="2" x2="0" y2="12" stroke="#CBD5E1" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="-15" cy="28" r="8" fill="#EFF6FF" stroke="#BFDBFE"/>
|
||||
<rect x="5" y="24" width="22" height="16" rx="2" fill="#F1F5F9" stroke="#E2E8F0"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(75, 10)" filter="url(#cardShadow)">
|
||||
<rect x="-45" y="-95" width="90" height="190" rx="14" fill="#FFFFFF" stroke="#2563EB" stroke-width="1.8"/>
|
||||
<rect x="-14" y="-87" width="28" height="6" rx="3" fill="#E2E8F0"/>
|
||||
<rect x="-37" y="-74" width="74" height="154" rx="8" fill="url(#bgGrad)"/>
|
||||
<circle cx="0" cy="-35" r="18" fill="url(#blueGrad)"/>
|
||||
<rect x="-24" y="-8" width="48" height="6" rx="3" fill="#93C5FD"/>
|
||||
<rect x="-18" y="4" width="36" height="5" rx="2.5" fill="#CBD5E1"/>
|
||||
<rect x="-28" y="20" width="56" height="45" rx="4" fill="#FFFFFF" stroke="#E2E8F0"/>
|
||||
<rect x="-15" y="86" width="30" height="3" rx="1.5" fill="#94A3B8"/>
|
||||
<g transform="translate(65, 20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-50 48,-20 0,12 -48,-20" fill="url(#blueGrad)"/>
|
||||
<polygon points="-48,-20 0,12 0,70 -48,38" fill="#1D4ED8"/>
|
||||
<polygon points="0,12 48,-20 48,38 0,70" fill="#1E40AF"/>
|
||||
<circle cx="0" cy="-20" r="14" fill="#FFFFFF" opacity="0.9"/>
|
||||
<circle cx="0" cy="-20" r="6" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<path d="M -45 -15 C -10 -50 30 -40 75 -25" fill="none" stroke="url(#cyanGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M 75 45 C 30 70 -20 60 -45 35" fill="none" stroke="url(#purpleGrad)" stroke-width="2" stroke-linecap="round" stroke-dasharray="5,3"/>
|
||||
|
||||
<circle cx="15" cy="-35" r="4" fill="#06B6D4" filter="url(#softGlow)"/>
|
||||
<circle cx="12" cy="55" r="3.5" fill="#7C3AED" filter="url(#softGlow)"/>
|
||||
<circle cx="-135" cy="40" r="3" fill="#2563EB"/>
|
||||
<circle cx="145" cy="-20" r="3" fill="#06B6D4"/>
|
||||
<!-- 60fps 动量流光粒子穿梭 -->
|
||||
<path d="M -150 -40 C -80 -90 40 -80 140 -20" fill="none" stroke="url(#cyanGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M 140 30 C 80 80 -40 90 -140 40" fill="none" stroke="url(#purpleGrad)" stroke-width="2" stroke-linecap="round" stroke-dasharray="5,3"/>
|
||||
|
||||
<circle cx="140" cy="-20" r="5" fill="#06B6D4" filter="url(#softGlow)"/>
|
||||
<circle cx="-140" cy="40" r="4.5" fill="#7C3AED" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="-80" r="3.5" fill="#2563EB"/>
|
||||
<circle cx="0" cy="82" r="3" fill="#06B6D4"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 4.4 KiB 之后 宽度: | 高度: | 大小: 4.8 KiB |
@@ -18,18 +18,23 @@
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
|
||||
</defs>
|
||||
@@ -47,49 +52,60 @@
|
||||
|
||||
|
||||
<g transform="translate(300, 195)">
|
||||
<ellipse cx="0" cy="50" rx="210" ry="85" fill="none" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="6,6"/>
|
||||
<ellipse cx="0" cy="50" rx="150" ry="60" fill="none" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<!-- 东方天圆地方经纬轨道 -->
|
||||
<ellipse cx="0" cy="55" rx="220" ry="85" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,6"/>
|
||||
<ellipse cx="0" cy="55" rx="160" ry="60" fill="none" stroke="#CBD5E1" stroke-width="1"/>
|
||||
|
||||
<g transform="translate(-140, 45)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-16 28,-2 0,12 -28,-2" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<polygon points="-28,-2 0,12 0,26 -28,12" fill="#E2E8F0"/>
|
||||
<polygon points="0,12 28,-2 28,12 0,26" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-2" r="3" fill="#2563EB"/>
|
||||
</g>
|
||||
<g transform="translate(140, 45)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-16 28,-2 0,12 -28,-2" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<polygon points="-28,-2 0,12 0,26 -28,12" fill="#E2E8F0"/>
|
||||
<polygon points="0,12 28,-2 28,12 0,26" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-2" r="3" fill="#06B6D4"/>
|
||||
<!-- 标尺刻度线与流向标 -->
|
||||
<path d="M -160 55 L -140 45 M 160 55 L 140 45" stroke="#94A3B8" stroke-width="1"/>
|
||||
|
||||
<!-- 左翼解耦子节点:网关与调度中枢 -->
|
||||
<g transform="translate(-145, 45)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-18 32,-3 0,14 -32,-3" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-32,-3 0,14 0,30 -32,13" fill="#E2E8F0"/>
|
||||
<polygon points="0,14 32,-3 32,13 0,30" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-3" r="3.5" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<path d="M -140 45 L 0 -10 M 140 45 L 0 -10 M 0 -10 L 0 -75" stroke="#94A3B8" stroke-width="1.5" stroke-dasharray="4,4"/>
|
||||
<path d="M -80 75 Q 0 40 80 75" fill="none" stroke="#2563EB" stroke-width="1.5" opacity="0.6"/>
|
||||
|
||||
<g transform="translate(-60, 10)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-22 36,-4 0,14 -36,-4" fill="url(#blueGrad)"/>
|
||||
<polygon points="-36,-4 0,14 0,36 -36,18" fill="#1D4ED8"/>
|
||||
<polygon points="0,14 36,-4 36,18 0,36" fill="#1E40AF"/>
|
||||
</g>
|
||||
<g transform="translate(60, 10)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-22 36,-4 0,14 -36,-4" fill="url(#cyanGrad)"/>
|
||||
<polygon points="-36,-4 0,14 0,36 -36,18" fill="#0891B2"/>
|
||||
<polygon points="0,14 36,-4 36,18 0,36" fill="#0E7490"/>
|
||||
<!-- 右翼解耦子节点:持久化集群与数据资产 -->
|
||||
<g transform="translate(145, 45)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-18 32,-3 0,14 -32,-3" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-32,-3 0,14 0,30 -32,13" fill="#E2E8F0"/>
|
||||
<polygon points="0,14 32,-3 32,13 0,30" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-3" r="3.5" fill="#06B6D4"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, -60)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="48" fill="#EFF6FF" opacity="0.8"/>
|
||||
<circle cx="0" cy="0" r="38" fill="none" stroke="#2563EB" stroke-width="1.2" stroke-dasharray="5,3"/>
|
||||
<polygon points="0,-32 30,-12 0,8 -30,-12" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<polygon points="-30,-12 0,8 0,32 -30,12" fill="#DBEAFE"/>
|
||||
<polygon points="0,8 30,-12 30,12 0,32" fill="#BFDBFE"/>
|
||||
<circle cx="0" cy="8" r="5" fill="#2563EB"/>
|
||||
<circle cx="0" cy="8" r="8" fill="none" stroke="#2563EB" stroke-width="1" opacity="0.5"/>
|
||||
<!-- 拓扑神经链路 -->
|
||||
<path d="M -145 45 L 0 -15 M 145 45 L 0 -15 M 0 -15 L 0 -80" stroke="#94A3B8" stroke-width="1.5" stroke-dasharray="4,4"/>
|
||||
<path d="M -90 75 Q 0 35 90 75" fill="none" stroke="url(#blueGrad)" stroke-width="1.8" opacity="0.7"/>
|
||||
|
||||
<!-- 中层微服务立方咬合阵列 -->
|
||||
<g transform="translate(-65, 12)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-24 38,-4 0,16 -38,-4" fill="url(#blueGrad)"/>
|
||||
<polygon points="-38,-4 0,16 0,40 -38,20" fill="#1D4ED8"/>
|
||||
<polygon points="0,16 38,-4 38,20 0,40" fill="#1E40AF"/>
|
||||
</g>
|
||||
<g transform="translate(65, 12)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-24 38,-4 0,16 -38,-4" fill="url(#cyanGrad)"/>
|
||||
<polygon points="-38,-4 0,16 0,40 -38,20" fill="#0891B2"/>
|
||||
<polygon points="0,16 38,-4 38,20 0,40" fill="#0E7490"/>
|
||||
</g>
|
||||
|
||||
<circle cx="-120" cy="-30" r="3" fill="#2563EB" opacity="0.6"/>
|
||||
<circle cx="110" cy="-40" r="3.5" fill="#06B6D4" opacity="0.6"/>
|
||||
<circle cx="-50" cy="90" r="2.5" fill="#7C3AED" opacity="0.5"/>
|
||||
<circle cx="70" cy="80" r="3" fill="#2563EB" opacity="0.5"/>
|
||||
<!-- 顶层核心枢纽:高可用微服务中台大盘 -->
|
||||
<g transform="translate(0, -65)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="52" fill="#EFF6FF" opacity="0.85"/>
|
||||
<circle cx="0" cy="0" r="42" fill="none" stroke="#2563EB" stroke-width="1.2" stroke-dasharray="6,3"/>
|
||||
<polygon points="0,-36 34,-14 0,10 -34,-14" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<polygon points="-34,-14 0,10 0,36 -34,14" fill="#DBEAFE"/>
|
||||
<polygon points="0,10 34,-14 34,14 0,36" fill="#BFDBFE"/>
|
||||
<circle cx="0" cy="10" r="6" fill="#2563EB" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="10" r="10" fill="none" stroke="#2563EB" stroke-width="1" opacity="0.6"/>
|
||||
</g>
|
||||
|
||||
<!-- 空间浮动数据微粒 -->
|
||||
<circle cx="-120" cy="-30" r="3.5" fill="#2563EB" opacity="0.6"/>
|
||||
<circle cx="115" cy="-40" r="4" fill="#06B6D4" opacity="0.7"/>
|
||||
<circle cx="-50" cy="95" r="3" fill="#7C3AED" opacity="0.5"/>
|
||||
<circle cx="80" cy="85" r="3.5" fill="#2563EB" opacity="0.6"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
之前 宽度: | 高度: | 大小: 4.9 KiB 之后 宽度: | 高度: | 大小: 5.7 KiB |
@@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
生成文章资讯专属现代中式极简矢量封面图 (Concise Article Covers Generator)
|
||||
生成文章资讯专属现代中式极简矢量封面图 (Concise & Advanced Article Covers Generator)
|
||||
彻底杜绝文字介绍类图片,纯粹以现代中式浅色专业风空间几何、流光、细线窗棂与单字印章呈现。
|
||||
尺寸 600x380,浅色专业底色 #FFFFFF / #F8FAFC,主色 #2563EB,辅色 #06B6D4 / #7C3AED。
|
||||
"""
|
||||
@@ -28,8 +28,8 @@ COMMON_DEFS = '''
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="artGlass" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.88"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<pattern id="artLattice" width="24" height="24" patternUnits="userSpaceOnUse">
|
||||
<path d="M 24 0 L 0 0 0 24" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
@@ -38,7 +38,7 @@ COMMON_DEFS = '''
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
</filter>
|
||||
<filter id="artGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="10" result="blur"/>
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
'''
|
||||
@@ -70,7 +70,86 @@ def create_base_svg(seal_char, visual_elements):
|
||||
</svg>'''
|
||||
|
||||
articles = {
|
||||
# 1. 微服务分布式事务
|
||||
# 首页 4 篇技术深度文章专属抽象封面
|
||||
# 1. 缓存穿透、击穿与雪崩《三阶重滤与抗压漏斗》
|
||||
'article_cache.svg': ('盾', '''
|
||||
<ellipse cx="0" cy="65" rx="190" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<!-- 布隆过滤器位图光栅与防御漏斗 -->
|
||||
<polygon points="0,-85 90,-45 0,-15 -90,-45" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.5" filter="url(#artShadow)"/>
|
||||
<polygon points="0,-35 60,-5 0,18 -60,-5" fill="url(#artGlass)" stroke="#06B6D4" stroke-width="1.2"/>
|
||||
<polygon points="0,5 35,22 0,38 -35,22" fill="url(#artBlue)"/>
|
||||
<line x1="0" y1="-85" x2="0" y2="70" stroke="url(#artBlue)" stroke-width="2.5" stroke-dasharray="4,3"/>
|
||||
<circle cx="0" cy="70" r="18" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="70" r="6" fill="#2563EB" filter="url(#artGlow)"/>
|
||||
<circle cx="-65" cy="-25" r="3.5" fill="#DC2626"/>
|
||||
<circle cx="65" cy="-25" r="3.5" fill="#DC2626"/>
|
||||
'''),
|
||||
|
||||
# 2. MySQL LIMIT 深度分页《B+Tree 跳跃指针与延迟关联》
|
||||
'article_mysql_page.svg': ('跃', '''
|
||||
<ellipse cx="0" cy="60" rx="180" ry="65" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<!-- B+Tree 索引阶梯结构 -->
|
||||
<line x1="-120" y1="40" x2="120" y2="40" stroke="#CBD5E1" stroke-width="1.5"/>
|
||||
<g transform="translate(-80, 20)">
|
||||
<rect x="-15" y="-15" width="30" height="30" rx="4" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="3" fill="#94A3B8"/>
|
||||
</g>
|
||||
<g transform="translate(-20, 0)">
|
||||
<rect x="-15" y="-15" width="30" height="30" rx="4" fill="url(#artGlass)" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="3" fill="#2563EB"/>
|
||||
</g>
|
||||
<!-- 高性能延迟关联跳跃抛物线 (由 3.8s 降至 12ms) -->
|
||||
<path d="M -80 5 C -30 -70 40 -70 80 -10" fill="none" stroke="url(#artCyan)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<g transform="translate(80, -10)" filter="url(#artShadow)">
|
||||
<rect x="-20" y="-20" width="40" height="40" rx="6" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#FFFFFF" filter="url(#artGlow)"/>
|
||||
</g>
|
||||
<circle cx="0" cy="-60" r="4.5" fill="#06B6D4" filter="url(#artGlow)"/>
|
||||
'''),
|
||||
|
||||
# 3. XXL-JOB 分布式分片广播《全域广播与等距波纹》
|
||||
'article_xxl_job.svg': ('播', '''
|
||||
<ellipse cx="0" cy="0" rx="150" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<ellipse cx="0" cy="0" rx="100" ry="50" fill="none" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<ellipse cx="0" cy="0" rx="50" ry="25" fill="none" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<!-- 中心调度器 -->
|
||||
<g filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="26" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="10" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="4" fill="#1D4ED8"/>
|
||||
</g>
|
||||
<!-- 环绕分片广播执行节点 -->
|
||||
<circle cx="-130" cy="0" r="8" fill="url(#artGlass)" stroke="#06B6D4" stroke-width="1.5"/>
|
||||
<circle cx="130" cy="0" r="8" fill="url(#artGlass)" stroke="#06B6D4" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="-65" r="7" fill="url(#artGlass)" stroke="#7C3AED" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="65" r="7" fill="url(#artGlass)" stroke="#7C3AED" stroke-width="1.5"/>
|
||||
<circle cx="-90" cy="-40" r="5" fill="#2563EB"/>
|
||||
<circle cx="90" cy="40" r="5" fill="#2563EB"/>
|
||||
'''),
|
||||
|
||||
# 4. Redis 集群脑裂防御《双子星隔离与法定仲裁》
|
||||
'article_redis_split.svg': ('防', '''
|
||||
<!-- 网络分区虚线隔断 -->
|
||||
<line x1="0" y1="-100" x2="0" y2="100" stroke="#CBD5E1" stroke-width="1.5" stroke-dasharray="6,4"/>
|
||||
<!-- 左侧:健康多数派集群节点 -->
|
||||
<g transform="translate(-75, 0)" filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="45" fill="#EFF6FF" opacity="0.8"/>
|
||||
<circle cx="0" cy="0" r="32" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="14" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#1D4ED8"/>
|
||||
<circle cx="-35" cy="-35" r="5" fill="#06B6D4"/>
|
||||
<circle cx="35" cy="-35" r="5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="45" r="5" fill="#2563EB"/>
|
||||
</g>
|
||||
<!-- 右侧:孤立少数派休眠节点 -->
|
||||
<g transform="translate(75, 0)">
|
||||
<circle cx="0" cy="0" r="38" fill="none" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="24" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#94A3B8"/>
|
||||
</g>
|
||||
'''),
|
||||
|
||||
# 既有文章 8 篇
|
||||
'article_microservice.svg': ('枢', '''
|
||||
<ellipse cx="0" cy="50" rx="190" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<g transform="translate(-70, 0)" filter="url(#artShadow)">
|
||||
@@ -91,7 +170,6 @@ articles = {
|
||||
<path d="M 70 15 Q 0 55 -70 15" fill="none" stroke="url(#artCyan)" stroke-width="1.8" stroke-dasharray="4,3"/>
|
||||
'''),
|
||||
|
||||
# 2. 跨端APP与小程序
|
||||
'article_cross_app.svg': ('端', '''
|
||||
<ellipse cx="0" cy="60" rx="180" ry="65" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<g transform="translate(-65, -10)" filter="url(#artShadow)">
|
||||
@@ -99,128 +177,86 @@ articles = {
|
||||
<rect x="-35" y="-55" width="70" height="95" rx="3" fill="#FFFFFF" stroke="#E2E8F0"/>
|
||||
<circle cx="0" cy="52" r="3" fill="#94A3B8"/>
|
||||
</g>
|
||||
<g transform="translate(65, 10)" filter="url(#artShadow)">
|
||||
<rect x="-32" y="-70" width="64" height="140" rx="10" fill="#FFFFFF" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<rect x="-26" y="-55" width="52" height="110" rx="5" fill="url(#artBgGrad)"/>
|
||||
<circle cx="0" cy="-20" r="14" fill="url(#artPurple)"/>
|
||||
<g transform="translate(60, 10)" filter="url(#artShadow)">
|
||||
<rect x="-38" y="-75" width="76" height="150" rx="10" fill="#FFFFFF" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="-25" r="14" fill="url(#artBlue)"/>
|
||||
</g>
|
||||
<path d="M -20 -15 C 10 -40 30 -30 65 -15" fill="none" stroke="url(#artCyan)" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="20" cy="-25" r="4" fill="#06B6D4" filter="url(#artGlow)"/>
|
||||
<path d="M -20 -30 Q 15 -60 45 -40" fill="none" stroke="url(#artCyan)" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M 45 35 Q 15 65 -20 40" fill="none" stroke="url(#artPurple)" stroke-width="2" stroke-linecap="round" stroke-dasharray="4,3"/>
|
||||
'''),
|
||||
|
||||
# 3. 私域AI智能体落地
|
||||
'article_ai_agent.svg': ('智', '''
|
||||
<circle cx="0" cy="0" r="100" fill="#FAF5FF" opacity="0.7"/>
|
||||
<ellipse cx="0" cy="0" rx="150" ry="60" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4" transform="rotate(-30)"/>
|
||||
<ellipse cx="0" cy="0" rx="150" ry="60" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4" transform="rotate(30)"/>
|
||||
<polygon points="0,-50 45,-20 45,25 0,55 -45,25 -45,-20" fill="none" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="24" fill="url(#artPurple)" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="0" r="15" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#FFFFFF"/>
|
||||
<circle cx="-130" cy="0" r="5" fill="#7C3AED" transform="rotate(-30)"/>
|
||||
<circle cx="130" cy="0" r="5" fill="#06B6D4" transform="rotate(30)"/>
|
||||
<circle cx="0" cy="0" r="100" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<polygon points="0,-65 56,-32 56,32 0,65 -56,32 -56,-32" fill="none" stroke="#C4B5FD" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="28" fill="url(#artPurple)" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="-65" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="56" cy="-32" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="56" cy="32" r="4.5" fill="#7C3AED"/>
|
||||
<circle cx="0" cy="65" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="-56" cy="32" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="-56" cy="-32" r="4.5" fill="#7C3AED"/>
|
||||
'''),
|
||||
|
||||
# 4. 断网离线收银
|
||||
'article_pos_offline.svg': ('笃', '''
|
||||
<circle cx="0" cy="0" r="120" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="90" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<path d="M 0 -70 L 45 -45 V 0 C 45 35 0 70 0 70 C 0 70 -45 35 -45 0 V -45 Z" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1.5" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#artBlue)" filter="url(#artGlow)"/>
|
||||
<circle cx="0" cy="0" r="10" fill="#FFFFFF"/>
|
||||
<line x1="-90" y1="0" x2="-22" y2="0" stroke="url(#artCyan)" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="22" y1="0" x2="90" y2="0" stroke="url(#artBlue)" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="-90" cy="0" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="90" cy="0" r="4.5" fill="#2563EB"/>
|
||||
'article_pos_offline.svg': ('核', '''
|
||||
<circle cx="0" cy="0" r="115" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<ellipse cx="-55" cy="0" rx="55" ry="50" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<ellipse cx="55" cy="0" rx="55" ry="50" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="-55" cy="0" r="26" fill="url(#artBlue)" filter="url(#artShadow)"/>
|
||||
<circle cx="-55" cy="0" r="10" fill="#FFFFFF"/>
|
||||
<circle cx="55" cy="0" r="26" fill="url(#artCyan)" filter="url(#artShadow)"/>
|
||||
<circle cx="55" cy="0" r="10" fill="#FFFFFF"/>
|
||||
<path d="M -30 -10 C -10 -25 10 -25 30 -10" fill="none" stroke="url(#artBlue)" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M 30 10 C 10 25 -10 25 -30 10" fill="none" stroke="url(#artCyan)" stroke-width="2" stroke-linecap="round"/>
|
||||
'''),
|
||||
|
||||
# 5. 进销存BOM物料匹配
|
||||
'article_erp_bom.svg': ('准', '''
|
||||
<ellipse cx="0" cy="55" rx="170" ry="60" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<g transform="translate(-65, 15)" filter="url(#artShadow)">
|
||||
<polygon points="0,-25 30,-8 0,8 -30,-8" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-30,-8 0,8 0,28 -30,12" fill="#E2E8F0"/>
|
||||
<polygon points="0,8 30,-8 30,12 0,28" fill="#F1F5F9"/>
|
||||
</g>
|
||||
<g transform="translate(65, 15)" filter="url(#artShadow)">
|
||||
<polygon points="0,-25 30,-8 0,8 -30,-8" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-30,-8 0,8 0,28 -30,12" fill="#E2E8F0"/>
|
||||
<polygon points="0,8 30,-8 30,12 0,28" fill="#F1F5F9"/>
|
||||
</g>
|
||||
<g transform="translate(0, -30)" filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="32" fill="none" stroke="#2563EB" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#FFFFFF"/>
|
||||
</g>
|
||||
<path d="M -65 5 Q 0 -15 65 5" fill="none" stroke="url(#artCyan)" stroke-width="2" stroke-linecap="round"/>
|
||||
'''),
|
||||
|
||||
# 6. 安全合规白皮书
|
||||
'article_security_whitepaper.svg': ('安', '''
|
||||
<polygon points="0,-95 82,-47 82,47 0,95 -82,47 -82,-47" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<polygon points="0,-75 65,-37 65,37 0,75 -65,37 -65,-37" fill="url(#artGlass)" stroke="#CBD5E1" stroke-width="1.5" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="0" r="26" fill="url(#artPurple)"/>
|
||||
<circle cx="0" cy="0" r="14" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="-75" r="4" fill="#2563EB"/>
|
||||
<circle cx="65" cy="-37" r="4" fill="#7C3AED"/>
|
||||
<circle cx="65" cy="37" r="4" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="75" r="4" fill="#2563EB"/>
|
||||
<circle cx="-65" cy="37" r="4" fill="#7C3AED"/>
|
||||
<circle cx="-65" cy="-37" r="4" fill="#06B6D4"/>
|
||||
'''),
|
||||
|
||||
# 7. 数字化转型路径
|
||||
'article_southwest_digital.svg': ('融', '''
|
||||
<ellipse cx="0" cy="20" rx="180" ry="80" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
'article_erp_bom.svg': ('构', '''
|
||||
<circle cx="0" cy="0" r="110" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<line x1="-90" y1="0" x2="90" y2="0" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<line x1="0" y1="-90" x2="0" y2="90" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<g filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="28" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="12" fill="#FFFFFF"/>
|
||||
</g>
|
||||
<g transform="translate(-110, -25)">
|
||||
<circle cx="0" cy="0" r="16" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#2563EB"/>
|
||||
<line x1="0" y1="0" x2="85" y2="20" stroke="#93C5FD" stroke-width="1.5" stroke-dasharray="3,3"/>
|
||||
</g>
|
||||
<g transform="translate(110, -25)">
|
||||
<circle cx="0" cy="0" r="16" fill="url(#artGlass)" stroke="#06B6D4" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#06B6D4"/>
|
||||
<line x1="0" y1="0" x2="-85" y2="20" stroke="#93C5FD" stroke-width="1.5" stroke-dasharray="3,3"/>
|
||||
</g>
|
||||
<g transform="translate(0, 70)">
|
||||
<circle cx="0" cy="0" r="14" fill="url(#artGlass)" stroke="#7C3AED" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="4.5" fill="#7C3AED"/>
|
||||
<line x1="0" y1="0" x2="0" y2="-42" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="0,-35 32,-12 32,22 0,42 -32,22 -32,-12" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="5" r="16" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="5" r="7" fill="#FFFFFF"/>
|
||||
</g>
|
||||
<circle cx="0" cy="-80" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="80" cy="0" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="80" r="4.5" fill="#7C3AED"/>
|
||||
<circle cx="-80" cy="0" r="4.5" fill="#2563EB"/>
|
||||
'''),
|
||||
|
||||
# 8. TDD 工程规范
|
||||
'article_tdd_standards.svg': ('律', '''
|
||||
<circle cx="0" cy="0" r="110" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="5,5"/>
|
||||
<g transform="translate(-60, 0)" filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="30" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="12" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#1D4ED8"/>
|
||||
</g>
|
||||
<g transform="translate(60, 0)" filter="url(#artShadow)">
|
||||
<circle cx="0" cy="0" r="30" fill="url(#artCyan)"/>
|
||||
<circle cx="0" cy="0" r="12" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#0891B2"/>
|
||||
</g>
|
||||
<path d="M -30 -15 C 0 -35 0 -35 30 -15" fill="none" stroke="url(#artBlue)" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<path d="M 30 15 C 0 35 0 35 -30 15" fill="none" stroke="url(#artCyan)" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<circle cx="0" cy="-26" r="4" fill="#2563EB" filter="url(#artGlow)"/>
|
||||
<circle cx="0" cy="26" r="4" fill="#06B6D4" filter="url(#artGlow)"/>
|
||||
''')
|
||||
'article_security_whitepaper.svg': ('固', '''
|
||||
<path d="M 0 -85 L 60 -50 V 0 C 60 50 0 85 0 85 C 0 85 -60 50 -60 0 V -50 Z" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.5" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="0" r="26" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="0" r="12" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#1D4ED8"/>
|
||||
'''),
|
||||
|
||||
'article_southwest_digital.svg': ('融', '''
|
||||
<ellipse cx="0" cy="40" rx="180" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<path d="M -120 40 Q -60 -40 0 20 T 120 10" fill="none" stroke="url(#artBlue)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<circle cx="-60" cy="-10" r="6" fill="#2563EB" filter="url(#artGlow)"/>
|
||||
<circle cx="0" cy="20" r="7" fill="#06B6D4" filter="url(#artGlow)"/>
|
||||
<circle cx="60" cy="-15" r="6" fill="#7C3AED" filter="url(#artGlow)"/>
|
||||
'''),
|
||||
|
||||
'article_tdd_standards.svg': ('规', '''
|
||||
<rect x="-85" y="-85" width="170" height="170" rx="6" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="65" fill="none" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<polygon points="0,-40 38,25 -38,25" fill="url(#artGlass)" stroke="#2563EB" stroke-width="1.5" filter="url(#artShadow)"/>
|
||||
<circle cx="0" cy="5" r="14" fill="url(#artBlue)"/>
|
||||
<circle cx="0" cy="5" r="6" fill="#FFFFFF"/>
|
||||
'''),
|
||||
}
|
||||
|
||||
def generate_all_articles():
|
||||
for fname, (seal, vis) in articles.items():
|
||||
content = create_base_svg(seal, vis)
|
||||
path = os.path.join(TARGET_DIR, fname)
|
||||
with open(path, 'w', encoding='utf-8') as f:
|
||||
f.write(content.strip())
|
||||
print(f"Generated concise article cover: {fname} ({len(content)} bytes)")
|
||||
def generate_all():
|
||||
for filename, (seal_char, elements) in articles.items():
|
||||
svg_content = create_base_svg(seal_char, elements)
|
||||
filepath = os.path.join(TARGET_DIR, filename)
|
||||
with open(filepath, 'w', encoding='utf-8') as f:
|
||||
f.write(svg_content.strip())
|
||||
print(f"Generated concise article cover: {filename} ({len(svg_content)} bytes)")
|
||||
|
||||
if __name__ == '__main__':
|
||||
generate_all_articles()
|
||||
generate_all()
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
企业级现代中式浅色专业风矢量配图生成引擎 (Concise Visual Showcases Generator)
|
||||
企业级现代中式浅色专业风矢量配图生成引擎 (Advanced Modern Sino-Tech Abstract Visuals Generator)
|
||||
设计准则:
|
||||
1. 视觉简洁纯粹:彻底摒弃“文字介绍类图片”模式,不包含任何长篇功能描述、业务参数、假数据表格或架构长文。
|
||||
1. 纯粹高级抽象设计:彻底摒弃生成的虚假后台/假大屏界面,杜绝纯文字介绍类图片,纯粹以现代中式工程美学几何、拓扑、流光与留白呈现。
|
||||
2. 现代中式浅色专业风:
|
||||
- 背景:#FFFFFF 至 #F8FAFC 极净浅色底,点缀 0.75px 雅致东方窗棂微网格
|
||||
- 主色:#2563EB 科技蓝
|
||||
- 背景:#FFFFFF 至 #F8FAFC 浅色专业底基,融入 0.75px 雅致东方窗棂微网格
|
||||
- 主色:#2563EB 科技蓝(含 #1D4ED8, #3B82F6 渐变)
|
||||
- 辅色:#06B6D4 沉静青、#7C3AED 优雅紫
|
||||
- 东方意境:大留白、细线构图、多维空间微几何体、纯粹光影层次
|
||||
- 印章点缀:仅在右上角保留一枚精致小巧的朱砂印章微标(仅 1 个单字),作为东方文化印记,无任何冗余文字。
|
||||
- 材质与光影:半透明磨砂亚克力几何切片、微透视等轴测空间(Isometric)、柔和阴影与高亮流光节点
|
||||
- 东方印记:右上角保留一枚极简精致小巧的朱砂印章微标(仅 1 个单字),作为东方文化印记,无任何冗余文字。
|
||||
"""
|
||||
import os
|
||||
|
||||
@@ -34,18 +34,23 @@ COMMON_DEFS = '''
|
||||
<stop offset="100%" stop-color="#6366F1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glassGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.6"/>
|
||||
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#F1F5F9" stop-opacity="0.65"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="glowGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#2563EB" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#06B6D4" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
<pattern id="lattice" width="28" height="28" patternUnits="userSpaceOnUse">
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.7" stroke-dasharray="3,3"/>
|
||||
<path d="M 28 0 L 0 0 0 28" fill="none" stroke="#E2E8F0" stroke-width="0.75" stroke-dasharray="3,3"/>
|
||||
</pattern>
|
||||
<filter id="softGlow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur stdDeviation="12" result="blur"/>
|
||||
<filter id="softGlow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over"/>
|
||||
</filter>
|
||||
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
|
||||
<feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#0F172A" flood-opacity="0.06"/>
|
||||
<filter id="cardShadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0F172A" flood-opacity="0.08"/>
|
||||
</filter>
|
||||
'''
|
||||
|
||||
@@ -58,7 +63,7 @@ def make_seal(x, y, char):
|
||||
</g>
|
||||
'''
|
||||
|
||||
# 1. 软件开发
|
||||
# 1. 服务:软件开发《榫卯解耦 · 微服务立方拓扑》
|
||||
def build_service_middle():
|
||||
return f'''<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
@@ -72,54 +77,65 @@ def build_service_middle():
|
||||
{make_seal(554, 20, "研")}
|
||||
|
||||
<g transform="translate(300, 195)">
|
||||
<ellipse cx="0" cy="50" rx="210" ry="85" fill="none" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="6,6"/>
|
||||
<ellipse cx="0" cy="50" rx="150" ry="60" fill="none" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<!-- 东方天圆地方经纬轨道 -->
|
||||
<ellipse cx="0" cy="55" rx="220" ry="85" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,6"/>
|
||||
<ellipse cx="0" cy="55" rx="160" ry="60" fill="none" stroke="#CBD5E1" stroke-width="1"/>
|
||||
|
||||
<g transform="translate(-140, 45)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-16 28,-2 0,12 -28,-2" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<polygon points="-28,-2 0,12 0,26 -28,12" fill="#E2E8F0"/>
|
||||
<polygon points="0,12 28,-2 28,12 0,26" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-2" r="3" fill="#2563EB"/>
|
||||
</g>
|
||||
<g transform="translate(140, 45)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-16 28,-2 0,12 -28,-2" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<polygon points="-28,-2 0,12 0,26 -28,12" fill="#E2E8F0"/>
|
||||
<polygon points="0,12 28,-2 28,12 0,26" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-2" r="3" fill="#06B6D4"/>
|
||||
<!-- 标尺刻度线与流向标 -->
|
||||
<path d="M -160 55 L -140 45 M 160 55 L 140 45" stroke="#94A3B8" stroke-width="1"/>
|
||||
|
||||
<!-- 左翼解耦子节点:网关与调度中枢 -->
|
||||
<g transform="translate(-145, 45)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-18 32,-3 0,14 -32,-3" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-32,-3 0,14 0,30 -32,13" fill="#E2E8F0"/>
|
||||
<polygon points="0,14 32,-3 32,13 0,30" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-3" r="3.5" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<path d="M -140 45 L 0 -10 M 140 45 L 0 -10 M 0 -10 L 0 -75" stroke="#94A3B8" stroke-width="1.5" stroke-dasharray="4,4"/>
|
||||
<path d="M -80 75 Q 0 40 80 75" fill="none" stroke="#2563EB" stroke-width="1.5" opacity="0.6"/>
|
||||
|
||||
<g transform="translate(-60, 10)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-22 36,-4 0,14 -36,-4" fill="url(#blueGrad)"/>
|
||||
<polygon points="-36,-4 0,14 0,36 -36,18" fill="#1D4ED8"/>
|
||||
<polygon points="0,14 36,-4 36,18 0,36" fill="#1E40AF"/>
|
||||
</g>
|
||||
<g transform="translate(60, 10)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-22 36,-4 0,14 -36,-4" fill="url(#cyanGrad)"/>
|
||||
<polygon points="-36,-4 0,14 0,36 -36,18" fill="#0891B2"/>
|
||||
<polygon points="0,14 36,-4 36,18 0,36" fill="#0E7490"/>
|
||||
<!-- 右翼解耦子节点:持久化集群与数据资产 -->
|
||||
<g transform="translate(145, 45)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-18 32,-3 0,14 -32,-3" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-32,-3 0,14 0,30 -32,13" fill="#E2E8F0"/>
|
||||
<polygon points="0,14 32,-3 32,13 0,30" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-3" r="3.5" fill="#06B6D4"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, -60)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="48" fill="#EFF6FF" opacity="0.8"/>
|
||||
<circle cx="0" cy="0" r="38" fill="none" stroke="#2563EB" stroke-width="1.2" stroke-dasharray="5,3"/>
|
||||
<polygon points="0,-32 30,-12 0,8 -30,-12" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<polygon points="-30,-12 0,8 0,32 -30,12" fill="#DBEAFE"/>
|
||||
<polygon points="0,8 30,-12 30,12 0,32" fill="#BFDBFE"/>
|
||||
<circle cx="0" cy="8" r="5" fill="#2563EB"/>
|
||||
<circle cx="0" cy="8" r="8" fill="none" stroke="#2563EB" stroke-width="1" opacity="0.5"/>
|
||||
<!-- 拓扑神经链路 -->
|
||||
<path d="M -145 45 L 0 -15 M 145 45 L 0 -15 M 0 -15 L 0 -80" stroke="#94A3B8" stroke-width="1.5" stroke-dasharray="4,4"/>
|
||||
<path d="M -90 75 Q 0 35 90 75" fill="none" stroke="url(#blueGrad)" stroke-width="1.8" opacity="0.7"/>
|
||||
|
||||
<!-- 中层微服务立方咬合阵列 -->
|
||||
<g transform="translate(-65, 12)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-24 38,-4 0,16 -38,-4" fill="url(#blueGrad)"/>
|
||||
<polygon points="-38,-4 0,16 0,40 -38,20" fill="#1D4ED8"/>
|
||||
<polygon points="0,16 38,-4 38,20 0,40" fill="#1E40AF"/>
|
||||
</g>
|
||||
<g transform="translate(65, 12)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-24 38,-4 0,16 -38,-4" fill="url(#cyanGrad)"/>
|
||||
<polygon points="-38,-4 0,16 0,40 -38,20" fill="#0891B2"/>
|
||||
<polygon points="0,16 38,-4 38,20 0,40" fill="#0E7490"/>
|
||||
</g>
|
||||
|
||||
<circle cx="-120" cy="-30" r="3" fill="#2563EB" opacity="0.6"/>
|
||||
<circle cx="110" cy="-40" r="3.5" fill="#06B6D4" opacity="0.6"/>
|
||||
<circle cx="-50" cy="90" r="2.5" fill="#7C3AED" opacity="0.5"/>
|
||||
<circle cx="70" cy="80" r="3" fill="#2563EB" opacity="0.5"/>
|
||||
<!-- 顶层核心枢纽:高可用微服务中台大盘 -->
|
||||
<g transform="translate(0, -65)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="52" fill="#EFF6FF" opacity="0.85"/>
|
||||
<circle cx="0" cy="0" r="42" fill="none" stroke="#2563EB" stroke-width="1.2" stroke-dasharray="6,3"/>
|
||||
<polygon points="0,-36 34,-14 0,10 -34,-14" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<polygon points="-34,-14 0,10 0,36 -34,14" fill="#DBEAFE"/>
|
||||
<polygon points="0,10 34,-14 34,14 0,36" fill="#BFDBFE"/>
|
||||
<circle cx="0" cy="10" r="6" fill="#2563EB" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="10" r="10" fill="none" stroke="#2563EB" stroke-width="1" opacity="0.6"/>
|
||||
</g>
|
||||
|
||||
<!-- 空间浮动数据微粒 -->
|
||||
<circle cx="-120" cy="-30" r="3.5" fill="#2563EB" opacity="0.6"/>
|
||||
<circle cx="115" cy="-40" r="4" fill="#06B6D4" opacity="0.7"/>
|
||||
<circle cx="-50" cy="95" r="3" fill="#7C3AED" opacity="0.5"/>
|
||||
<circle cx="80" cy="85" r="3.5" fill="#2563EB" opacity="0.6"/>
|
||||
</g>
|
||||
</svg>'''
|
||||
|
||||
# 2. APP与小程序
|
||||
# 2. 服务:APP与小程序定制《多轨天体 · 动量同频》
|
||||
def build_service_app():
|
||||
return f'''<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
@@ -133,40 +149,42 @@ def build_service_app():
|
||||
{make_seal(554, 20, "端")}
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<ellipse cx="0" cy="70" rx="200" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="4,4"/>
|
||||
|
||||
<g transform="translate(-110, -10)" filter="url(#cardShadow)">
|
||||
<rect x="-65" y="-85" width="130" height="170" rx="8" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5"/>
|
||||
<rect x="-55" y="-75" width="110" height="135" rx="4" fill="#FFFFFF" stroke="#E2E8F0"/>
|
||||
<line x1="-45" y1="-60" x2="0" y2="-60" stroke="#CBD5E1" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<rect x="-45" y="-45" width="42" height="36" rx="3" fill="#EFF6FF" stroke="#BFDBFE"/>
|
||||
<rect x="3" y="-45" width="42" height="36" rx="3" fill="#F1F5F9" stroke="#E2E8F0"/>
|
||||
<rect x="-45" y="0" width="90" height="48" rx="3" fill="#F8FAFC" stroke="#E2E8F0"/>
|
||||
<circle cx="0" cy="72" r="4" fill="#94A3B8"/>
|
||||
<!-- 空间同心流动轨道环 (iOS / Android / 微信多端协同) -->
|
||||
<ellipse cx="0" cy="0" rx="210" ry="80" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4" transform="rotate(-15)"/>
|
||||
<ellipse cx="0" cy="0" rx="170" ry="65" fill="none" stroke="#CBD5E1" stroke-width="1.2" transform="rotate(20)"/>
|
||||
<ellipse cx="0" cy="0" rx="120" ry="50" fill="none" stroke="#93C5FD" stroke-width="1" stroke-dasharray="4,4"/>
|
||||
|
||||
<!-- 核心设备与多端界面等轴测悬浮板 -->
|
||||
<g transform="translate(-70, -25)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-45 42,-18 0,10 -42,-18" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-42,-18 0,10 0,65 -42,38" fill="#FFFFFF" stroke="#E2E8F0"/>
|
||||
<polygon points="0,10 42,-18 42,38 0,65" fill="#F8FAFC" stroke="#E2E8F0"/>
|
||||
<!-- 极简微界面线条与卡片 -->
|
||||
<line x1="-28" y1="2" x2="0" y2="12" stroke="#CBD5E1" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="-15" cy="28" r="8" fill="#EFF6FF" stroke="#BFDBFE"/>
|
||||
<rect x="5" y="24" width="22" height="16" rx="2" fill="#F1F5F9" stroke="#E2E8F0"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(75, 10)" filter="url(#cardShadow)">
|
||||
<rect x="-45" y="-95" width="90" height="190" rx="14" fill="#FFFFFF" stroke="#2563EB" stroke-width="1.8"/>
|
||||
<rect x="-14" y="-87" width="28" height="6" rx="3" fill="#E2E8F0"/>
|
||||
<rect x="-37" y="-74" width="74" height="154" rx="8" fill="url(#bgGrad)"/>
|
||||
<circle cx="0" cy="-35" r="18" fill="url(#blueGrad)"/>
|
||||
<rect x="-24" y="-8" width="48" height="6" rx="3" fill="#93C5FD"/>
|
||||
<rect x="-18" y="4" width="36" height="5" rx="2.5" fill="#CBD5E1"/>
|
||||
<rect x="-28" y="20" width="56" height="45" rx="4" fill="#FFFFFF" stroke="#E2E8F0"/>
|
||||
<rect x="-15" y="86" width="30" height="3" rx="1.5" fill="#94A3B8"/>
|
||||
<g transform="translate(65, 20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-50 48,-20 0,12 -48,-20" fill="url(#blueGrad)"/>
|
||||
<polygon points="-48,-20 0,12 0,70 -48,38" fill="#1D4ED8"/>
|
||||
<polygon points="0,12 48,-20 48,38 0,70" fill="#1E40AF"/>
|
||||
<circle cx="0" cy="-20" r="14" fill="#FFFFFF" opacity="0.9"/>
|
||||
<circle cx="0" cy="-20" r="6" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<path d="M -45 -15 C -10 -50 30 -40 75 -25" fill="none" stroke="url(#cyanGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M 75 45 C 30 70 -20 60 -45 35" fill="none" stroke="url(#purpleGrad)" stroke-width="2" stroke-linecap="round" stroke-dasharray="5,3"/>
|
||||
|
||||
<circle cx="15" cy="-35" r="4" fill="#06B6D4" filter="url(#softGlow)"/>
|
||||
<circle cx="12" cy="55" r="3.5" fill="#7C3AED" filter="url(#softGlow)"/>
|
||||
<circle cx="-135" cy="40" r="3" fill="#2563EB"/>
|
||||
<circle cx="145" cy="-20" r="3" fill="#06B6D4"/>
|
||||
<!-- 60fps 动量流光粒子穿梭 -->
|
||||
<path d="M -150 -40 C -80 -90 40 -80 140 -20" fill="none" stroke="url(#cyanGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M 140 30 C 80 80 -40 90 -140 40" fill="none" stroke="url(#purpleGrad)" stroke-width="2" stroke-linecap="round" stroke-dasharray="5,3"/>
|
||||
|
||||
<circle cx="140" cy="-20" r="5" fill="#06B6D4" filter="url(#softGlow)"/>
|
||||
<circle cx="-140" cy="40" r="4.5" fill="#7C3AED" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="-80" r="3.5" fill="#2563EB"/>
|
||||
<circle cx="0" cy="82" r="3" fill="#06B6D4"/>
|
||||
</g>
|
||||
</svg>'''
|
||||
|
||||
# 3. 智能体开发
|
||||
# 3. 服务:智能体开发《方圆之镜 · 多维向量星云》
|
||||
def build_service_agent():
|
||||
return f'''<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
@@ -180,42 +198,41 @@ def build_service_agent():
|
||||
{make_seal(554, 20, "智")}
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<circle cx="0" cy="0" r="110" fill="#FAF5FF" opacity="0.7"/>
|
||||
<circle cx="0" cy="0" r="80" fill="#EFF6FF" opacity="0.9"/>
|
||||
<!-- 外层东方方圆防护边界 (物理隔离与合规) -->
|
||||
<rect x="-115" y="-115" width="230" height="230" rx="8" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4"/>
|
||||
<circle cx="0" cy="0" r="115" fill="none" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="85" fill="#FAF5FF" opacity="0.75"/>
|
||||
|
||||
<ellipse cx="0" cy="0" rx="170" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4" transform="rotate(-25)"/>
|
||||
<ellipse cx="0" cy="0" rx="170" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4" transform="rotate(35)"/>
|
||||
<circle cx="0" cy="0" r="130" fill="none" stroke="#CBD5E1" stroke-width="0.8"/>
|
||||
|
||||
<g transform="rotate(-25)">
|
||||
<circle cx="-150" cy="0" r="6" fill="#7C3AED" filter="url(#softGlow)"/>
|
||||
<circle cx="150" cy="0" r="5" fill="#2563EB"/>
|
||||
</g>
|
||||
<g transform="rotate(35)">
|
||||
<circle cx="0" cy="-65" r="5.5" fill="#06B6D4" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="65" r="4.5" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<polygon points="0,-60 52,-25 52,35 0,68 -52,35 -52,-25" fill="none" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<polygon points="0,-40 35,-15 35,25 0,48 -35,25 -35,-15" fill="none" stroke="#C4B5FD" stroke-width="1"/>
|
||||
<line x1="0" y1="-60" x2="0" y2="68" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
<line x1="-52" y1="-25" x2="52" y2="35" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
<line x1="-52" y1="35" x2="52" y2="-25" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
|
||||
<circle cx="0" cy="0" r="26" fill="url(#purpleGrad)" filter="url(#cardShadow)"/>
|
||||
<circle cx="0" cy="0" r="18" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#FFFFFF"/>
|
||||
<!-- 高维多面体向量结界 -->
|
||||
<polygon points="0,-75 65,-37 65,37 0,75 -65,37 -65,-37" fill="none" stroke="#C4B5FD" stroke-width="1.2"/>
|
||||
<polygon points="0,-55 45,-26 45,26 0,55 -45,26 -45,-26" fill="none" stroke="#93C5FD" stroke-width="1.2" stroke-dasharray="4,3"/>
|
||||
|
||||
<circle cx="0" cy="-60" r="3.5" fill="#2563EB"/>
|
||||
<circle cx="52" cy="-25" r="3.5" fill="#06B6D4"/>
|
||||
<circle cx="52" cy="35" r="3.5" fill="#7C3AED"/>
|
||||
<circle cx="0" cy="68" r="3.5" fill="#2563EB"/>
|
||||
<circle cx="-52" cy="35" r="3.5" fill="#06B6D4"/>
|
||||
<circle cx="-52" cy="-25" r="3.5" fill="#7C3AED"/>
|
||||
<!-- 放射状 RAG 向量探寻光栅 -->
|
||||
<line x1="0" y1="-75" x2="0" y2="75" stroke="#CBD5E1" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
<line x1="-65" y1="-37" x2="65" y2="37" stroke="#CBD5E1" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
<line x1="-65" y1="37" x2="65" y2="-37" stroke="#CBD5E1" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
|
||||
<!-- 知识库星云聚类核心 (Agent Core) -->
|
||||
<circle cx="0" cy="0" r="32" fill="url(#purpleGrad)" filter="url(#cardShadow)"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="10" fill="#FFFFFF" filter="url(#softGlow)"/>
|
||||
|
||||
<!-- 命中特征粒子矩阵 -->
|
||||
<circle cx="0" cy="-75" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="65" cy="-37" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="65" cy="37" r="4.5" fill="#7C3AED"/>
|
||||
<circle cx="0" cy="75" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="-65" cy="37" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="-65" cy="-37" r="4.5" fill="#7C3AED"/>
|
||||
|
||||
<circle cx="-35" cy="-45" r="3" fill="#2563EB" opacity="0.6"/>
|
||||
<circle cx="40" cy="-50" r="3" fill="#7C3AED" opacity="0.6"/>
|
||||
<circle cx="-45" cy="40" r="3" fill="#06B6D4" opacity="0.6"/>
|
||||
<circle cx="48" cy="42" r="3" fill="#2563EB" opacity="0.6"/>
|
||||
</g>
|
||||
</svg>'''
|
||||
|
||||
# 4. 商城系统
|
||||
# 4. 产品:全场景商城《脉络分发 · 裂变星芒》
|
||||
def build_product_mall():
|
||||
return f'''<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
@@ -229,47 +246,54 @@ def build_product_mall():
|
||||
{make_seal(554, 20, "商")}
|
||||
|
||||
<g transform="translate(300, 195)">
|
||||
<ellipse cx="0" cy="60" rx="190" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="4,4"/>
|
||||
<!-- 东方开阔地平基底 -->
|
||||
<ellipse cx="0" cy="65" rx="210" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
|
||||
<polygon points="0,-20 140,40 0,100 -140,40" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5"/>
|
||||
<polygon points="-140,40 0,100 0,116 -140,56" fill="#E2E8F0"/>
|
||||
<polygon points="0,100 140,40 140,56 0,116" fill="#F1F5F9"/>
|
||||
<!-- 底层全渠道汇聚大台 (Omnichannel Hub) -->
|
||||
<polygon points="0,-25 150,42 0,110 -150,42" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-150,42 0,110 0,126 -150,58" fill="#E2E8F0"/>
|
||||
<polygon points="0,110 150,42 150,58 0,126" fill="#F1F5F9"/>
|
||||
|
||||
<g transform="translate(0, 5)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-32 40,-12 0,10 -40,-12" fill="url(#blueGrad)"/>
|
||||
<polygon points="-40,-12 0,10 0,42 -40,20" fill="#1D4ED8"/>
|
||||
<polygon points="0,10 40,-12 40,20 0,42" fill="#1E40AF"/>
|
||||
<!-- 核心交易与分账立方体 -->
|
||||
<g transform="translate(0, 10)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-36 44,-14 0,12 -44,-14" fill="url(#blueGrad)"/>
|
||||
<polygon points="-44,-14 0,12 0,46 -44,22" fill="#1D4ED8"/>
|
||||
<polygon points="0,12 44,-14 44,22 0,46" fill="#1E40AF"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(-75, -20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-24 30,-9 0,8 -30,-9" fill="url(#cyanGrad)"/>
|
||||
<polygon points="-30,-9 0,8 0,30 -30,13" fill="#0891B2"/>
|
||||
<polygon points="0,8 30,-9 30,13 0,30" fill="#0E7490"/>
|
||||
<!-- 分销裂变支流矩阵:多商户入驻与渠道分销 -->
|
||||
<g transform="translate(-85, -20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-26 32,-10 0,8 -32,-10" fill="url(#cyanGrad)"/>
|
||||
<polygon points="-32,-10 0,8 0,32 -32,14" fill="#0891B2"/>
|
||||
<polygon points="0,8 32,-10 32,14 0,32" fill="#0E7490"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(75, -20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-24 30,-9 0,8 -30,-9" fill="url(#purpleGrad)"/>
|
||||
<polygon points="-30,-9 0,8 0,30 -30,13" fill="#6D28D9"/>
|
||||
<polygon points="0,8 30,-9 30,13 0,30" fill="#5B21B6"/>
|
||||
<g transform="translate(85, -20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-26 32,-10 0,8 -32,-10" fill="url(#purpleGrad)"/>
|
||||
<polygon points="-32,-10 0,8 0,32 -32,14" fill="#6D28D9"/>
|
||||
<polygon points="0,8 32,-10 32,14 0,32" fill="#5B21B6"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, -75)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-18 22,-6 0,6 -22,-6" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<polygon points="-22,-6 0,6 0,20 -22,8" fill="#DBEAFE"/>
|
||||
<polygon points="0,6 22,-6 22,8 0,20" fill="#BFDBFE"/>
|
||||
<circle cx="0" cy="0" r="3" fill="#2563EB"/>
|
||||
<!-- 顶端私域流量聚合枢纽 -->
|
||||
<g transform="translate(0, -78)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-20 25,-7 0,7 -25,-7" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<polygon points="-25,-7 0,7 0,22 -25,9" fill="#DBEAFE"/>
|
||||
<polygon points="0,7 25,-7 25,9 0,22" fill="#BFDBFE"/>
|
||||
<circle cx="0" cy="0" r="3.5" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<path d="M -75 -10 Q 0 -50 75 -10" fill="none" stroke="url(#blueGrad)" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M 75 10 Q 0 50 -75 10" fill="none" stroke="url(#cyanGrad)" stroke-width="1.8" stroke-linecap="round" stroke-dasharray="4,3"/>
|
||||
<line x1="0" y1="-50" x2="0" y2="-25" stroke="#2563EB" stroke-width="1.5" stroke-dasharray="2,2"/>
|
||||
<!-- 斐波那契能量流线互锁 -->
|
||||
<path d="M -85 -10 Q 0 -55 85 -10" fill="none" stroke="url(#blueGrad)" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<path d="M 85 10 Q 0 55 -85 10" fill="none" stroke="url(#cyanGrad)" stroke-width="2" stroke-linecap="round" stroke-dasharray="4,3"/>
|
||||
<line x1="0" y1="-55" x2="0" y2="-26" stroke="#2563EB" stroke-width="1.5" stroke-dasharray="2,2"/>
|
||||
|
||||
<circle cx="-35" cy="-35" r="3.5" fill="#2563EB" opacity="0.6"/>
|
||||
<circle cx="45" cy="-35" r="3" fill="#7C3AED" opacity="0.6"/>
|
||||
<circle cx="-40" cy="-35" r="4" fill="#2563EB" opacity="0.7"/>
|
||||
<circle cx="50" cy="-35" r="3.5" fill="#7C3AED" opacity="0.7"/>
|
||||
<circle cx="0" cy="65" r="4" fill="#06B6D4" opacity="0.7"/>
|
||||
</g>
|
||||
</svg>'''
|
||||
|
||||
# 5. 收银系统
|
||||
# 5. 产品:智能商业收银《双核咬合 · 确定性时钟》
|
||||
def build_product_pos():
|
||||
return f'''<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
@@ -283,31 +307,35 @@ def build_product_pos():
|
||||
{make_seal(554, 20, "笃")}
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<circle cx="0" cy="0" r="140" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="110" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="80" fill="#EFF6FF" opacity="0.7"/>
|
||||
<!-- 极精确的外围时钟刻度脉冲 -->
|
||||
<circle cx="0" cy="0" r="145" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="120" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="85" fill="#EFF6FF" opacity="0.75"/>
|
||||
|
||||
<path d="M 0 -85 L 55 -55 V 0 C 55 45 0 85 0 85 C 0 85 -55 45 -55 0 V -55 Z" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5" filter="url(#cardShadow)"/>
|
||||
<path d="M 0 -70 L 42 -45 V 0 C 42 35 0 68 0 68 C 0 68 -42 35 -42 0 V -45 Z" fill="none" stroke="#93C5FD" stroke-width="1"/>
|
||||
<!-- 软硬件一体双向坚固护盾结构 (离线记账与在线秒级核销) -->
|
||||
<path d="M 0 -95 L 60 -60 V 0 C 60 50 0 95 0 95 C 0 95 -60 50 -60 0 V -60 Z" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5" filter="url(#cardShadow)"/>
|
||||
<path d="M 0 -80 L 46 -50 V 0 C 46 38 0 76 0 76 C 0 76 -46 38 -46 0 V -50 Z" fill="none" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
|
||||
<circle cx="0" cy="0" r="28" fill="url(#blueGrad)" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="0" r="14" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#2563EB"/>
|
||||
<!-- 核心确定性原子事务锁 -->
|
||||
<circle cx="0" cy="0" r="32" fill="url(#blueGrad)" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#1D4ED8"/>
|
||||
|
||||
<line x1="-120" y1="0" x2="-28" y2="0" stroke="url(#cyanGrad)" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="-120" cy="0" r="5" fill="#06B6D4"/>
|
||||
<circle cx="-120" cy="0" r="9" fill="none" stroke="#06B6D4" stroke-width="1" opacity="0.5"/>
|
||||
<!-- 左右双向对称通信信道 (左:外设硬件驱动 / 右:云端资金清算) -->
|
||||
<line x1="-135" y1="0" x2="-32" y2="0" stroke="url(#cyanGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<circle cx="-135" cy="0" r="6" fill="#06B6D4"/>
|
||||
<circle cx="-135" cy="0" r="10" fill="none" stroke="#06B6D4" stroke-width="1" opacity="0.5"/>
|
||||
|
||||
<line x1="28" y1="0" x2="120" y2="0" stroke="url(#blueGrad)" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="120" cy="0" r="5" fill="#2563EB"/>
|
||||
<circle cx="120" cy="0" r="9" fill="none" stroke="#2563EB" stroke-width="1" opacity="0.5"/>
|
||||
<line x1="32" y1="0" x2="135" y2="0" stroke="url(#blueGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<circle cx="135" cy="0" r="6" fill="#2563EB"/>
|
||||
<circle cx="135" cy="0" r="10" fill="none" stroke="#2563EB" stroke-width="1" opacity="0.5"/>
|
||||
|
||||
<line x1="0" y1="-85" x2="0" y2="-120" stroke="#7C3AED" stroke-width="1.8" stroke-dasharray="3,3"/>
|
||||
<circle cx="0" cy="-120" r="4.5" fill="#7C3AED"/>
|
||||
<line x1="0" y1="-95" x2="0" y2="-130" stroke="#7C3AED" stroke-width="2" stroke-dasharray="3,3"/>
|
||||
<circle cx="0" cy="-130" r="5" fill="#7C3AED"/>
|
||||
</g>
|
||||
</svg>'''
|
||||
|
||||
# 6. 进销存系统
|
||||
# 6. 产品:全链路进销存《晶格仓位 · 动态流向轴》
|
||||
def build_product_erp():
|
||||
return f'''<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
@@ -321,39 +349,43 @@ def build_product_erp():
|
||||
{make_seal(554, 20, "准")}
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<ellipse cx="0" cy="65" rx="190" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,5"/>
|
||||
<!-- 空间底座仓储经纬线 -->
|
||||
<ellipse cx="0" cy="70" rx="210" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,5"/>
|
||||
|
||||
<g transform="translate(-80, 20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-30 38,-10 0,10 -38,-10" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-38,-10 0,10 0,40 -38,20" fill="#E2E8F0"/>
|
||||
<polygon points="0,10 38,-10 38,20 0,40" fill="#F1F5F9"/>
|
||||
<line x1="-19" y1="0" x2="19" y2="-20" stroke="#94A3B8" stroke-width="0.8"/>
|
||||
<circle cx="0" cy="-10" r="3.5" fill="#2563EB"/>
|
||||
<!-- 仓储库位等轴测透明格栅 (采购/入库/盘点/调拨) -->
|
||||
<g transform="translate(-90, 20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-34 42,-12 0,10 -42,-12" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-42,-12 0,10 0,44 -42,22" fill="#E2E8F0"/>
|
||||
<polygon points="0,10 42,-12 42,22 0,44" fill="#F1F5F9"/>
|
||||
<line x1="-21" y1="-1" x2="21" y2="-23" stroke="#94A3B8" stroke-width="1"/>
|
||||
<circle cx="0" cy="-12" r="4" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(80, 20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-30 38,-10 0,10 -38,-10" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-38,-10 0,10 0,40 -38,20" fill="#E2E8F0"/>
|
||||
<polygon points="0,10 38,-10 38,20 0,40" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-10" r="3.5" fill="#06B6D4"/>
|
||||
<g transform="translate(90, 20)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-34 42,-12 0,10 -42,-12" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-42,-12 0,10 0,44 -42,22" fill="#E2E8F0"/>
|
||||
<polygon points="0,10 42,-12 42,22 0,44" fill="#F1F5F9"/>
|
||||
<circle cx="0" cy="-12" r="4" fill="#06B6D4"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, -35)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="42" fill="none" stroke="#2563EB" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<circle cx="0" cy="0" r="32" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="14" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#1D4ED8"/>
|
||||
<!-- 核心业财一体化平衡中枢 -->
|
||||
<g transform="translate(0, -40)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="46" fill="none" stroke="#2563EB" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<circle cx="0" cy="0" r="35" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#1D4ED8"/>
|
||||
</g>
|
||||
|
||||
<path d="M -80 10 Q 0 -15 80 10" fill="none" stroke="url(#cyanGrad)" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M 80 30 Q 0 60 -80 30" fill="none" stroke="#2563EB" stroke-width="1.8" stroke-linecap="round" stroke-dasharray="5,3"/>
|
||||
<!-- 批次溯源与流转能量曲线 -->
|
||||
<path d="M -90 10 Q 0 -20 90 10" fill="none" stroke="url(#cyanGrad)" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<path d="M 90 32 Q 0 65 -90 32" fill="none" stroke="#2563EB" stroke-width="2" stroke-linecap="round" stroke-dasharray="5,3"/>
|
||||
|
||||
<line x1="0" y1="5" x2="0" y2="40" stroke="#CBD5E1" stroke-width="1.5" stroke-dasharray="3,3"/>
|
||||
<circle cx="0" cy="40" r="3.5" fill="#7C3AED"/>
|
||||
<line x1="0" y1="5" x2="0" y2="45" stroke="#CBD5E1" stroke-width="1.5" stroke-dasharray="3,3"/>
|
||||
<circle cx="0" cy="45" r="4" fill="#7C3AED"/>
|
||||
</g>
|
||||
</svg>'''
|
||||
|
||||
# 7. SaaS版本
|
||||
# 7. 产品:云原生 SaaS《多层平行切片 · 悬浮架构》
|
||||
def build_product_saas():
|
||||
return f'''<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
@@ -367,40 +399,45 @@ def build_product_saas():
|
||||
{make_seal(554, 20, "云")}
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<ellipse cx="0" cy="65" rx="195" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4"/>
|
||||
<!-- 空间基底椭圆 -->
|
||||
<ellipse cx="0" cy="70" rx="210" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="6,4"/>
|
||||
|
||||
<g transform="translate(0, 55)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-25 110,12 0,48 -110,12" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-110,12 0,48 0,58 -110,22" fill="#E2E8F0"/>
|
||||
<polygon points="0,48 110,12 110,22 0,58" fill="#F1F5F9"/>
|
||||
<circle cx="-50" cy="12" r="3" fill="#2563EB"/>
|
||||
<circle cx="50" cy="12" r="3" fill="#06B6D4"/>
|
||||
<!-- 第 1 层切片:数据存储与物理隔离底座 -->
|
||||
<g transform="translate(0, 60)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-28 125,14 0,55 -125,14" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<polygon points="-125,14 0,55 0,66 -125,25" fill="#E2E8F0"/>
|
||||
<polygon points="0,55 125,14 125,25 0,66" fill="#F1F5F9"/>
|
||||
<circle cx="-60" cy="14" r="3.5" fill="#2563EB"/>
|
||||
<circle cx="60" cy="14" r="3.5" fill="#06B6D4"/>
|
||||
</g>
|
||||
|
||||
<!-- 第 2 层切片:微服务与多租户逻辑强隔离中枢 -->
|
||||
<g transform="translate(0, 5)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-25 110,12 0,48 -110,12" fill="url(#glassGrad)" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<polygon points="-110,12 0,48 0,58 -110,22" fill="#BFDBFE"/>
|
||||
<polygon points="0,48 110,12 110,22 0,58" fill="#DBEAFE"/>
|
||||
<circle cx="0" cy="12" r="5" fill="#2563EB" filter="url(#softGlow)"/>
|
||||
<polygon points="0,-28 125,14 0,55 -125,14" fill="url(#glassGrad)" stroke="#93C5FD" stroke-width="1.2"/>
|
||||
<polygon points="-125,14 0,55 0,66 -125,25" fill="#BFDBFE"/>
|
||||
<polygon points="0,55 125,14 125,25 0,66" fill="#DBEAFE"/>
|
||||
<circle cx="0" cy="14" r="6" fill="#2563EB" filter="url(#softGlow)"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, -45)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-25 110,12 0,48 -110,12" fill="url(#glassGrad)" stroke="#C4B5FD" stroke-width="1.2"/>
|
||||
<polygon points="-110,12 0,48 0,58 -110,22" fill="#DDD6FE"/>
|
||||
<polygon points="0,48 110,12 110,22 0,58" fill="#EDE9FE"/>
|
||||
<circle cx="0" cy="12" r="6" fill="#7C3AED" filter="url(#softGlow)"/>
|
||||
<!-- 第 3 层切片:云原生网关与应用多维接入层 -->
|
||||
<g transform="translate(0, -50)" filter="url(#cardShadow)">
|
||||
<polygon points="0,-28 125,14 0,55 -125,14" fill="url(#glassGrad)" stroke="#C4B5FD" stroke-width="1.2"/>
|
||||
<polygon points="-125,14 0,55 0,66 -125,25" fill="#DDD6FE"/>
|
||||
<polygon points="0,55 125,14 125,25 0,66" fill="#EDE9FE"/>
|
||||
<circle cx="0" cy="14" r="7" fill="#7C3AED" filter="url(#softGlow)"/>
|
||||
</g>
|
||||
|
||||
<line x1="0" y1="-75" x2="0" y2="70" stroke="url(#blueGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<line x1="-60" y1="-30" x2="-60" y2="60" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
<line x1="60" y1="-30" x2="60" y2="60" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
<!-- 垂直穿透的弹性集群伸缩中轴 (Elastic Spinal Column) -->
|
||||
<line x1="0" y1="-85" x2="0" y2="80" stroke="url(#blueGrad)" stroke-width="3" stroke-linecap="round"/>
|
||||
<line x1="-70" y1="-35" x2="-70" y2="68" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
<line x1="70" y1="-35" x2="70" y2="68" stroke="#CBD5E1" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
|
||||
<circle cx="-130" cy="-20" r="4" fill="#06B6D4"/>
|
||||
<circle cx="130" cy="-20" r="4" fill="#2563EB"/>
|
||||
<circle cx="-140" cy="-25" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="140" cy="-25" r="4.5" fill="#2563EB"/>
|
||||
</g>
|
||||
</svg>'''
|
||||
|
||||
# 8. 案例 1
|
||||
# 8. 案例:大型快消供应链《经纬枢纽 · 吞吐波峰》
|
||||
def build_case_distrib():
|
||||
return f'''<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
@@ -414,42 +451,48 @@ def build_case_distrib():
|
||||
{make_seal(554, 20, "通")}
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<ellipse cx="0" cy="20" rx="200" ry="90" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<!-- 经纬拓扑网格底台 -->
|
||||
<ellipse cx="0" cy="20" rx="215" ry="95" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
|
||||
<circle cx="0" cy="0" r="45" fill="#EFF6FF" opacity="0.8"/>
|
||||
<circle cx="0" cy="0" r="32" fill="url(#blueGrad)" filter="url(#cardShadow)"/>
|
||||
<circle cx="0" cy="0" r="14" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#1D4ED8"/>
|
||||
<!-- 核心调度枢纽 (全国订货大中台) -->
|
||||
<circle cx="0" cy="0" r="50" fill="#EFF6FF" opacity="0.85"/>
|
||||
<circle cx="0" cy="0" r="36" fill="url(#blueGrad)" filter="url(#cardShadow)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#1D4ED8"/>
|
||||
|
||||
<g transform="translate(-130, -35)">
|
||||
<line x1="0" y1="0" x2="105" y2="28" stroke="#93C5FD" stroke-width="1.5" stroke-dasharray="4,3"/>
|
||||
<circle cx="0" cy="0" r="20" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#2563EB"/>
|
||||
<!-- 分支节点 A:区域分销网络 -->
|
||||
<g transform="translate(-140, -40)">
|
||||
<line x1="0" y1="0" x2="115" y2="32" stroke="#93C5FD" stroke-width="1.8" stroke-dasharray="4,3"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(130, -35)">
|
||||
<line x1="0" y1="0" x2="-105" y2="28" stroke="#93C5FD" stroke-width="1.5" stroke-dasharray="4,3"/>
|
||||
<circle cx="0" cy="0" r="20" fill="url(#glassGrad)" stroke="#06B6D4" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#06B6D4"/>
|
||||
<!-- 分支节点 B:全渠道订单汇聚 -->
|
||||
<g transform="translate(140, -40)">
|
||||
<line x1="0" y1="0" x2="-115" y2="32" stroke="#93C5FD" stroke-width="1.8" stroke-dasharray="4,3"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#glassGrad)" stroke="#06B6D4" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#06B6D4"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(-85, 65)">
|
||||
<line x1="0" y1="0" x2="68" y2="-52" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="15" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#7C3AED"/>
|
||||
<!-- 底部仓储与履约节点 -->
|
||||
<g transform="translate(-95, 70)">
|
||||
<line x1="0" y1="0" x2="75" y2="-56" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="16" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#7C3AED"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(85, 65)">
|
||||
<line x1="0" y1="0" x2="-68" y2="-52" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="15" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="5" fill="#2563EB"/>
|
||||
<g transform="translate(95, 70)">
|
||||
<line x1="0" y1="0" x2="-75" y2="-56" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="16" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1"/>
|
||||
<circle cx="0" cy="0" r="6" fill="#2563EB"/>
|
||||
</g>
|
||||
|
||||
<path d="M -130 -35 Q 0 -80 130 -35" fill="none" stroke="url(#cyanGrad)" stroke-width="2" stroke-linecap="round"/>
|
||||
<!-- 高并发吞吐流动波峰曲线 (海纳百川江海意象) -->
|
||||
<path d="M -140 -40 Q 0 -90 140 -40" fill="none" stroke="url(#cyanGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
</g>
|
||||
</svg>'''
|
||||
|
||||
# 9. 案例 2
|
||||
# 9. 案例:知名连锁餐饮《双态对称 · 永续无阻》
|
||||
def build_case_catering():
|
||||
return f'''<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
@@ -463,35 +506,39 @@ def build_case_catering():
|
||||
{make_seal(554, 20, "敏")}
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<ellipse cx="-80" cy="0" rx="80" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
<ellipse cx="80" cy="0" rx="80" ry="70" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
<!-- 双环共振轨道 (门店前台与后厨 KDS 联动) -->
|
||||
<ellipse cx="-85" cy="0" rx="85" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
<ellipse cx="85" cy="0" rx="85" ry="75" fill="none" stroke="#E2E8F0" stroke-width="1.5"/>
|
||||
|
||||
<g transform="translate(-80, 0)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="36" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#1D4ED8"/>
|
||||
<!-- 左核:本地离线持久化节点 -->
|
||||
<g transform="translate(-85, 0)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="40" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="18" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#1D4ED8"/>
|
||||
</g>
|
||||
|
||||
<g transform="translate(80, 0)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="36" fill="url(#cyanGrad)"/>
|
||||
<circle cx="0" cy="0" r="16" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="7" fill="#0891B2"/>
|
||||
<!-- 右核:云端实时同步与对账中枢 -->
|
||||
<g transform="translate(85, 0)" filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="40" fill="url(#cyanGrad)"/>
|
||||
<circle cx="0" cy="0" r="18" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="8" fill="#0891B2"/>
|
||||
</g>
|
||||
|
||||
<path d="M -44 -14 C -15 -35 15 -35 44 -14" fill="none" stroke="url(#blueGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M 44 14 C 15 35 -15 35 -44 14" fill="none" stroke="url(#cyanGrad)" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<!-- 双向莫比乌斯回环流动 (网络中断无缝记账,恢复自动双向对齐) -->
|
||||
<path d="M -48 -16 C -18 -40 18 -40 48 -16" fill="none" stroke="url(#blueGrad)" stroke-width="2.8" stroke-linecap="round"/>
|
||||
<path d="M 48 16 C 18 40 -18 40 -48 16" fill="none" stroke="url(#cyanGrad)" stroke-width="2.8" stroke-linecap="round"/>
|
||||
|
||||
<circle cx="0" cy="-28" r="4.5" fill="#2563EB" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="28" r="4.5" fill="#06B6D4" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="-32" r="5" fill="#2563EB" filter="url(#softGlow)"/>
|
||||
<circle cx="0" cy="32" r="5" fill="#06B6D4" filter="url(#softGlow)"/>
|
||||
|
||||
<circle cx="-160" cy="-30" r="3.5" fill="#CBD5E1"/>
|
||||
<circle cx="-160" cy="30" r="3.5" fill="#CBD5E1"/>
|
||||
<circle cx="160" cy="-30" r="3.5" fill="#CBD5E1"/>
|
||||
<circle cx="160" cy="30" r="3.5" fill="#CBD5E1"/>
|
||||
<circle cx="-170" cy="-35" r="4" fill="#CBD5E1"/>
|
||||
<circle cx="-170" cy="35" r="4" fill="#CBD5E1"/>
|
||||
<circle cx="170" cy="-35" r="4" fill="#CBD5E1"/>
|
||||
<circle cx="170" cy="35" r="4" fill="#CBD5E1"/>
|
||||
</g>
|
||||
</svg>'''
|
||||
|
||||
# 10. 案例 3
|
||||
# 10. 案例:高端装备制造《分形树状晶体 · 精密咬合》
|
||||
def build_case_manufacture():
|
||||
return f'''<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
@@ -505,30 +552,34 @@ def build_case_manufacture():
|
||||
{make_seal(554, 20, "精")}
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<circle cx="0" cy="0" r="130" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="6,4"/>
|
||||
<circle cx="0" cy="0" r="100" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="70" fill="#EFF6FF" opacity="0.6"/>
|
||||
<!-- 精密工程同心圆与刻度盘 -->
|
||||
<circle cx="0" cy="0" r="140" fill="none" stroke="#E2E8F0" stroke-width="1" stroke-dasharray="6,4"/>
|
||||
<circle cx="0" cy="0" r="110" fill="none" stroke="#CBD5E1" stroke-width="1.2"/>
|
||||
<circle cx="0" cy="0" r="75" fill="#EFF6FF" opacity="0.7"/>
|
||||
|
||||
<line x1="-120" y1="0" x2="120" y2="0" stroke="#CBD5E1" stroke-width="0.8"/>
|
||||
<line x1="0" y1="-120" x2="0" y2="120" stroke="#CBD5E1" stroke-width="0.8"/>
|
||||
<line x1="-85" y1="-85" x2="85" y2="85" stroke="#E2E8F0" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
<line x1="-85" y1="85" x2="85" y2="-85" stroke="#E2E8F0" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
<!-- 直交工程测量基准线 -->
|
||||
<line x1="-130" y1="0" x2="130" y2="0" stroke="#CBD5E1" stroke-width="0.8"/>
|
||||
<line x1="0" y1="-130" x2="0" y2="130" stroke="#CBD5E1" stroke-width="0.8"/>
|
||||
<line x1="-95" y1="-95" x2="95" y2="95" stroke="#E2E8F0" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
<line x1="-95" y1="95" x2="95" y2="-95" stroke="#E2E8F0" stroke-width="0.8" stroke-dasharray="3,3"/>
|
||||
|
||||
<!-- 核心多级 BOM 装配与物料追溯中枢 -->
|
||||
<g filter="url(#cardShadow)">
|
||||
<polygon points="0,-40 38,-15 38,25 0,50 -38,25 -38,-15" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="5" r="22" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="5" r="10" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="5" r="4" fill="#1D4ED8"/>
|
||||
<polygon points="0,-44 42,-16 42,28 0,55 -42,28 -42,-16" fill="url(#glassGrad)" stroke="#2563EB" stroke-width="1.5"/>
|
||||
<circle cx="0" cy="6" r="24" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="6" r="11" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="6" r="4.5" fill="#1D4ED8"/>
|
||||
</g>
|
||||
|
||||
<circle cx="0" cy="-100" r="5" fill="#2563EB"/>
|
||||
<circle cx="100" cy="0" r="5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="100" r="5" fill="#7C3AED"/>
|
||||
<circle cx="-100" cy="0" r="5" fill="#2563EB"/>
|
||||
<!-- 四方咬合与溯源特征节点 -->
|
||||
<circle cx="0" cy="-110" r="5.5" fill="#2563EB"/>
|
||||
<circle cx="110" cy="0" r="5.5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="110" r="5.5" fill="#7C3AED"/>
|
||||
<circle cx="-110" cy="0" r="5.5" fill="#2563EB"/>
|
||||
</g>
|
||||
</svg>'''
|
||||
|
||||
# 11. 案例 4
|
||||
# 11. 案例:政务智能体《密闭结界 · 智慧光芒》
|
||||
def build_case_gov_agent():
|
||||
return f'''<svg width="600" height="380" viewBox="0 0 600 380" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
@@ -542,24 +593,28 @@ def build_case_gov_agent():
|
||||
{make_seal(554, 20, "安")}
|
||||
|
||||
<g transform="translate(300, 190)">
|
||||
<polygon points="0,-120 104,-60 104,60 0,120 -104,60 -104,-60" fill="none" stroke="#E2E8F0" stroke-width="1.2" stroke-dasharray="5,4"/>
|
||||
<polygon points="0,-95 82,-47 82,47 0,95 -82,47 -82,-47" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5" opacity="0.7"/>
|
||||
<!-- 正八边形内网物理隔离边界 (零公网外泄) -->
|
||||
<polygon points="0,-125 110,-65 110,65 0,125 -110,65 -110,-65" fill="none" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="5,4"/>
|
||||
<polygon points="0,-100 88,-50 88,50 0,100 -88,50 -88,-50" fill="url(#glassGrad)" stroke="#CBD5E1" stroke-width="1.5" opacity="0.75"/>
|
||||
|
||||
<circle cx="0" cy="0" r="62" fill="#FAF5FF" opacity="0.8"/>
|
||||
<circle cx="0" cy="0" r="50" fill="none" stroke="#7C3AED" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
<!-- 政策规章 RAG 知识库检索光芒同心环 -->
|
||||
<circle cx="0" cy="0" r="68" fill="#FAF5FF" opacity="0.85"/>
|
||||
<circle cx="0" cy="0" r="54" fill="none" stroke="#7C3AED" stroke-width="1.2" stroke-dasharray="4,4"/>
|
||||
|
||||
<!-- 人机协同核心初审自动化决策中枢 -->
|
||||
<g filter="url(#cardShadow)">
|
||||
<circle cx="0" cy="0" r="32" fill="url(#purpleGrad)"/>
|
||||
<circle cx="0" cy="0" r="20" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="9" fill="#FFFFFF"/>
|
||||
<circle cx="0" cy="0" r="35" fill="url(#purpleGrad)"/>
|
||||
<circle cx="0" cy="0" r="22" fill="url(#blueGrad)"/>
|
||||
<circle cx="0" cy="0" r="10" fill="#FFFFFF"/>
|
||||
</g>
|
||||
|
||||
<circle cx="0" cy="-95" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="82" cy="-47" r="4.5" fill="#7C3AED"/>
|
||||
<circle cx="82" cy="47" r="4.5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="95" r="4.5" fill="#2563EB"/>
|
||||
<circle cx="-82" cy="47" r="4.5" fill="#7C3AED"/>
|
||||
<circle cx="-82" cy="-47" r="4.5" fill="#06B6D4"/>
|
||||
<!-- 规章依据定位与防伪节点 -->
|
||||
<circle cx="0" cy="-100" r="5" fill="#2563EB"/>
|
||||
<circle cx="88" cy="-50" r="5" fill="#7C3AED"/>
|
||||
<circle cx="88" cy="50" r="5" fill="#06B6D4"/>
|
||||
<circle cx="0" cy="100" r="5" fill="#2563EB"/>
|
||||
<circle cx="-88" cy="50" r="5" fill="#7C3AED"/>
|
||||
<circle cx="-88" cy="-50" r="5" fill="#06B6D4"/>
|
||||
</g>
|
||||
</svg>'''
|
||||
|
||||
@@ -582,7 +637,7 @@ def generate_all():
|
||||
filepath = os.path.join(TARGET_DIR, filename)
|
||||
with open(filepath, 'w', encoding='utf-8') as f:
|
||||
f.write(content.strip())
|
||||
print(f"Generated concise showcase: {filename} ({len(content)} bytes)")
|
||||
print(f"Generated advanced abstract showcase: {filename} ({len(content)} bytes)")
|
||||
|
||||
if __name__ == '__main__':
|
||||
generate_all()
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
现代中式科技高级抽象配图自动化测试 (TDD - Test-Driven Development)
|
||||
测试验证重点:
|
||||
1. 纯粹高级抽象设计:杜绝伪造的假界面截图,杜绝纯文字介绍类图片,必须为严谨抽象的工程美学图形。
|
||||
2. 艺术质感与层次:具备空间结构(渐变、阴影、微透视、细线窗棂纹理等),杜绝单薄空洞的简陋圆圈。
|
||||
3. 现代中式浅色规范:背景为 #FFFFFF / #F8FAFC / #EFF6FF 浅色基调,主色 #2563EB 科技蓝,辅以 #06B6D4 青、#7C3AED 紫,克制朱砂印章。
|
||||
4. 全站展示图集与技术文章封面完整性与 SVG 语法闭合。
|
||||
5. 首页模板技术文章包含抽象封面的优雅 Fallback 机制。
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
import unittest
|
||||
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
class AdvancedAbstractVisualsTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.showcases_dir = os.path.join(BASE_DIR, 'public', 'assets', 'addons', 'official', 'images', 'showcases')
|
||||
self.articles_dir = os.path.join(BASE_DIR, 'public', 'assets', 'addons', 'official', 'images', 'articles')
|
||||
self.home_tpl_path = os.path.join(BASE_DIR, 'addons', 'official', 'view', 'web', 'official_home', 'index.html')
|
||||
|
||||
# 4大产品抽象图
|
||||
self.product_files = [
|
||||
'product_mall.svg',
|
||||
'product_pos.svg',
|
||||
'product_erp.svg',
|
||||
'product_saas.svg'
|
||||
]
|
||||
|
||||
# 4大标杆案例抽象图
|
||||
self.case_files = [
|
||||
'case_distrib.svg',
|
||||
'case_catering.svg',
|
||||
'case_manufacture.svg',
|
||||
'case_gov_agent.svg'
|
||||
]
|
||||
|
||||
# 3大核心服务抽象图
|
||||
self.service_files = [
|
||||
'service_middle.svg',
|
||||
'service_app.svg',
|
||||
'service_agent.svg'
|
||||
]
|
||||
|
||||
# 4篇核心技术文章抽象封面
|
||||
self.article_files = [
|
||||
'article_microservice.svg',
|
||||
'article_tdd_standards.svg',
|
||||
'article_cross_app.svg',
|
||||
'article_security_whitepaper.svg'
|
||||
]
|
||||
|
||||
def test_01_all_files_exist_and_valid_svg(self):
|
||||
"""所有抽象视觉文件必须完整存在且具备合法的 SVG 闭合标签与 viewBox"""
|
||||
all_files = self.product_files + self.case_files + self.service_files
|
||||
for fname in all_files:
|
||||
fpath = os.path.join(self.showcases_dir, fname)
|
||||
self.assertTrue(os.path.isfile(fpath), f"抽象视觉图必须存在: {fname}")
|
||||
with open(fpath, 'r', encoding='utf-8') as f:
|
||||
content = f.read().strip()
|
||||
self.assertTrue(content.startswith('<svg'), f"{fname} 必须为合法的 <svg 起始")
|
||||
self.assertTrue(content.endswith('</svg>'), f"{fname} 必须以 </svg> 闭合")
|
||||
self.assertIn('viewBox', content, f"{fname} 必须指定 viewBox 属性")
|
||||
|
||||
def test_02_abstract_visual_richness_and_depth(self):
|
||||
"""抽象图必须具有空间深度与现代科技美感,不应是单薄粗糙的几个圆圈"""
|
||||
all_files = self.product_files + self.case_files + self.service_files
|
||||
for fname in all_files:
|
||||
fpath = os.path.join(self.showcases_dir, fname)
|
||||
with open(fpath, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# 必须具有渐变或滤镜定义以实现高质感光影与空间层次
|
||||
has_depth = ('linearGradient' in content or 'radialGradient' in content) and \
|
||||
('feDropShadow' in content or 'feGaussianBlur' in content or 'filter' in content)
|
||||
self.assertTrue(has_depth, f"{fname} 必须具备光影渐变或阴影滤镜,体现空间深度与高级感")
|
||||
|
||||
# 必须具有现代中式窗棂细线背景图案
|
||||
self.assertIn('lattice', content, f"{fname} 必须融入现代中式窗棂几何微网格底纹")
|
||||
|
||||
# 代码大小合理(高质量矢量图通常在 3KB ~ 15KB,兼顾精细度与加载性能)
|
||||
size_kb = len(content) / 1024
|
||||
self.assertTrue(2.0 <= size_kb <= 25.0, f"{fname} 大小需适中 ({size_kb:.2f}KB),兼顾丰富度与性能")
|
||||
|
||||
def test_03_color_and_seal_constraints(self):
|
||||
"""抽象图形必须遵循配色规范(科技蓝主色,浅色底,克制印章)"""
|
||||
all_files = self.product_files + self.case_files + self.service_files
|
||||
text_regex = re.compile(r'<text[^>]*>(.*?)</text>', re.DOTALL | re.IGNORECASE)
|
||||
for fname in all_files:
|
||||
fpath = os.path.join(self.showcases_dir, fname)
|
||||
with open(fpath, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# 主色必须包含品牌科技蓝 #2563EB / #1D4ED8
|
||||
self.assertTrue(
|
||||
'#2563EB' in content or '#1D4ED8' in content,
|
||||
f"{fname} 必须包含科技蓝规范主色"
|
||||
)
|
||||
|
||||
# 浅色底基
|
||||
self.assertTrue(
|
||||
'#FFFFFF' in content or '#F8FAFC' in content or '#EFF6FF' in content,
|
||||
f"{fname} 必须使用浅色专业风底基"
|
||||
)
|
||||
|
||||
# 文字数量约束:≤ 1 个字符(仅允许一个单字印章或完全无字纯抽象图形)
|
||||
matches = text_regex.findall(content)
|
||||
clean_texts = [re.sub(r'<[^>]+>', '', m).strip() for m in matches if m.strip()]
|
||||
self.assertLessEqual(len(clean_texts), 1, f"{fname} 文字不可超过1个字符(杜绝伪造假界面,保持纯粹抽象): {clean_texts}")
|
||||
|
||||
def test_04_articles_abstract_covers_exist(self):
|
||||
"""核心技术文章必须具备专属抽象科技线稿封面"""
|
||||
self.assertTrue(os.path.isdir(self.articles_dir), "articles 目录必须存在")
|
||||
for fname in self.article_files:
|
||||
fpath = os.path.join(self.articles_dir, fname)
|
||||
self.assertTrue(os.path.isfile(fpath), f"文章封面抽象图必须存在: {fname}")
|
||||
with open(fpath, 'r', encoding='utf-8') as f:
|
||||
content = f.read().strip()
|
||||
self.assertTrue(content.startswith('<svg') and content.endswith('</svg>'), f"{fname} 必须为合法的 SVG")
|
||||
|
||||
def test_05_home_template_has_intelligent_article_fallback(self):
|
||||
"""首页模板在文章图片为空时,必须使用对应的高级抽象技术封面 fallback,消除纯灰空白占位"""
|
||||
self.assertTrue(os.path.isfile(self.home_tpl_path), "首页模板文件必须存在")
|
||||
with open(self.home_tpl_path, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# 检查是否包含 fallback 到 articles 目录下的 SVG 封面
|
||||
self.assertIn('assets/addons/official/images/articles/', content, "首页模板必须包含针对技术文章抽象封面的智能备用逻辑")
|
||||
self.assertNotIn('纳海川技术洞察</div>', content, "首页模板不应直接显示带有灰色背景的纯文字方块,应替换为优雅抽象封面")
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||