百尺竿头、更进一步
|
After Width: | Height: | Size: 185 KiB |
|
After Width: | Height: | Size: 144 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
|
@ -0,0 +1,233 @@
|
|||
<svg viewBox="0 0 1000 720" xmlns="http://www.w3.org/2000/svg" font-family="Microsoft YaHei, Arial, sans-serif">
|
||||
<!-- 背景 -->
|
||||
<rect width="1000" height="720" fill="#F0F4F8"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<rect x="0" y="0" width="1000" height="48" fill="#1A3A5C"/>
|
||||
<text x="500" y="31" text-anchor="middle" fill="white" font-size="18" font-weight="bold">验证试验室数据管理平台 — 系统总体架构图</text>
|
||||
|
||||
<!-- ===== 展示层 ===== -->
|
||||
<rect x="30" y="62" width="940" height="100" rx="8" fill="#E8F4FD" stroke="#2196F3" stroke-width="1.5"/>
|
||||
<text x="50" y="84" fill="#1565C0" font-size="13" font-weight="bold">【展示层】</text>
|
||||
<!-- 大屏 -->
|
||||
<rect x="55" y="92" width="130" height="56" rx="6" fill="#2196F3"/>
|
||||
<text x="120" y="116" text-anchor="middle" fill="white" font-size="12" font-weight="bold">数据大屏</text>
|
||||
<text x="120" y="133" text-anchor="middle" fill="#BBDEFB" font-size="10">6台4K显示屏·多屏联动</text>
|
||||
<!-- Web端 -->
|
||||
<rect x="210" y="92" width="130" height="56" rx="6" fill="#1976D2"/>
|
||||
<text x="275" y="116" text-anchor="middle" fill="white" font-size="12" font-weight="bold">Web管理端</text>
|
||||
<text x="275" y="133" text-anchor="middle" fill="#BBDEFB" font-size="10">B/S架构·多浏览器兼容</text>
|
||||
<!-- 控制终端 -->
|
||||
<rect x="365" y="92" width="130" height="56" rx="6" fill="#0D47A1"/>
|
||||
<text x="430" y="116" text-anchor="middle" fill="white" font-size="12" font-weight="bold">控制终端</text>
|
||||
<text x="430" y="133" text-anchor="middle" fill="#BBDEFB" font-size="10">2台·国产CPU·32英寸</text>
|
||||
<!-- 移动巡检 -->
|
||||
<rect x="520" y="92" width="130" height="56" rx="6" fill="#1565C0"/>
|
||||
<text x="585" y="116" text-anchor="middle" fill="white" font-size="12" font-weight="bold">报表导出</text>
|
||||
<text x="585" y="133" text-anchor="middle" fill="#BBDEFB" font-size="10">光盘摆渡·数据交互</text>
|
||||
<!-- 打印刻录 -->
|
||||
<rect x="675" y="92" width="130" height="56" rx="6" fill="#1A237E"/>
|
||||
<text x="740" y="116" text-anchor="middle" fill="white" font-size="12" font-weight="bold">打印刻录</text>
|
||||
<text x="740" y="133" text-anchor="middle" fill="#BBDEFB" font-size="10">全自动光盘打印刻录机</text>
|
||||
<!-- 摄像监控 -->
|
||||
<rect x="830" y="92" width="120" height="56" rx="6" fill="#283593"/>
|
||||
<text x="890" y="116" text-anchor="middle" fill="white" font-size="12" font-weight="bold">视频监控</text>
|
||||
<text x="890" y="133" text-anchor="middle" fill="#BBDEFB" font-size="10">12个摄像头·400万像素</text>
|
||||
|
||||
<!-- ===== 应用层 ===== -->
|
||||
<rect x="30" y="178" width="940" height="170" rx="8" fill="#E8F5E9" stroke="#4CAF50" stroke-width="1.5"/>
|
||||
<text x="50" y="200" fill="#2E7D32" font-size="13" font-weight="bold">【应用层 — 试验室验证执行系统】</text>
|
||||
<!-- 8个模块 -->
|
||||
<rect x="55" y="208" width="100" height="126" rx="6" fill="#43A047"/>
|
||||
<text x="105" y="230" text-anchor="middle" fill="white" font-size="11" font-weight="bold">系统管理</text>
|
||||
<text x="105" y="248" text-anchor="middle" fill="#C8E6C9" font-size="9">部门/角色</text>
|
||||
<text x="105" y="262" text-anchor="middle" fill="#C8E6C9" font-size="9">用户/菜单</text>
|
||||
<text x="105" y="276" text-anchor="middle" fill="#C8E6C9" font-size="9">系统设置</text>
|
||||
<text x="105" y="290" text-anchor="middle" fill="#C8E6C9" font-size="9">权限管控</text>
|
||||
<text x="105" y="304" text-anchor="middle" fill="#C8E6C9" font-size="9">大屏配置</text>
|
||||
<text x="105" y="318" text-anchor="middle" fill="#C8E6C9" font-size="9">参数设置</text>
|
||||
|
||||
<rect x="168" y="208" width="100" height="126" rx="6" fill="#388E3C"/>
|
||||
<text x="218" y="230" text-anchor="middle" fill="white" font-size="11" font-weight="bold">资源管理</text>
|
||||
<text x="218" y="248" text-anchor="middle" fill="#C8E6C9" font-size="9">验证设备</text>
|
||||
<text x="218" y="262" text-anchor="middle" fill="#C8E6C9" font-size="9">试验人员</text>
|
||||
<text x="218" y="276" text-anchor="middle" fill="#C8E6C9" font-size="9">试验产品</text>
|
||||
<text x="218" y="290" text-anchor="middle" fill="#C8E6C9" font-size="9">试验模板</text>
|
||||
<text x="218" y="304" text-anchor="middle" fill="#C8E6C9" font-size="9">试验项目</text>
|
||||
<text x="218" y="318" text-anchor="middle" fill="#C8E6C9" font-size="9">试验标准</text>
|
||||
|
||||
<rect x="281" y="208" width="100" height="126" rx="6" fill="#2E7D32"/>
|
||||
<text x="331" y="230" text-anchor="middle" fill="white" font-size="11" font-weight="bold">任务管理</text>
|
||||
<text x="331" y="248" text-anchor="middle" fill="#C8E6C9" font-size="9">任务创建</text>
|
||||
<text x="331" y="262" text-anchor="middle" fill="#C8E6C9" font-size="9">项目规划</text>
|
||||
<text x="331" y="276" text-anchor="middle" fill="#C8E6C9" font-size="9">任务排程</text>
|
||||
<text x="331" y="290" text-anchor="middle" fill="#C8E6C9" font-size="9">任务执行</text>
|
||||
<text x="331" y="304" text-anchor="middle" fill="#C8E6C9" font-size="9">中断管理</text>
|
||||
<text x="331" y="318" text-anchor="middle" fill="#C8E6C9" font-size="9">试验完成</text>
|
||||
|
||||
<rect x="394" y="208" width="100" height="126" rx="6" fill="#1B5E20"/>
|
||||
<text x="444" y="230" text-anchor="middle" fill="white" font-size="11" font-weight="bold">数据大屏</text>
|
||||
<text x="444" y="248" text-anchor="middle" fill="#C8E6C9" font-size="9">实时监控</text>
|
||||
<text x="444" y="262" text-anchor="middle" fill="#C8E6C9" font-size="9">多屏联动</text>
|
||||
<text x="444" y="276" text-anchor="middle" fill="#C8E6C9" font-size="9">任务进度</text>
|
||||
<text x="444" y="290" text-anchor="middle" fill="#C8E6C9" font-size="9">设备状态</text>
|
||||
<text x="444" y="304" text-anchor="middle" fill="#C8E6C9" font-size="9">人员在岗</text>
|
||||
<text x="444" y="318" text-anchor="middle" fill="#C8E6C9" font-size="9">数据追溯</text>
|
||||
|
||||
<rect x="507" y="208" width="100" height="126" rx="6" fill="#43A047"/>
|
||||
<text x="557" y="230" text-anchor="middle" fill="white" font-size="11" font-weight="bold">数据统计</text>
|
||||
<text x="557" y="248" text-anchor="middle" fill="#C8E6C9" font-size="9">任务统计</text>
|
||||
<text x="557" y="262" text-anchor="middle" fill="#C8E6C9" font-size="9">成本结算</text>
|
||||
<text x="557" y="276" text-anchor="middle" fill="#C8E6C9" font-size="9">报告统计</text>
|
||||
<text x="557" y="290" text-anchor="middle" fill="#C8E6C9" font-size="9">设备统计</text>
|
||||
<text x="557" y="304" text-anchor="middle" fill="#C8E6C9" font-size="9">人员统计</text>
|
||||
<text x="557" y="318" text-anchor="middle" fill="#C8E6C9" font-size="9">多维导出</text>
|
||||
|
||||
<rect x="620" y="208" width="100" height="126" rx="6" fill="#388E3C"/>
|
||||
<text x="670" y="230" text-anchor="middle" fill="white" font-size="11" font-weight="bold">审批处置</text>
|
||||
<text x="670" y="248" text-anchor="middle" fill="#C8E6C9" font-size="9">中断审批</text>
|
||||
<text x="670" y="262" text-anchor="middle" fill="#C8E6C9" font-size="9">模板升版</text>
|
||||
<text x="670" y="276" text-anchor="middle" fill="#C8E6C9" font-size="9">返工处理</text>
|
||||
<text x="670" y="290" text-anchor="middle" fill="#C8E6C9" font-size="9">报告审批</text>
|
||||
<text x="670" y="304" text-anchor="middle" fill="#C8E6C9" font-size="9">流程追溯</text>
|
||||
<text x="670" y="318" text-anchor="middle" fill="#C8E6C9" font-size="9">合规审计</text>
|
||||
|
||||
<rect x="733" y="208" width="100" height="126" rx="6" fill="#2E7D32"/>
|
||||
<text x="783" y="222" text-anchor="middle" fill="white" font-size="11" font-weight="bold">数据挖掘</text>
|
||||
<text x="783" y="236" text-anchor="middle" fill="white" font-size="11" font-weight="bold">趋势分析</text>
|
||||
<text x="783" y="254" text-anchor="middle" fill="#C8E6C9" font-size="9">算法库管理</text>
|
||||
<text x="783" y="268" text-anchor="middle" fill="#C8E6C9" font-size="9">数据对比</text>
|
||||
<text x="783" y="282" text-anchor="middle" fill="#C8E6C9" font-size="9">图形化分析</text>
|
||||
<text x="783" y="296" text-anchor="middle" fill="#C8E6C9" font-size="9">趋势预测</text>
|
||||
<text x="783" y="310" text-anchor="middle" fill="#C8E6C9" font-size="9">自定义算法</text>
|
||||
<text x="783" y="324" text-anchor="middle" fill="#C8E6C9" font-size="9">大数据接口</text>
|
||||
|
||||
<rect x="846" y="208" width="104" height="126" rx="6" fill="#1B5E20"/>
|
||||
<text x="898" y="230" text-anchor="middle" fill="white" font-size="11" font-weight="bold">系统集成</text>
|
||||
<text x="898" y="248" text-anchor="middle" fill="#C8E6C9" font-size="9">OA系统对接</text>
|
||||
<text x="898" y="262" text-anchor="middle" fill="#C8E6C9" font-size="9">PLM系统对接</text>
|
||||
<text x="898" y="276" text-anchor="middle" fill="#C8E6C9" font-size="9">采集系统集成</text>
|
||||
<text x="898" y="290" text-anchor="middle" fill="#C8E6C9" font-size="9">大数据接口</text>
|
||||
<text x="898" y="304" text-anchor="middle" fill="#C8E6C9" font-size="9">二次开发SDK</text>
|
||||
<text x="898" y="318" text-anchor="middle" fill="#C8E6C9" font-size="9">源码开放</text>
|
||||
|
||||
<!-- ===== 数据层 ===== -->
|
||||
<rect x="30" y="364" width="940" height="100" rx="8" fill="#FFF8E1" stroke="#FF8F00" stroke-width="1.5"/>
|
||||
<text x="50" y="386" fill="#E65100" font-size="13" font-weight="bold">【数据层】</text>
|
||||
<!-- 列存数据库 -->
|
||||
<rect x="55" y="394" width="155" height="56" rx="6" fill="#FF8F00"/>
|
||||
<text x="133" y="418" text-anchor="middle" fill="white" font-size="11" font-weight="bold">列存数据库(优先)</text>
|
||||
<text x="133" y="435" text-anchor="middle" fill="#FFF8E1" font-size="9">海量时序数据·高效检索</text>
|
||||
<!-- 关系型数据库 -->
|
||||
<rect x="225" y="394" width="155" height="56" rx="6" fill="#F57C00"/>
|
||||
<text x="303" y="418" text-anchor="middle" fill="white" font-size="11" font-weight="bold">国产关系型数据库</text>
|
||||
<text x="303" y="435" text-anchor="middle" fill="#FFF8E1" font-size="9">达梦/人大金仓·业务元数据</text>
|
||||
<!-- 文件存储 -->
|
||||
<rect x="395" y="394" width="155" height="56" rx="6" fill="#EF6C00"/>
|
||||
<text x="473" y="418" text-anchor="middle" fill="white" font-size="11" font-weight="bold">分布式文件存储</text>
|
||||
<text x="473" y="435" text-anchor="middle" fill="#FFF8E1" font-size="9">图片/文档/非结构化数据</text>
|
||||
<!-- 数据备份 -->
|
||||
<rect x="565" y="394" width="155" height="56" rx="6" fill="#E65100"/>
|
||||
<text x="643" y="418" text-anchor="middle" fill="white" font-size="11" font-weight="bold">数据备份与归档</text>
|
||||
<text x="643" y="435" text-anchor="middle" fill="#FFF8E1" font-size="9">频率/周期/保留时间可配置</text>
|
||||
<!-- 数据采集引擎 -->
|
||||
<rect x="735" y="394" width="215" height="56" rx="6" fill="#BF360C"/>
|
||||
<text x="843" y="418" text-anchor="middle" fill="white" font-size="11" font-weight="bold">数据采集引擎</text>
|
||||
<text x="843" y="435" text-anchor="middle" fill="#FFF8E1" font-size="9">多协议适配·≥100Hz采集频率</text>
|
||||
|
||||
<!-- ===== 基础设施层 ===== -->
|
||||
<rect x="30" y="480" width="940" height="100" rx="8" fill="#FCE4EC" stroke="#E91E63" stroke-width="1.5"/>
|
||||
<text x="50" y="502" fill="#880E4F" font-size="13" font-weight="bold">【基础设施层】</text>
|
||||
<!-- 应用服务器 -->
|
||||
<rect x="55" y="510" width="175" height="56" rx="6" fill="#C2185B"/>
|
||||
<text x="143" y="534" text-anchor="middle" fill="white" font-size="11" font-weight="bold">应用服务器</text>
|
||||
<text x="143" y="551" text-anchor="middle" fill="#FCE4EC" font-size="9">国产CPU≥2×32核·4×32GB DDR4</text>
|
||||
<!-- 采集存储服务器 -->
|
||||
<rect x="245" y="510" width="175" height="56" rx="6" fill="#AD1457"/>
|
||||
<text x="333" y="534" text-anchor="middle" fill="white" font-size="11" font-weight="bold">数据采集存储服务器</text>
|
||||
<text x="333" y="551" text-anchor="middle" fill="#FCE4EC" font-size="9">国产CPU≥2×32核·8×16TB SATA</text>
|
||||
<!-- 网络 -->
|
||||
<rect x="435" y="510" width="175" height="56" rx="6" fill="#880E4F"/>
|
||||
<text x="523" y="534" text-anchor="middle" fill="white" font-size="11" font-weight="bold">工控网络</text>
|
||||
<text x="523" y="551" text-anchor="middle" fill="#FCE4EC" font-size="9">3台国产芯片交换机·六类灰色网线</text>
|
||||
<!-- 国产OS -->
|
||||
<rect x="625" y="510" width="155" height="56" rx="6" fill="#6A1B9A"/>
|
||||
<text x="703" y="534" text-anchor="middle" fill="white" font-size="11" font-weight="bold">国产操作系统</text>
|
||||
<text x="703" y="551" text-anchor="middle" fill="#EDE7F6" font-size="9">统信UOS/麒麟OS·正版授权</text>
|
||||
<!-- 安全 -->
|
||||
<rect x="795" y="510" width="155" height="56" rx="6" fill="#4A148C"/>
|
||||
<text x="873" y="534" text-anchor="middle" fill="white" font-size="11" font-weight="bold">安全保密体系</text>
|
||||
<text x="873" y="551" text-anchor="middle" fill="#EDE7F6" font-size="9">无线模块拆除·物理隔离</text>
|
||||
|
||||
<!-- ===== 设备接入层 ===== -->
|
||||
<rect x="30" y="596" width="940" height="100" rx="8" fill="#E8EAF6" stroke="#3F51B5" stroke-width="1.5"/>
|
||||
<text x="50" y="618" fill="#1A237E" font-size="13" font-weight="bold">【设备接入层 — 13个验证设备工位】</text>
|
||||
<!-- 设备工位 -->
|
||||
<rect x="55" y="626" width="64" height="56" rx="5" fill="#3F51B5"/>
|
||||
<text x="87" y="648" text-anchor="middle" fill="white" font-size="9">平台1</text>
|
||||
<text x="87" y="662" text-anchor="middle" fill="#C5CAE9" font-size="8">ETH/USB</text>
|
||||
<text x="87" y="675" text-anchor="middle" fill="#C5CAE9" font-size="8">压力/温度</text>
|
||||
|
||||
<rect x="128" y="626" width="64" height="56" rx="5" fill="#303F9F"/>
|
||||
<text x="160" y="648" text-anchor="middle" fill="white" font-size="9">平台2</text>
|
||||
<text x="160" y="662" text-anchor="middle" fill="#C5CAE9" font-size="8">以太网</text>
|
||||
<text x="160" y="675" text-anchor="middle" fill="#C5CAE9" font-size="8">试验报告</text>
|
||||
|
||||
<rect x="201" y="626" width="64" height="56" rx="5" fill="#283593"/>
|
||||
<text x="233" y="648" text-anchor="middle" fill="white" font-size="9">平台3</text>
|
||||
<text x="233" y="662" text-anchor="middle" fill="#C5CAE9" font-size="8">手工导入</text>
|
||||
<text x="233" y="675" text-anchor="middle" fill="#C5CAE9" font-size="8">试验报告</text>
|
||||
|
||||
<rect x="274" y="626" width="64" height="56" rx="5" fill="#1A237E"/>
|
||||
<text x="306" y="648" text-anchor="middle" fill="white" font-size="9">平台4/5</text>
|
||||
<text x="306" y="662" text-anchor="middle" fill="#C5CAE9" font-size="8">ETH/导入</text>
|
||||
<text x="306" y="675" text-anchor="middle" fill="#C5CAE9" font-size="8">测试报告</text>
|
||||
|
||||
<rect x="347" y="626" width="64" height="56" rx="5" fill="#3F51B5"/>
|
||||
<text x="379" y="648" text-anchor="middle" fill="white" font-size="9">平台6</text>
|
||||
<text x="379" y="662" text-anchor="middle" fill="#C5CAE9" font-size="8">以太网</text>
|
||||
<text x="379" y="675" text-anchor="middle" fill="#C5CAE9" font-size="8">温度/应变</text>
|
||||
|
||||
<rect x="420" y="626" width="64" height="56" rx="5" fill="#303F9F"/>
|
||||
<text x="452" y="648" text-anchor="middle" fill="white" font-size="9">平台7/8</text>
|
||||
<text x="452" y="662" text-anchor="middle" fill="#C5CAE9" font-size="8">以太网</text>
|
||||
<text x="452" y="675" text-anchor="middle" fill="#C5CAE9" font-size="8">TXT/JPG</text>
|
||||
|
||||
<rect x="493" y="626" width="64" height="56" rx="5" fill="#283593"/>
|
||||
<text x="525" y="648" text-anchor="middle" fill="white" font-size="9">平台9</text>
|
||||
<text x="525" y="662" text-anchor="middle" fill="#C5CAE9" font-size="8">RS485/USB</text>
|
||||
<text x="525" y="675" text-anchor="middle" fill="#C5CAE9" font-size="8">力/应变/频</text>
|
||||
|
||||
<rect x="566" y="626" width="64" height="56" rx="5" fill="#1A237E"/>
|
||||
<text x="598" y="648" text-anchor="middle" fill="white" font-size="9">平台10/12</text>
|
||||
<text x="598" y="662" text-anchor="middle" fill="#C5CAE9" font-size="8">RS232/Modbus</text>
|
||||
<text x="598" y="675" text-anchor="middle" fill="#C5CAE9" font-size="8">力/应变/频</text>
|
||||
|
||||
<rect x="639" y="626" width="64" height="56" rx="5" fill="#3F51B5"/>
|
||||
<text x="671" y="648" text-anchor="middle" fill="white" font-size="9">平台11</text>
|
||||
<text x="671" y="662" text-anchor="middle" fill="#C5CAE9" font-size="8">TCP/RS232</text>
|
||||
<text x="671" y="675" text-anchor="middle" fill="#C5CAE9" font-size="8">温度/状态</text>
|
||||
|
||||
<rect x="712" y="626" width="64" height="56" rx="5" fill="#303F9F"/>
|
||||
<text x="744" y="648" text-anchor="middle" fill="white" font-size="9">平台13</text>
|
||||
<text x="744" y="662" text-anchor="middle" fill="#C5CAE9" font-size="8">TCP/RS485</text>
|
||||
<text x="744" y="675" text-anchor="middle" fill="#C5CAE9" font-size="8">振动/压力</text>
|
||||
|
||||
<!-- 外部系统 -->
|
||||
<rect x="800" y="626" width="155" height="56" rx="5" fill="#37474F"/>
|
||||
<text x="878" y="648" text-anchor="middle" fill="white" font-size="11" font-weight="bold">外部系统</text>
|
||||
<text x="878" y="664" text-anchor="middle" fill="#CFD8DC" font-size="9">OA系统 / PLM系统</text>
|
||||
<text x="878" y="678" text-anchor="middle" fill="#CFD8DC" font-size="9">光盘摆渡交互</text>
|
||||
|
||||
<!-- 层间连接箭头 -->
|
||||
<line x1="500" y1="162" x2="500" y2="178" stroke="#999" stroke-width="1.5" marker-end="url(#arrow)"/>
|
||||
<line x1="500" y1="348" x2="500" y2="364" stroke="#999" stroke-width="1.5" marker-end="url(#arrow)"/>
|
||||
<line x1="500" y1="464" x2="500" y2="480" stroke="#999" stroke-width="1.5" marker-end="url(#arrow)"/>
|
||||
<line x1="500" y1="580" x2="500" y2="596" stroke="#999" stroke-width="1.5" marker-end="url(#arrow)"/>
|
||||
|
||||
<defs>
|
||||
<marker id="arrow" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto">
|
||||
<path d="M0,0 L0,6 L8,3 z" fill="#999"/>
|
||||
</marker>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 17 KiB |
|
|
@ -0,0 +1,349 @@
|
|||
<svg viewBox="0 0 1100 780" xmlns="http://www.w3.org/2000/svg" font-family="Microsoft YaHei,Arial,sans-serif">
|
||||
<defs>
|
||||
<!-- 渐变 -->
|
||||
<linearGradient id="gUser" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#1565C0"/>
|
||||
<stop offset="100%" stop-color="#1976D2"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="gFront" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#0277BD"/>
|
||||
<stop offset="100%" stop-color="#039BE5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="gBiz" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#1B5E20"/>
|
||||
<stop offset="100%" stop-color="#2E7D32"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="gData" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#4A148C"/>
|
||||
<stop offset="100%" stop-color="#6A1B9A"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="gInfra" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#263238"/>
|
||||
<stop offset="100%" stop-color="#37474F"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="gDevice" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#BF360C"/>
|
||||
<stop offset="100%" stop-color="#E64A19"/>
|
||||
</linearGradient>
|
||||
<!-- 行背景渐变 -->
|
||||
<linearGradient id="bgUser" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#E3F2FD"/>
|
||||
<stop offset="100%" stop-color="#EEF7FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bgFront" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#E1F5FE"/>
|
||||
<stop offset="100%" stop-color="#EEF9FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bgBiz" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#E8F5E9"/>
|
||||
<stop offset="100%" stop-color="#F1FBF2"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bgData" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#F3E5F5"/>
|
||||
<stop offset="100%" stop-color="#FAF0FC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bgInfra" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#ECEFF1"/>
|
||||
<stop offset="100%" stop-color="#F5F7F8"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bgDevice" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#FBE9E7"/>
|
||||
<stop offset="100%" stop-color="#FFF3F0"/>
|
||||
</linearGradient>
|
||||
<!-- 阴影 -->
|
||||
<filter id="sh" x="-4%" y="-4%" width="112%" height="130%">
|
||||
<feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="rgba(0,0,0,0.13)"/>
|
||||
</filter>
|
||||
<!-- 箭头 -->
|
||||
<marker id="arr" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto">
|
||||
<path d="M0,0 L0,6 L8,3 z" fill="#90A4AE"/>
|
||||
</marker>
|
||||
<marker id="arrB" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto">
|
||||
<path d="M0,0 L0,6 L8,3 z" fill="#2196F3"/>
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<!-- 整体背景 -->
|
||||
<rect width="1100" height="780" fill="#F4F6FA" rx="10"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<rect x="0" y="0" width="1100" height="44" rx="10" fill="#1A3A5C"/>
|
||||
<rect x="0" y="34" width="1100" height="10" fill="#1A3A5C"/>
|
||||
<text x="550" y="28" fill="#fff" font-size="16" font-weight="700" text-anchor="middle" letter-spacing="2">验证试验室数据管理平台 · 系统逻辑架构图</text>
|
||||
<text x="980" y="28" fill="#90CAF9" font-size="10" text-anchor="middle">2026-04-17</text>
|
||||
|
||||
<!-- ========== 层标签(左侧色块) ========== -->
|
||||
<!-- 用户层 -->
|
||||
<rect x="8" y="52" width="26" height="88" rx="5" fill="url(#gUser)" filter="url(#sh)"/>
|
||||
<text x="21" y="110" fill="#fff" font-size="11" font-weight="700" text-anchor="middle" transform="rotate(-90,21,110)">用 户 层</text>
|
||||
<!-- 展示层 -->
|
||||
<rect x="8" y="148" width="26" height="88" rx="5" fill="url(#gFront)" filter="url(#sh)"/>
|
||||
<text x="21" y="206" fill="#fff" font-size="11" font-weight="700" text-anchor="middle" transform="rotate(-90,21,206)">展 示 层</text>
|
||||
<!-- 业务层 -->
|
||||
<rect x="8" y="244" width="26" height="218" rx="5" fill="url(#gBiz)" filter="url(#sh)"/>
|
||||
<text x="21" y="368" fill="#fff" font-size="11" font-weight="700" text-anchor="middle" transform="rotate(-90,21,368)">业 务 逻 辑 层</text>
|
||||
<!-- 数据层 -->
|
||||
<rect x="8" y="470" width="26" height="138" rx="5" fill="url(#gData)" filter="url(#sh)"/>
|
||||
<text x="21" y="548" fill="#fff" font-size="11" font-weight="700" text-anchor="middle" transform="rotate(-90,21,548)">数 据 层</text>
|
||||
<!-- 基础设施 -->
|
||||
<rect x="8" y="616" width="26" height="78" rx="5" fill="url(#gInfra)" filter="url(#sh)"/>
|
||||
<text x="21" y="664" fill="#fff" font-size="11" font-weight="700" text-anchor="middle" transform="rotate(-90,21,664)">基础设施</text>
|
||||
<!-- 设备接入 -->
|
||||
<rect x="8" y="702" width="26" height="66" rx="5" fill="url(#gDevice)" filter="url(#sh)"/>
|
||||
<text x="21" y="744" fill="#fff" font-size="11" font-weight="700" text-anchor="middle" transform="rotate(-90,21,744)">设备接入</text>
|
||||
|
||||
<!-- ========== 第1层:用户层 ========== -->
|
||||
<rect x="42" y="52" width="1050" height="88" rx="7" fill="url(#bgUser)" stroke="#BBDEFB" stroke-width="1.5" filter="url(#sh)"/>
|
||||
<text x="62" y="72" fill="#1565C0" font-size="12" font-weight="700">用户角色层</text>
|
||||
|
||||
<!-- 用户角色卡片 -->
|
||||
<rect x="58" y="80" width="140" height="48" rx="6" fill="url(#gUser)" filter="url(#sh)"/>
|
||||
<text x="128" y="101" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">系统管理员</text>
|
||||
<text x="128" y="117" fill="#90CAF9" font-size="9" text-anchor="middle">系统配置 · 用户管理 · 日志审计</text>
|
||||
|
||||
<rect x="218" y="80" width="140" height="48" rx="6" fill="url(#gUser)" filter="url(#sh)"/>
|
||||
<text x="288" y="101" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">主管领导</text>
|
||||
<text x="288" y="117" fill="#90CAF9" font-size="9" text-anchor="middle">审批决策 · 大屏查看 · 报告批准</text>
|
||||
|
||||
<rect x="378" y="80" width="140" height="48" rx="6" fill="url(#gUser)" filter="url(#sh)"/>
|
||||
<text x="448" y="101" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">验证工程师</text>
|
||||
<text x="448" y="117" fill="#90CAF9" font-size="9" text-anchor="middle">任务执行 · 数据采集 · 报告编制</text>
|
||||
|
||||
<rect x="538" y="80" width="140" height="48" rx="6" fill="url(#gUser)" filter="url(#sh)"/>
|
||||
<text x="608" y="101" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">质量工程师</text>
|
||||
<text x="608" y="117" fill="#90CAF9" font-size="9" text-anchor="middle">质量审核 · 报告复核 · 中断初审</text>
|
||||
|
||||
<rect x="698" y="80" width="140" height="48" rx="6" fill="url(#gUser)" filter="url(#sh)"/>
|
||||
<text x="768" y="101" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">计划调度员</text>
|
||||
<text x="768" y="117" fill="#90CAF9" font-size="9" text-anchor="middle">任务排程 · 资源调配 · 进度跟踪</text>
|
||||
|
||||
<rect x="858" y="80" width="140" height="48" rx="6" fill="url(#gUser)" filter="url(#sh)"/>
|
||||
<text x="928" y="101" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">数据分析员</text>
|
||||
<text x="928" y="117" fill="#90CAF9" font-size="9" text-anchor="middle">数据挖掘 · 趋势分析 · 算法调用</text>
|
||||
|
||||
<!-- 层间箭头 1→2 -->
|
||||
<line x1="567" y1="140" x2="567" y2="148" stroke="#90A4AE" stroke-width="2" marker-end="url(#arr)" stroke-dasharray="4,2"/>
|
||||
|
||||
<!-- ========== 第2层:展示层 ========== -->
|
||||
<rect x="42" y="148" width="1050" height="88" rx="7" fill="url(#bgFront)" stroke="#B3E5FC" stroke-width="1.5" filter="url(#sh)"/>
|
||||
<text x="62" y="168" fill="#0277BD" font-size="12" font-weight="700">前端展示层(Web Browser · 大屏终端)</text>
|
||||
|
||||
<rect x="58" y="176" width="148" height="48" rx="6" fill="url(#gFront)" filter="url(#sh)"/>
|
||||
<text x="132" y="197" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">数据大屏</text>
|
||||
<text x="132" y="213" fill="#B3E5FC" font-size="9" text-anchor="middle">实时监控 · KPI看板 · 设备状态</text>
|
||||
|
||||
<rect x="220" y="176" width="148" height="48" rx="6" fill="url(#gFront)" filter="url(#sh)"/>
|
||||
<text x="294" y="197" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">任务管理界面</text>
|
||||
<text x="294" y="213" fill="#B3E5FC" font-size="9" text-anchor="middle">工单 · 排程 · 执行 · 归档</text>
|
||||
|
||||
<rect x="382" y="176" width="148" height="48" rx="6" fill="url(#gFront)" filter="url(#sh)"/>
|
||||
<text x="456" y="197" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">资源管理界面</text>
|
||||
<text x="456" y="213" fill="#B3E5FC" font-size="9" text-anchor="middle">设备 · 人员 · 产品 · 模板</text>
|
||||
|
||||
<rect x="544" y="176" width="148" height="48" rx="6" fill="url(#gFront)" filter="url(#sh)"/>
|
||||
<text x="618" y="197" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">审批处置界面</text>
|
||||
<text x="618" y="213" fill="#B3E5FC" font-size="9" text-anchor="middle">流程审批 · 中断 · 报告审批</text>
|
||||
|
||||
<rect x="706" y="176" width="148" height="48" rx="6" fill="url(#gFront)" filter="url(#sh)"/>
|
||||
<text x="780" y="197" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">数据分析界面</text>
|
||||
<text x="780" y="213" fill="#B3E5FC" font-size="9" text-anchor="middle">对比 · 预测 · 挖掘 · 算法</text>
|
||||
|
||||
<rect x="868" y="176" width="148" height="48" rx="6" fill="url(#gFront)" filter="url(#sh)"/>
|
||||
<text x="942" y="197" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">系统管理界面</text>
|
||||
<text x="942" y="213" fill="#B3E5FC" font-size="9" text-anchor="middle">用户 · 权限 · 接口 · 配置</text>
|
||||
|
||||
<!-- 层间箭头 2→3 -->
|
||||
<line x1="567" y1="236" x2="567" y2="244" stroke="#90A4AE" stroke-width="2" marker-end="url(#arr)" stroke-dasharray="4,2"/>
|
||||
|
||||
<!-- ========== 第3层:业务逻辑层 ========== -->
|
||||
<rect x="42" y="244" width="1050" height="218" rx="7" fill="url(#bgBiz)" stroke="#C8E6C9" stroke-width="1.5" filter="url(#sh)"/>
|
||||
<text x="62" y="264" fill="#1B5E20" font-size="12" font-weight="700">业务逻辑层(Application Server)</text>
|
||||
|
||||
<!-- API网关横条 -->
|
||||
<rect x="58" y="272" width="1018" height="32" rx="6" fill="#1B5E20" opacity="0.9" filter="url(#sh)"/>
|
||||
<text x="567" y="293" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">
|
||||
API 网关层(统一鉴权 · 路由转发 · 限流熔断 · 跨域处理 · 操作日志记录)
|
||||
</text>
|
||||
|
||||
<!-- 业务模块 -->
|
||||
<!-- 任务管理 -->
|
||||
<rect x="58" y="314" width="152" height="136" rx="6" fill="url(#gBiz)" filter="url(#sh)"/>
|
||||
<text x="134" y="336" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">任务管理</text>
|
||||
<line x1="68" y1="342" x2="200" y2="342" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="134" y="358" fill="#A5D6A7" font-size="9" text-anchor="middle">· 任务创建 / 排程</text>
|
||||
<text x="134" y="372" fill="#A5D6A7" font-size="9" text-anchor="middle">· 甘特图调度</text>
|
||||
<text x="134" y="386" fill="#A5D6A7" font-size="9" text-anchor="middle">· 任务执行跟踪</text>
|
||||
<text x="134" y="400" fill="#A5D6A7" font-size="9" text-anchor="middle">· 工单状态管理</text>
|
||||
<text x="134" y="414" fill="#A5D6A7" font-size="9" text-anchor="middle">· 报告生成归档</text>
|
||||
<text x="134" y="428" fill="#A5D6A7" font-size="9" text-anchor="middle">· 任务中断处理</text>
|
||||
<text x="134" y="442" fill="#A5D6A7" font-size="9" text-anchor="middle">· 试验标准关联</text>
|
||||
|
||||
<!-- 资源管理 -->
|
||||
<rect x="224" y="314" width="152" height="136" rx="6" fill="url(#gBiz)" filter="url(#sh)"/>
|
||||
<text x="300" y="336" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">资源管理</text>
|
||||
<line x1="234" y1="342" x2="366" y2="342" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="300" y="358" fill="#A5D6A7" font-size="9" text-anchor="middle">· 设备档案管理</text>
|
||||
<text x="300" y="372" fill="#A5D6A7" font-size="9" text-anchor="middle">· 设备状态监控</text>
|
||||
<text x="300" y="386" fill="#A5D6A7" font-size="9" text-anchor="middle">· 试验人员管理</text>
|
||||
<text x="300" y="400" fill="#A5D6A7" font-size="9" text-anchor="middle">· 试验产品管理</text>
|
||||
<text x="300" y="414" fill="#A5D6A7" font-size="9" text-anchor="middle">· 模板 / 程序管理</text>
|
||||
<text x="300" y="428" fill="#A5D6A7" font-size="9" text-anchor="middle">· 试验标准管理</text>
|
||||
<text x="300" y="442" fill="#A5D6A7" font-size="9" text-anchor="middle">· 报告模板管理</text>
|
||||
|
||||
<!-- 数据采集引擎 -->
|
||||
<rect x="390" y="314" width="152" height="136" rx="6" fill="url(#gBiz)" filter="url(#sh)"/>
|
||||
<text x="466" y="336" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">数据采集引擎</text>
|
||||
<line x1="400" y1="342" x2="532" y2="342" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="466" y="358" fill="#A5D6A7" font-size="9" text-anchor="middle">· 多协议适配驱动</text>
|
||||
<text x="466" y="372" fill="#A5D6A7" font-size="9" text-anchor="middle">· 实时数据采集</text>
|
||||
<text x="466" y="386" fill="#A5D6A7" font-size="9" text-anchor="middle">· 数据预处理清洗</text>
|
||||
<text x="466" y="400" fill="#A5D6A7" font-size="9" text-anchor="middle">· 异常告警触发</text>
|
||||
<text x="466" y="414" fill="#A5D6A7" font-size="9" text-anchor="middle">· 视频监控接入</text>
|
||||
<text x="466" y="428" fill="#A5D6A7" font-size="9" text-anchor="middle">· 曲线实时推送</text>
|
||||
<text x="466" y="442" fill="#A5D6A7" font-size="9" text-anchor="middle">· 大数据量缩放</text>
|
||||
|
||||
<!-- 审批流程引擎 -->
|
||||
<rect x="556" y="314" width="152" height="136" rx="6" fill="url(#gBiz)" filter="url(#sh)"/>
|
||||
<text x="632" y="336" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">审批流程引擎</text>
|
||||
<line x1="566" y1="342" x2="698" y2="342" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="632" y="358" fill="#A5D6A7" font-size="9" text-anchor="middle">· 流程定义配置</text>
|
||||
<text x="632" y="372" fill="#A5D6A7" font-size="9" text-anchor="middle">· 节点流转控制</text>
|
||||
<text x="632" y="386" fill="#A5D6A7" font-size="9" text-anchor="middle">· 中断 / 返工审批</text>
|
||||
<text x="632" y="400" fill="#A5D6A7" font-size="9" text-anchor="middle">· 模板升版审批</text>
|
||||
<text x="632" y="414" fill="#A5D6A7" font-size="9" text-anchor="middle">· 报告审批归档</text>
|
||||
<text x="632" y="428" fill="#A5D6A7" font-size="9" text-anchor="middle">· 超时提醒通知</text>
|
||||
<text x="632" y="442" fill="#A5D6A7" font-size="9" text-anchor="middle">· 消息推送服务</text>
|
||||
|
||||
<!-- 数据分析引擎 -->
|
||||
<rect x="722" y="314" width="152" height="136" rx="6" fill="url(#gBiz)" filter="url(#sh)"/>
|
||||
<text x="798" y="336" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">数据分析引擎</text>
|
||||
<line x1="732" y1="342" x2="864" y2="342" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="798" y="358" fill="#A5D6A7" font-size="9" text-anchor="middle">· 数据对比分析</text>
|
||||
<text x="798" y="372" fill="#A5D6A7" font-size="9" text-anchor="middle">· 趋势预测计算</text>
|
||||
<text x="798" y="386" fill="#A5D6A7" font-size="9" text-anchor="middle">· 算法库调用</text>
|
||||
<text x="798" y="400" fill="#A5D6A7" font-size="9" text-anchor="middle">· 自定义算法执行</text>
|
||||
<text x="798" y="414" fill="#A5D6A7" font-size="9" text-anchor="middle">· 统计报表生成</text>
|
||||
<text x="798" y="428" fill="#A5D6A7" font-size="9" text-anchor="middle">· 多图表可视化</text>
|
||||
<text x="798" y="442" fill="#A5D6A7" font-size="9" text-anchor="middle">· 数据导出服务</text>
|
||||
|
||||
<!-- 系统管理 -->
|
||||
<rect x="888" y="314" width="188" height="136" rx="6" fill="url(#gBiz)" filter="url(#sh)"/>
|
||||
<text x="982" y="336" fill="#fff" font-size="12" font-weight="700" text-anchor="middle">系统管理</text>
|
||||
<line x1="898" y1="342" x2="1066" y2="342" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="982" y="358" fill="#A5D6A7" font-size="9" text-anchor="middle">· 用户 / 角色权限管理</text>
|
||||
<text x="982" y="372" fill="#A5D6A7" font-size="9" text-anchor="middle">· 审批流程配置</text>
|
||||
<text x="982" y="386" fill="#A5D6A7" font-size="9" text-anchor="middle">· 接口配置管理</text>
|
||||
<text x="982" y="400" fill="#A5D6A7" font-size="9" text-anchor="middle">· 操作日志审计</text>
|
||||
<text x="982" y="414" fill="#A5D6A7" font-size="9" text-anchor="middle">· 系统参数配置</text>
|
||||
<text x="982" y="428" fill="#A5D6A7" font-size="9" text-anchor="middle">· 数据字典管理</text>
|
||||
<text x="982" y="442" fill="#A5D6A7" font-size="9" text-anchor="middle">· 系统监控告警</text>
|
||||
|
||||
<!-- 层间箭头 3→4 -->
|
||||
<line x1="567" y1="462" x2="567" y2="470" stroke="#90A4AE" stroke-width="2" marker-end="url(#arr)" stroke-dasharray="4,2"/>
|
||||
|
||||
<!-- ========== 第4层:数据层 ========== -->
|
||||
<rect x="42" y="470" width="1050" height="138" rx="7" fill="url(#bgData)" stroke="#E1BEE7" stroke-width="1.5" filter="url(#sh)"/>
|
||||
<text x="62" y="490" fill="#4A148C" font-size="12" font-weight="700">数据层(Data Layer)</text>
|
||||
|
||||
<!-- 关系型数据库 -->
|
||||
<rect x="58" y="498" width="186" height="96" rx="6" fill="url(#gData)" filter="url(#sh)"/>
|
||||
<text x="151" y="518" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">关系型数据库</text>
|
||||
<text x="151" y="532" fill="#CE93D8" font-size="9" text-anchor="middle">MySQL / PostgreSQL</text>
|
||||
<line x1="68" y1="538" x2="234" y2="538" stroke="rgba(255,255,255,0.15)" stroke-width="1"/>
|
||||
<text x="151" y="552" fill="#CE93D8" font-size="9" text-anchor="middle">任务 / 工单 / 审批 / 用户</text>
|
||||
<text x="151" y="566" fill="#CE93D8" font-size="9" text-anchor="middle">产品 / 设备 / 模板数据</text>
|
||||
<text x="151" y="580" fill="#CE93D8" font-size="9" text-anchor="middle">结构化业务数据存储</text>
|
||||
|
||||
<!-- 时序数据库 -->
|
||||
<rect x="260" y="498" width="186" height="96" rx="6" fill="url(#gData)" filter="url(#sh)"/>
|
||||
<text x="353" y="518" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">时序数据库</text>
|
||||
<text x="353" y="532" fill="#CE93D8" font-size="9" text-anchor="middle">TDengine / InfluxDB</text>
|
||||
<line x1="270" y1="538" x2="436" y2="538" stroke="rgba(255,255,255,0.15)" stroke-width="1"/>
|
||||
<text x="353" y="552" fill="#CE93D8" font-size="9" text-anchor="middle">设备高频采集时序数据</text>
|
||||
<text x="353" y="566" fill="#CE93D8" font-size="9" text-anchor="middle">支持 ≥100万条/秒写入</text>
|
||||
<text x="353" y="580" fill="#CE93D8" font-size="9" text-anchor="middle">自动压缩 / 分级存储</text>
|
||||
|
||||
<!-- 缓存数据库 -->
|
||||
<rect x="462" y="498" width="186" height="96" rx="6" fill="url(#gData)" filter="url(#sh)"/>
|
||||
<text x="555" y="518" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">缓存数据库</text>
|
||||
<text x="555" y="532" fill="#CE93D8" font-size="9" text-anchor="middle">Redis Cluster</text>
|
||||
<line x1="472" y1="538" x2="638" y2="538" stroke="rgba(255,255,255,0.15)" stroke-width="1"/>
|
||||
<text x="555" y="552" fill="#CE93D8" font-size="9" text-anchor="middle">实时状态 / 会话缓存</text>
|
||||
<text x="555" y="566" fill="#CE93D8" font-size="9" text-anchor="middle">Token / 权限缓存</text>
|
||||
<text x="555" y="580" fill="#CE93D8" font-size="9" text-anchor="middle">热点数据加速访问</text>
|
||||
|
||||
<!-- 文件存储 -->
|
||||
<rect x="664" y="498" width="186" height="96" rx="6" fill="url(#gData)" filter="url(#sh)"/>
|
||||
<text x="757" y="518" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">文件对象存储</text>
|
||||
<text x="757" y="532" fill="#CE93D8" font-size="9" text-anchor="middle">MinIO / NAS</text>
|
||||
<line x1="674" y1="538" x2="840" y2="538" stroke="rgba(255,255,255,0.15)" stroke-width="1"/>
|
||||
<text x="757" y="552" fill="#CE93D8" font-size="9" text-anchor="middle">试验报告 / 附件文件</text>
|
||||
<text x="757" y="566" fill="#CE93D8" font-size="9" text-anchor="middle">视频录像 / 算法包</text>
|
||||
<text x="757" y="580" fill="#CE93D8" font-size="9" text-anchor="middle">模板文件 / 程序文件</text>
|
||||
|
||||
<!-- 消息队列 -->
|
||||
<rect x="866" y="498" width="210" height="96" rx="6" fill="url(#gData)" filter="url(#sh)"/>
|
||||
<text x="971" y="518" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">消息队列</text>
|
||||
<text x="971" y="532" fill="#CE93D8" font-size="9" text-anchor="middle">RabbitMQ / Kafka</text>
|
||||
<line x1="876" y1="538" x2="1066" y2="538" stroke="rgba(255,255,255,0.15)" stroke-width="1"/>
|
||||
<text x="971" y="552" fill="#CE93D8" font-size="9" text-anchor="middle">审批通知异步处理</text>
|
||||
<text x="971" y="566" fill="#CE93D8" font-size="9" text-anchor="middle">告警事件 / 邮件队列</text>
|
||||
<text x="971" y="580" fill="#CE93D8" font-size="9" text-anchor="middle">数据分析异步任务</text>
|
||||
|
||||
<!-- 层间箭头 4→5 -->
|
||||
<line x1="567" y1="608" x2="567" y2="616" stroke="#90A4AE" stroke-width="2" marker-end="url(#arr)" stroke-dasharray="4,2"/>
|
||||
|
||||
<!-- ========== 第5层:基础设施层 ========== -->
|
||||
<rect x="42" y="616" width="1050" height="78" rx="7" fill="url(#bgInfra)" stroke="#CFD8DC" stroke-width="1.5" filter="url(#sh)"/>
|
||||
<text x="62" y="636" fill="#263238" font-size="12" font-weight="700">基础设施层(Infrastructure)</text>
|
||||
|
||||
<rect x="58" y="644" width="178" height="38" rx="5" fill="url(#gInfra)" filter="url(#sh)"/>
|
||||
<text x="147" y="659" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">Web服务器</text>
|
||||
<text x="147" y="673" fill="#B0BEC5" font-size="9" text-anchor="middle">Nginx · 反向代理 · 负载均衡</text>
|
||||
|
||||
<rect x="252" y="644" width="178" height="38" rx="5" fill="url(#gInfra)" filter="url(#sh)"/>
|
||||
<text x="341" y="659" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">应用容器</text>
|
||||
<text x="341" y="673" fill="#B0BEC5" font-size="9" text-anchor="middle">Docker · Kubernetes 编排</text>
|
||||
|
||||
<rect x="446" y="644" width="178" height="38" rx="5" fill="url(#gInfra)" filter="url(#sh)"/>
|
||||
<text x="535" y="659" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">监控运维</text>
|
||||
<text x="535" y="673" fill="#B0BEC5" font-size="9" text-anchor="middle">Prometheus · Grafana · ELK</text>
|
||||
|
||||
<rect x="640" y="644" width="178" height="38" rx="5" fill="url(#gInfra)" filter="url(#sh)"/>
|
||||
<text x="729" y="659" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">网络安全</text>
|
||||
<text x="729" y="673" fill="#B0BEC5" font-size="9" text-anchor="middle">防火墙 · WAF · SSL/TLS</text>
|
||||
|
||||
<rect x="834" y="644" width="244" height="38" rx="5" fill="url(#gInfra)" filter="url(#sh)"/>
|
||||
<text x="956" y="659" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">服务器硬件</text>
|
||||
<text x="956" y="673" fill="#B0BEC5" font-size="9" text-anchor="middle">x86服务器 · 工业以太网交换机 · UPS</text>
|
||||
|
||||
<!-- 层间箭头 5→6 -->
|
||||
<line x1="567" y1="694" x2="567" y2="702" stroke="#90A4AE" stroke-width="2" marker-end="url(#arr)" stroke-dasharray="4,2"/>
|
||||
|
||||
<!-- ========== 第6层:设备接入层 ========== -->
|
||||
<rect x="42" y="702" width="1050" height="66" rx="7" fill="url(#bgDevice)" stroke="#FFAB91" stroke-width="1.5" filter="url(#sh)"/>
|
||||
<text x="62" y="720" fill="#BF360C" font-size="12" font-weight="700">设备接入层(Device Integration)</text>
|
||||
|
||||
<rect x="58" y="728" width="148" height="30" rx="5" fill="url(#gDevice)" filter="url(#sh)"/>
|
||||
<text x="132" y="747" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">TCP/IP · 以太网</text>
|
||||
|
||||
<rect x="220" y="728" width="148" height="30" rx="5" fill="url(#gDevice)" filter="url(#sh)"/>
|
||||
<text x="294" y="747" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">RS485 · RS232 串口</text>
|
||||
|
||||
<rect x="382" y="728" width="148" height="30" rx="5" fill="url(#gDevice)" filter="url(#sh)"/>
|
||||
<text x="456" y="747" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">USB · USB3.0</text>
|
||||
|
||||
<rect x="544" y="728" width="148" height="30" rx="5" fill="url(#gDevice)" filter="url(#sh)"/>
|
||||
<text x="618" y="747" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">Modbus · OPC-UA</text>
|
||||
|
||||
<rect x="706" y="728" width="148" height="30" rx="5" fill="url(#gDevice)" filter="url(#sh)"/>
|
||||
<text x="780" y="747" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">视频 · POE摄像头</text>
|
||||
|
||||
<rect x="868" y="728" width="210" height="30" rx="5" fill="url(#gDevice)" filter="url(#sh)"/>
|
||||
<text x="973" y="747" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">13台验证平台设备</text>
|
||||
|
||||
<!-- 底部说明 -->
|
||||
<text x="550" y="772" fill="#90A4AE" font-size="10" text-anchor="middle">
|
||||
成都凯天电子股份有限公司 · 验证试验室数据管理平台 · 系统逻辑架构图 · V1.0 · 2026-04-17
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 24 KiB |
|
|
@ -0,0 +1,182 @@
|
|||
<svg viewBox="0 0 1100 820" xmlns="http://www.w3.org/2000/svg" font-family="Microsoft YaHei,Arial,sans-serif">
|
||||
<defs>
|
||||
<linearGradient id="gH" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#0D47A1"/>
|
||||
<stop offset="100%" stop-color="#1565C0"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="gApp" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#1B5E20"/>
|
||||
<stop offset="100%" stop-color="#2E7D32"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="gDB" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#4A148C"/>
|
||||
<stop offset="100%" stop-color="#6A1B9A"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="gDev" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#BF360C"/>
|
||||
<stop offset="100%" stop-color="#E64A19"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="gSec" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#263238"/>
|
||||
<stop offset="100%" stop-color="#455A64"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="gOps" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#004D40"/>
|
||||
<stop offset="100%" stop-color="#00695C"/>
|
||||
</linearGradient>
|
||||
<filter id="sh" x="-4%" y="-4%" width="115%" height="130%">
|
||||
<feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="rgba(0,0,0,0.13)"/>
|
||||
</filter>
|
||||
<marker id="ar" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto">
|
||||
<path d="M0,0 L0,6 L8,3 z" fill="#78909C"/>
|
||||
</marker>
|
||||
<marker id="arB" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto">
|
||||
<path d="M0,0 L0,6 L8,3 z" fill="#2196F3"/>
|
||||
</marker>
|
||||
<marker id="arO" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto">
|
||||
<path d="M0,0 L0,6 L8,3 z" fill="#FF9800"/>
|
||||
</marker>
|
||||
<marker id="arG" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto">
|
||||
<path d="M0,0 L0,6 L8,3 z" fill="#4CAF50"/>
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<!-- 背景 -->
|
||||
<rect width="1100" height="820" fill="#F4F6FA" rx="10"/>
|
||||
|
||||
<!-- 标题栏 -->
|
||||
<rect x="0" y="0" width="1100" height="44" rx="10" fill="#1A3A5C"/>
|
||||
<rect x="0" y="34" width="1100" height="10" fill="#1A3A5C"/>
|
||||
<text x="550" y="28" fill="#fff" font-size="16" font-weight="700" text-anchor="middle" letter-spacing="2">验证试验室数据管理平台 · 系统部署架构图</text>
|
||||
<text x="980" y="28" fill="#90CAF9" font-size="10">2026-04-17</text>
|
||||
|
||||
<!-- ===== 区域1:客户端 ===== -->
|
||||
<rect x="14" y="52" width="1072" height="96" rx="8" fill="#E3F2FD" stroke="#90CAF9" stroke-width="1.5" filter="url(#sh)"/>
|
||||
<text x="34" y="72" fill="#0D47A1" font-size="12" font-weight="700">① 客户端区域(Client Zone)</text>
|
||||
|
||||
<rect x="30" y="80" width="150" height="56" rx="6" fill="url(#gH)" filter="url(#sh)"/>
|
||||
<text x="105" y="104" fill="#fff" font-size="22" text-anchor="middle">💻</text>
|
||||
<text x="105" y="126" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">PC 浏览器</text>
|
||||
|
||||
<rect x="200" y="80" width="150" height="56" rx="6" fill="url(#gH)" filter="url(#sh)"/>
|
||||
<text x="275" y="104" fill="#fff" font-size="22" text-anchor="middle">🖥️</text>
|
||||
<text x="275" y="126" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">数据大屏终端</text>
|
||||
|
||||
<rect x="370" y="80" width="150" height="56" rx="6" fill="url(#gH)" filter="url(#sh)"/>
|
||||
<text x="445" y="104" fill="#fff" font-size="22" text-anchor="middle">📱</text>
|
||||
<text x="445" y="126" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">移动端(备用)</text>
|
||||
|
||||
<!-- HTTPS说明 -->
|
||||
<rect x="560" y="86" width="510" height="44" rx="6" fill="rgba(13,71,161,0.08)" stroke="#90CAF9" stroke-width="1" stroke-dasharray="4,2"/>
|
||||
<text x="815" y="105" fill="#1565C0" font-size="11" font-weight="700" text-anchor="middle">通信协议</text>
|
||||
<text x="815" y="121" fill="#1565C0" font-size="10" text-anchor="middle">HTTPS(443) · WebSocket / WSS(实时推送) · HTTP/2</text>
|
||||
|
||||
<!-- 箭头 1→2 -->
|
||||
<line x1="550" y1="148" x2="550" y2="160" stroke="#78909C" stroke-width="2" marker-end="url(#ar)" stroke-dasharray="4,2"/>
|
||||
|
||||
<!-- ===== 区域2:网络安全区 DMZ ===== -->
|
||||
<rect x="14" y="160" width="1072" height="72" rx="8" fill="#ECEFF1" stroke="#B0BEC5" stroke-width="1.5" filter="url(#sh)"/>
|
||||
<text x="34" y="178" fill="#263238" font-size="12" font-weight="700">② 网络安全区(DMZ)</text>
|
||||
|
||||
<rect x="30" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
|
||||
<text x="110" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">🔒 防火墙 Firewall</text>
|
||||
|
||||
<rect x="206" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
|
||||
<text x="286" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">🛡️ WAF 应用防火墙</text>
|
||||
|
||||
<rect x="382" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
|
||||
<text x="462" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">⚖️ Nginx 负载均衡</text>
|
||||
|
||||
<rect x="558" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
|
||||
<text x="638" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">🔑 SSL/TLS 证书</text>
|
||||
|
||||
<rect x="734" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
|
||||
<text x="814" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">👤 统一认证 JWT/SSO</text>
|
||||
|
||||
<rect x="910" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
|
||||
<text x="990" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">📋 API 网关 Gateway</text>
|
||||
|
||||
<!-- 箭头 2→3 -->
|
||||
<line x1="550" y1="232" x2="550" y2="244" stroke="#78909C" stroke-width="2" marker-end="url(#ar)" stroke-dasharray="4,2"/>
|
||||
|
||||
<!-- ===== 区域3:应用服务器集群 ===== -->
|
||||
<rect x="14" y="244" width="1072" height="192" rx="8" fill="#E8F5E9" stroke="#A5D6A7" stroke-width="1.5" filter="url(#sh)"/>
|
||||
<text x="34" y="264" fill="#1B5E20" font-size="12" font-weight="700">③ 应用服务器集群(Kubernetes 编排 · 自动扩缩容)</text>
|
||||
|
||||
<!-- 前端服务 -->
|
||||
<rect x="30" y="272" width="158" height="150" rx="6" fill="url(#gApp)" filter="url(#sh)"/>
|
||||
<text x="109" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">前端服务</text>
|
||||
<line x1="40" y1="298" x2="178" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="109" y="312" fill="#A5D6A7" font-size="9" text-anchor="middle">Vue3 / React</text>
|
||||
<text x="109" y="326" fill="#A5D6A7" font-size="9" text-anchor="middle">Nginx 静态托管</text>
|
||||
<text x="109" y="340" fill="#A5D6A7" font-size="9" text-anchor="middle">WebSocket 实时推送</text>
|
||||
<text x="109" y="354" fill="#A5D6A7" font-size="9" text-anchor="middle">大屏可视化渲染</text>
|
||||
<rect x="44" y="366" width="130" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
|
||||
<text x="109" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 运行中 · ×2 副本</text>
|
||||
<rect x="44" y="390" width="130" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
|
||||
<text x="109" y="402" fill="#C8E6C9" font-size="9" text-anchor="middle">Port: 80 / 443</text>
|
||||
|
||||
<!-- 业务服务 -->
|
||||
<rect x="204" y="272" width="158" height="150" rx="6" fill="url(#gApp)" filter="url(#sh)"/>
|
||||
<text x="283" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">业务服务</text>
|
||||
<line x1="214" y1="298" x2="352" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="283" y="312" fill="#A5D6A7" font-size="9" text-anchor="middle">Spring Boot 3.x</text>
|
||||
<text x="283" y="326" fill="#A5D6A7" font-size="9" text-anchor="middle">任务 / 资源 / 审批</text>
|
||||
<text x="283" y="340" fill="#A5D6A7" font-size="9" text-anchor="middle">RESTful API</text>
|
||||
<text x="283" y="354" fill="#A5D6A7" font-size="9" text-anchor="middle">JWT 鉴权</text>
|
||||
<rect x="218" y="366" width="130" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
|
||||
<text x="283" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 运行中 · ×3 副本</text>
|
||||
<rect x="218" y="390" width="130" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
|
||||
<text x="283" y="402" fill="#C8E6C9" font-size="9" text-anchor="middle">Port: 8080</text>
|
||||
|
||||
<!-- 数据采集服务 -->
|
||||
<rect x="378" y="272" width="158" height="150" rx="6" fill="url(#gApp)" filter="url(#sh)"/>
|
||||
<text x="457" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">数据采集服务</text>
|
||||
<line x1="388" y1="298" x2="526" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="457" y="312" fill="#A5D6A7" font-size="9" text-anchor="middle">Python / Go</text>
|
||||
<text x="457" y="326" fill="#A5D6A7" font-size="9" text-anchor="middle">多协议驱动适配</text>
|
||||
<text x="457" y="340" fill="#A5D6A7" font-size="9" text-anchor="middle">实时采集引擎</text>
|
||||
<text x="457" y="354" fill="#A5D6A7" font-size="9" text-anchor="middle">数据预处理清洗</text>
|
||||
<rect x="392" y="366" width="130" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
|
||||
<text x="457" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 运行中 · ×2 副本</text>
|
||||
<rect x="392" y="390" width="130" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
|
||||
<text x="457" y="402" fill="#C8E6C9" font-size="9" text-anchor="middle">Port: 9090</text>
|
||||
|
||||
<!-- 分析计算服务 -->
|
||||
<rect x="552" y="272" width="158" height="150" rx="6" fill="url(#gApp)" filter="url(#sh)"/>
|
||||
<text x="631" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">分析计算服务</text>
|
||||
<line x1="562" y1="298" x2="700" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="631" y="312" fill="#A5D6A7" font-size="9" text-anchor="middle">Python / Celery</text>
|
||||
<text x="631" y="326" fill="#A5D6A7" font-size="9" text-anchor="middle">算法库调用执行</text>
|
||||
<text x="631" y="340" fill="#A5D6A7" font-size="9" text-anchor="middle">异步计算任务</text>
|
||||
<text x="631" y="354" fill="#A5D6A7" font-size="9" text-anchor="middle">趋势预测计算</text>
|
||||
<rect x="566" y="366" width="130" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
|
||||
<text x="631" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 运行中 · ×2 副本</text>
|
||||
<rect x="566" y="390" width="130" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
|
||||
<text x="631" y="402" fill="#C8E6C9" font-size="9" text-anchor="middle">Port: 8090</text>
|
||||
|
||||
<!-- 消息推送服务 -->
|
||||
<rect x="726" y="272" width="158" height="150" rx="6" fill="url(#gApp)" filter="url(#sh)"/>
|
||||
<text x="805" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">消息推送服务</text>
|
||||
<line x1="736" y1="298" x2="874" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="805" y="312" fill="#A5D6A7" font-size="9" text-anchor="middle">WebSocket Server</text>
|
||||
<text x="805" y="326" fill="#A5D6A7" font-size="9" text-anchor="middle">实时告警推送</text>
|
||||
<text x="805" y="340" fill="#A5D6A7" font-size="9" text-anchor="middle">审批消息通知</text>
|
||||
<text x="805" y="354" fill="#A5D6A7" font-size="9" text-anchor="middle">邮件 / 短信发送</text>
|
||||
<rect x="740" y="366" width="130" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
|
||||
<text x="805" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 运行中 · ×2 副本</text>
|
||||
<rect x="740" y="390" width="130" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
|
||||
<text x="805" y="402" fill="#C8E6C9" font-size="9" text-anchor="middle">Port: 8088</text>
|
||||
|
||||
<!-- 运维监控服务 -->
|
||||
<rect x="900" y="272" width="170" height="150" rx="6" fill="url(#gOps)" filter="url(#sh)"/>
|
||||
<text x="985" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">运维监控服务</text>
|
||||
<line x1="910" y1="298" x2="1060" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
|
||||
<text x="985" y="312" fill="#80CBC4" font-size="9" text-anchor="middle">Prometheus</text>
|
||||
<text x="985" y="326" fill="#80CBC4" font-size="9" text-anchor="middle">Grafana 可视化</text>
|
||||
<text x="985" y="340" fill="#80CBC4" font-size="9" text-anchor="middle">ELK 日志聚合</text>
|
||||
<text x="985" y="354" fill="#80CBC4" font-size="9" text-anchor="middle">自动扩缩容告警</text>
|
||||
<rect x="914" y="366" width="142" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
|
||||
<text x="985" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 监控运行中</text>
|
||||
<rect x="914" y="390" width="142" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
|
||||
<text
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 53 KiB |