Files
devops-skills/site/index.svg
seekee421 fcecce0595
Some checks failed
preview-slot-reclaim / reclaim (push) Has been cancelled
publish-site / deploy-public-site (push) Has been cancelled
feat: publish standalone product landing page as rendered svg
2026-03-06 22:58:48 +08:00

214 lines
12 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="2500" viewBox="0 0 1600 2500">
<defs>
<linearGradient id="bgGrad" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#070c19"/>
<stop offset="55%" stop-color="#102347"/>
<stop offset="100%" stop-color="#0a3a4f"/>
</linearGradient>
<linearGradient id="accentGrad" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#29d8ff"/>
<stop offset="100%" stop-color="#49f2c7"/>
</linearGradient>
<linearGradient id="cardGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#122445" stop-opacity="0.95"/>
<stop offset="100%" stop-color="#0f1d38" stop-opacity="0.95"/>
</linearGradient>
<filter id="softGlow" x="-40%" y="-40%" width="180%" height="180%">
<feGaussianBlur stdDeviation="18" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<style>
.title {
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
fill: #ecf4ff;
font-weight: 700;
}
.subtitle {
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
fill: #b8c9e9;
font-size: 30px;
}
.section-title {
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
fill: #e7f1ff;
font-size: 44px;
font-weight: 700;
}
.card-title {
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
fill: #def2ff;
font-size: 32px;
font-weight: 700;
}
.card-text {
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
fill: #bad0ee;
font-size: 24px;
}
.mono {
font-family: "Cascadia Mono", Consolas, Menlo, monospace;
fill: #d8f1ff;
font-size: 21px;
}
.label {
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
fill: #88a6d4;
font-size: 20px;
}
.badge {
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
fill: #0a2b3f;
font-size: 21px;
font-weight: 700;
}
.btn {
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
fill: #06253a;
font-size: 24px;
font-weight: 700;
}
.btn-muted {
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
fill: #d2e8ff;
font-size: 22px;
font-weight: 600;
}
</style>
</defs>
<rect x="0" y="0" width="1600" height="2500" fill="url(#bgGrad)"/>
<circle cx="1350" cy="240" r="260" fill="#29d8ff" opacity="0.13" filter="url(#softGlow)"/>
<circle cx="180" cy="320" r="220" fill="#49f2c7" opacity="0.11" filter="url(#softGlow)"/>
<circle cx="420" cy="2100" r="260" fill="#2fd8f0" opacity="0.10" filter="url(#softGlow)"/>
<rect x="70" y="70" width="1460" height="500" rx="32" fill="url(#cardGrad)" stroke="#345a90" stroke-width="2"/>
<rect x="110" y="120" width="390" height="56" rx="28" fill="url(#accentGrad)"/>
<text x="145" y="158" class="badge">Issue-Driven DevOps Platform</text>
<text x="110" y="255" class="title" font-size="74">gitea-issue-devops-agent</text>
<text x="110" y="325" class="subtitle">把 Issue → Branch → Preview Slot → Test Loop → Human-Confirmed Merge 变成标准交付引擎</text>
<text x="110" y="372" class="subtitle">不是临时脚本,而是可规模化的研发基础设施产品。</text>
<rect x="110" y="415" width="260" height="82" rx="14" fill="url(#accentGrad)"/>
<text x="152" y="468" class="btn">访问仓库</text>
<a href="https://fun-md.com/Fun_MD/devops-skills">
<rect x="110" y="415" width="260" height="82" rx="14" fill="#ffffff" opacity="0.001"/>
</a>
<rect x="390" y="415" width="330" height="82" rx="14" fill="#1b3157" stroke="#4068a5"/>
<text x="445" y="468" class="btn-muted">SKILL 规范文档</text>
<a href="https://fun-md.com/Fun_MD/devops-skills/raw/branch/main/skills/gitea-issue-devops-agent/SKILL.md">
<rect x="390" y="415" width="330" height="82" rx="14" fill="#ffffff" opacity="0.001"/>
</a>
<rect x="820" y="150" width="660" height="340" rx="22" fill="#0c1a34" stroke="#34598e"/>
<text x="860" y="215" class="label">核心指标</text>
<text x="860" y="285" class="title" font-size="58">3 Modes</text>
<text x="860" y="325" class="label">automatic / semi-automatic / manual</text>
<text x="1160" y="285" class="title" font-size="58">5 Scopes</text>
<text x="1160" y="325" class="label">skip / client / server / full / infra</text>
<text x="860" y="390" class="title" font-size="58">1 : 1 Binding</text>
<text x="860" y="430" class="label">Issue - Branch - Preview Slot 精确绑定</text>
<text x="1160" y="390" class="title" font-size="58">TTL Reclaim</text>
<text x="1160" y="430" class="label">空闲槽位自动回收</text>
<text x="80" y="680" class="section-title">产品核心价值</text>
<rect x="80" y="715" width="460" height="280" rx="20" fill="url(#cardGrad)" stroke="#35598f"/>
<text x="110" y="785" class="card-title">1. 分支隔离提测</text>
<text x="110" y="835" class="card-text">每个 issue 固定分支和预览环境,</text>
<text x="110" y="872" class="card-text">主干环境稳定回归,提测互不覆盖。</text>
<text x="110" y="909" class="card-text">团队并行效率显著提升。</text>
<rect x="570" y="715" width="460" height="280" rx="20" fill="url(#cardGrad)" stroke="#35598f"/>
<text x="600" y="785" class="card-title">2. 资源智能节流</text>
<text x="600" y="835" class="card-text">按改动自动识别部署范围,</text>
<text x="600" y="872" class="card-text">前端-only 改动不重启服务端,</text>
<text x="600" y="909" class="card-text">节省机器和运维成本。</text>
<rect x="1060" y="715" width="460" height="280" rx="20" fill="url(#cardGrad)" stroke="#35598f"/>
<text x="1090" y="785" class="card-title">3. 证据化闭环</text>
<text x="1090" y="835" class="card-text">提测结果、commit、环境链接、</text>
<text x="1090" y="872" class="card-text">验证步骤统一沉淀,</text>
<text x="1090" y="909" class="card-text">最终合并始终人工确认。</text>
<text x="80" y="1090" class="section-title">流程拓扑Issue 到交付)</text>
<rect x="80" y="1125" width="1440" height="220" rx="20" fill="url(#cardGrad)" stroke="#35598f"/>
<rect x="112" y="1170" width="250" height="130" rx="14" fill="#13284b" stroke="#3d639b"/>
<text x="138" y="1223" class="card-title" font-size="26">1. 引导连接</text>
<text x="138" y="1263" class="card-text" font-size="20">repo_url + api_key + mode</text>
<rect x="402" y="1170" width="250" height="130" rx="14" fill="#13284b" stroke="#3d639b"/>
<text x="430" y="1223" class="card-title" font-size="26">2. 质量审计</text>
<text x="430" y="1263" class="card-text" font-size="20">Issue + 图片附件 + 去重评分</text>
<rect x="692" y="1170" width="250" height="130" rx="14" fill="#13284b" stroke="#3d639b"/>
<text x="720" y="1223" class="card-title" font-size="26">3. 分支修复</text>
<text x="720" y="1263" class="card-text" font-size="20">严格在 issue 分支迭代</text>
<rect x="982" y="1170" width="250" height="130" rx="14" fill="#13284b" stroke="#3d639b"/>
<text x="1007" y="1223" class="card-title" font-size="26">4. 按范围部署</text>
<text x="1007" y="1263" class="card-text" font-size="20">skip/client/server/full/infra</text>
<rect x="1272" y="1170" width="216" height="130" rx="14" fill="#13284b" stroke="#3d639b"/>
<text x="1300" y="1223" class="card-title" font-size="26">5. 自动回收</text>
<text x="1300" y="1263" class="card-text" font-size="20">TTL + Close Release</text>
<line x1="362" y1="1235" x2="402" y2="1235" stroke="#58d8ff" stroke-width="4"/>
<line x1="652" y1="1235" x2="692" y2="1235" stroke="#58d8ff" stroke-width="4"/>
<line x1="942" y1="1235" x2="982" y2="1235" stroke="#58d8ff" stroke-width="4"/>
<line x1="1232" y1="1235" x2="1272" y2="1235" stroke="#58d8ff" stroke-width="4"/>
<text x="80" y="1440" class="section-title">一键安装命令Windows / macOS / Linux</text>
<rect x="80" y="1480" width="470" height="300" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
<text x="110" y="1542" class="card-title">Linux</text>
<rect x="110" y="1568" width="410" height="178" rx="12" fill="#091327" stroke="#406aa6"/>
<text x="130" y="1620" class="mono">curl -fsSL https://fun-md.com/Fun_MD/</text>
<text x="130" y="1656" class="mono">devops-skills/raw/branch/main/install/</text>
<text x="130" y="1692" class="mono">install.sh | bash</text>
<rect x="565" y="1480" width="470" height="300" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
<text x="595" y="1542" class="card-title">macOS</text>
<rect x="595" y="1568" width="410" height="178" rx="12" fill="#091327" stroke="#406aa6"/>
<text x="615" y="1620" class="mono">curl -fsSL https://fun-md.com/Fun_MD/</text>
<text x="615" y="1656" class="mono">devops-skills/raw/branch/main/install/</text>
<text x="615" y="1692" class="mono">install.sh | bash</text>
<rect x="1050" y="1480" width="470" height="300" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
<text x="1080" y="1542" class="card-title">Windows PowerShell</text>
<rect x="1080" y="1568" width="410" height="178" rx="12" fill="#091327" stroke="#406aa6"/>
<text x="1100" y="1610" class="mono">powershell -NoProfile -ExecutionPolicy</text>
<text x="1100" y="1646" class="mono">Bypass -Command "iwr -useb https://</text>
<text x="1100" y="1682" class="mono">fun-md.com/Fun_MD/devops-skills/raw/</text>
<text x="1100" y="1718" class="mono">branch/main/install/install.ps1 | iex"</text>
<text x="80" y="1878" class="section-title">核心工具</text>
<rect x="80" y="1915" width="470" height="360" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
<text x="110" y="1976" class="card-title">issue_audit.py</text>
<text x="110" y="2014" class="card-text">拉取 issue / 评论 / 图片附件,去重并评分。</text>
<rect x="110" y="2042" width="410" height="205" rx="12" fill="#091327" stroke="#406aa6"/>
<text x="130" y="2091" class="mono">python .../issue_audit.py --base-url</text>
<text x="130" y="2127" class="mono">https://fun-md.com --repo FunMD/</text>
<text x="130" y="2163" class="mono">document-collab --token &lt;TOKEN&gt;</text>
<text x="130" y="2199" class="mono">--download-attachments</text>
<rect x="565" y="1915" width="470" height="360" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
<text x="595" y="1976" class="card-title">change_scope.py</text>
<text x="595" y="2014" class="card-text">识别部署范围,决定是否重启服务端。</text>
<rect x="595" y="2042" width="410" height="205" rx="12" fill="#091327" stroke="#406aa6"/>
<text x="615" y="2091" class="mono">python .../change_scope.py</text>
<text x="615" y="2127" class="mono">--repo-path . --base-ref origin/main</text>
<text x="615" y="2163" class="mono">--head-ref HEAD</text>
<rect x="1050" y="1915" width="470" height="360" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
<text x="1080" y="1976" class="card-title">preview_slot_allocator.py</text>
<text x="1080" y="2014" class="card-text">分配 / 复用 / 释放预览槽位。</text>
<rect x="1080" y="2042" width="410" height="205" rx="12" fill="#091327" stroke="#406aa6"/>
<text x="1100" y="2091" class="mono">python .../preview_slot_allocator.py</text>
<text x="1100" y="2127" class="mono">--state-file .tmp/preview-slots.json</text>
<text x="1100" y="2163" class="mono">--slots preview-a,preview-b --evict-oldest</text>
<rect x="80" y="2330" width="1440" height="110" rx="18" fill="#0b1730" stroke="#395d96"/>
<text x="120" y="2383" class="label">官网入口: https://fun-md.com/Fun_MD/devops-skills/raw/branch/main/site/index.svg</text>
<text x="120" y="2418" class="label">仓库地址: https://fun-md.com/Fun_MD/devops-skills</text>
</svg>