{idx+1} / {steps.length}
{/* dots */}
{steps.map((s,i)=>(
step {String(idx+1).padStart(2,"0")}
{step.title}
{step.subtitle}
{step.desc}
);
}
// === Header ===
function Header(){
return (
{/* Full-width architecture diagram */}
架构流程图 · ARCHITECTURE
{
const i = steps.findIndex(s=>s.id===id);
if (i>=0) setIdx(i);
}}/>
{/* Inline Tweaks bar — lives right under the architecture, above the grid */}
{/* Main grid */}
{/* Left column: graph view + loss */}
示例图 · 20 节点 / 4 簇 / 异质
iter {iter%(tweaks.topLayers+1)} / {tweaks.topLayers}
kmeans 准确率 {(dgac.accKm*100).toFixed(1)}%
C-prop 后 {(dgac.accFinal*100).toFixed(1)}%
Δ = +{((dgac.accFinal-dgac.accKm)*100).toFixed(1)} pp
{/* Right column: formulas */}
{/* Scrubber full width */}
);
}
ReactDOM.createRoot(document.getElementById("root")).render(