From bcd5579d2c56eadef62b08c0b690a69d8e7fdfa0 Mon Sep 17 00:00:00 2001
From: jsshin2022 <59598545+jsshin2022@users.noreply.github.com>
Date: Sat, 24 Oct 2026 07:06:30 +0000
Subject: [PATCH 1/2] Add Builder medals, show only joined cohorts, and
highlight academic events
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Roster shows only the cohorts each person took part in, as labeled chips
- Builder medals by cohorts led (Builder, 다시 온, 베테랑, 명예) plus two special
medals (멘토, 러너에서 Builder로); same rules in hub.js and build_builders.py
- Opening a Builder reveals their medal and marks them in the lists behind
- Medal card image to save or share, a medal SVG per Builder, and medals on
Builder pages, badges and share images
- New section and banner line for the 한국경영정보학회 events the team works on,
from data/stages.json, with a medal ladder that leads to speaking slots
---
README.md | 9 +-
assets/css/hub.css | 118 ++++++++++++++-
assets/js/hub.js | 200 +++++++++++++++++++++----
assets/og/builders/bang-taemo.jpg | Bin 55826 -> 55975 bytes
assets/og/builders/cho-haechang.jpg | Bin 58020 -> 57527 bytes
assets/og/builders/choi-seyoung.jpg | Bin 53284 -> 57500 bytes
assets/og/builders/kim-sangwon.jpg | Bin 60939 -> 57203 bytes
assets/og/builders/kim-seongsu.jpg | Bin 56273 -> 61589 bytes
assets/og/builders/kwon-myeongseok.jpg | Bin 57556 -> 56810 bytes
assets/og/builders/kwon-namtaek.jpg | Bin 53314 -> 55930 bytes
assets/og/builders/lee-dongwook.jpg | Bin 56771 -> 67178 bytes
assets/og/builders/park-isak.jpg | Bin 58077 -> 55753 bytes
assets/og/builders/park-sangho.jpg | Bin 60743 -> 67025 bytes
assets/og/builders/shin-jinsoo.jpg | Bin 57281 -> 64172 bytes
data/stages.json | 36 +++++
index.html | 5 +-
scripts/build_builders.py | 62 +++++++-
scripts/builder_cards.py | 18 ++-
scripts/check_data.py | 8 +
19 files changed, 409 insertions(+), 47 deletions(-)
create mode 100644 data/stages.json
diff --git a/README.md b/README.md
index c8a067f..e6e8f54 100644
--- a/README.md
+++ b/README.md
@@ -46,6 +46,7 @@
- **상관일까, 인과일까?:** 데이터 상황 10개를 보고 상관인지 인과인지 고르는 2분짜리 게임입니다. 답마다 관련 웹북 장으로 이어집니다. [게임 하기](https://causalinferencelab.github.io/game.html)
- **완주 카드:** 한 단계의 자료를 모두 학습 완료로 표시하면, 공유할 수 있는 완주 카드 이미지를 만들 수 있습니다.
- **Builder 페이지:** 프로젝트를 연 Builder마다 이력, 만든 레포, 배지를 모은 페이지가 있습니다. [Builder 전체 보기](https://causalinferencelab.github.io/builders/)
+- **Builder 메달:** Builder로 연 기수가 쌓이면 메달이 바뀝니다. 첫 기수는 Builder, 2개 기수는 다시 온 Builder, 3개 기수 이상은 베테랑 Builder, 5개 기수 이상은 명예 Builder입니다. 러너 20명 이상과 함께한 멘토, 러너로 시작해 Builder가 된 사람에게는 특별 메달이 붙습니다. 메달 카드 이미지는 허브에서 바로 만들 수 있습니다.
## 커리큘럼: L0–L4
@@ -65,10 +66,16 @@ L0–L2는 **배우는 단계**로, 무료 자료만으로 끝까지 갈 수 있
팀이 번역한 『[실무로 통하는 인과추론 with 파이썬](https://www.hanbit.co.kr/store/books/look.php?p_code=B6208936856)』(한빛미디어, 2024)과 그 내용을 실무로 잇는 온라인 강의 「[데이터 실무자의 사고력 강화: AI 인과추론 실무](https://www.hanbit.co.kr/product/C0781073345)」가 커리큘럼 L2에 들어 있습니다. 책의 장별 예제 코드와 발표 자료는 무료 레포로 공개되어 있습니다.
-## 행사: Data Forum
+## 행사: Data Forum과 학회 협력
현업과 학계가 만나는 Data Forum을 2024년부터 열고 있습니다. 회차별 내용과 다음 행사 일정은 허브의 행사 섹션에 있습니다.
+한국경영정보학회가 주최하는 학회 행사에도 협력하고 있습니다. 오래 함께한 Builder에게는 이런 학회와 Data Forum에서 발표할 기회가 열립니다.
+
+- [한국 비즈니스 실험 심포지엄 2026](https://sites.google.com/view/business-experimentation2026/home) (2026.07.11, 한국과학기술회관)
+- [한국 비즈니스 실험 심포지엄 2025](https://sites.google.com/view/business-experimentation2025/home) (2025.07.12, 고려대학교 LG-POSCO 경영관)
+- [인과추론 여름 워크숍 2024](https://sites.google.com/view/causal-inference2024/home) (2024.06, 온라인)
+
## 참여하는 방법
1. **러너로 참여:** 가짜연구소 기수 모집 때 인과추론팀 프로젝트에 러너로 들어와 14주 동안 함께 공부하고 만듭니다.
diff --git a/assets/css/hub.css b/assets/css/hub.css
index 0f2aeeb..519d55e 100644
--- a/assets/css/hub.css
+++ b/assets/css/hub.css
@@ -164,6 +164,7 @@ body::before { content: ""; position: fixed; inset: 0 0 auto; height: env(safe-a
.banner-main { display: contents; }
.banner-side { order: 1; width: 100%; margin-top: 22px; }
.partner { order: 2; }
+ .academy { order: 3; }
.banner-mark { width: 72px; height: 72px; display: none; }
.banner-lede br { display: none; }
.banner-cta { gap: 8px; }
@@ -388,12 +389,6 @@ body::before { content: ""; position: fixed; inset: 0 0 auto; height: env(safe-a
@media (max-width: 1000px) { .top3 { grid-template-columns: minmax(0, 1fr); } }
/* cohort strip: one cell per cohort */
-.strip { display: grid; grid-template-columns: repeat(var(--n), 22px); gap: 4px; }
-.sc { box-sizing: border-box; width: 22px; height: 22px; border-radius: 6px; background: var(--surface-2); display: grid; place-items: center; font-size: 10.5px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--on-line); }
-.sc.on { background: var(--c); }
-.sc.on.live { background: transparent; border: 2px dashed var(--c); color: var(--ink); }
-.sc.ran { background: transparent; border: 1.5px solid var(--c); }
-.sh { width: 22px; text-align: center; font-size: 11px; font-variant-numeric: tabular-nums; }
/* sliding rail */
.people-rail { overflow: hidden; margin: 0 0 32px; -webkit-mask-image: linear-gradient(90deg, transparent, #000 20px, #000 calc(100% - 40px), transparent); mask-image: linear-gradient(90deg, transparent, #000 20px, #000 calc(100% - 40px), transparent); }
@@ -418,7 +413,7 @@ body::before { content: ""; position: fixed; inset: 0 0 auto; height: env(safe-a
/* roster */
.roster { background: var(--surface); border: 1px solid var(--rule); border-radius: 16px; overflow: hidden; }
-.ro-head, .ro { display: grid; grid-template-columns: 210px auto minmax(0, 1fr) 96px; gap: 20px; align-items: center; padding: 12px 18px; }
+.ro-head, .ro { display: grid; grid-template-columns: 210px minmax(0, 236px) minmax(0, 1fr) 96px; gap: 20px; align-items: center; padding: 12px 18px; }
.ro-head { font-size: 12px; font-weight: 700; color: var(--muted); padding-block: 10px; border-bottom: 1px solid var(--rule); background: var(--surface-2); }
.ro-list { list-style: none; margin: 0; padding: 0; }
.ro + .ro { border-top: 1px solid var(--rule); }
@@ -445,7 +440,6 @@ body::before { content: ""; position: fixed; inset: 0 0 auto; height: env(safe-a
.ro-total span { font-size: 12px; color: var(--muted); white-space: nowrap; }
.roster-legend { list-style: none; margin: 0 0 10px; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 13px; color: var(--muted); }
.roster-legend li { display: flex; align-items: center; gap: 6px; }
-.roster-legend .sc { width: 14px; height: 14px; border-radius: 4px; }
@media (max-width: 600px) { .rail-head, .people-rail { display: none; } }
@media (max-width: 760px) {
.ro-head { display: none; }
@@ -949,3 +943,111 @@ button.btn.sm { font-size: 14px; }
.back-person { font: inherit; font-size: 13.5px; font-weight: 700; align-self: flex-start; margin: 0 0 8px; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--rule); background: var(--surface-2); color: var(--ink); cursor: pointer; }
.back-person:hover { border-color: var(--ink); }
.back-person:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
+
+/* Cohort chips: only the cohorts a Builder took part in */
+.ro-strip { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px; }
+.cc { display: inline-flex; align-items: baseline; gap: 4px; padding: 3px 8px; border-radius: 7px; font-size: 11.5px; font-weight: 600; line-height: 1.35; white-space: nowrap; font-variant-numeric: tabular-nums; }
+.cc b { font-size: 12.5px; font-weight: 800; }
+.cc i { font-style: normal; font-weight: 800; opacity: .85; }
+.cc.b { background: var(--c); color: var(--on-line); }
+.cc.b.live { background: transparent; color: var(--ink); outline: 1.5px dashed var(--c); outline-offset: -1.5px; }
+.cc.r { background: transparent; color: var(--muted); box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--c) 55%, var(--rule)); }
+.cc.r b { color: var(--ink); }
+.roster-legend .cc { margin-right: 6px; }
+.ro-medal, .pc-medal { display: inline-flex; vertical-align: -4px; margin-left: 6px; }
+.ro-medal .medal, .pc-medal .medal { height: 21px; width: auto; }
+
+/* Medals on the top three cards */
+.t-medals { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 13px; }
+.t-medals > .medal { height: 46px; width: auto; flex-shrink: 0; }
+.t-medals > b { font-size: 14px; font-weight: 800; margin-right: 4px; }
+.t-sp { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 700; color: var(--muted); }
+
+/* Medal ladder: the rules and where they lead */
+.medal-ladder { margin: 0 0 32px; padding: 20px; border-radius: 18px; background: var(--surface); border: 1px solid var(--rule); }
+.ml-head p { font-size: 14px; color: var(--muted); margin-top: 4px; max-width: 52em; }
+.ml-steps { list-style: none; margin: 16px 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
+.ml-step, .ml-step.stage a { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 2px; padding: 12px 8px; border-radius: 14px; background: var(--surface-2); font-size: 12.5px; color: var(--muted); }
+.ml-step:not(:last-child)::after { content: ""; position: absolute; right: -10px; top: 38px; width: 7px; height: 7px; border-top: 2px solid var(--muted); border-right: 2px solid var(--muted); transform: rotate(45deg); opacity: .6; }
+.ml-step b { font-size: 14px; color: var(--ink); }
+.ml-medal { height: 66px; display: grid; place-items: center; margin-bottom: 4px; }
+.ml-medal .medal { height: 64px; width: auto; }
+.ml-n { font-weight: 800; color: var(--ink); font-variant-numeric: tabular-nums; }
+.ml-step.stage { display: block; padding: 0; background: none; }
+.ml-step.stage a { height: 100%; min-height: 100%; box-sizing: border-box; justify-content: center; text-decoration: none; background: #14162B; color: rgba(255, 255, 255, .78); }
+.ml-step.stage a b { color: #FFD54A; }
+.ml-step.stage a:hover { outline: 2px solid #FFD54A; }
+.ml-step.stage a:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
+.ml-special { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; font-size: 13px; color: var(--muted); }
+.ml-special li { display: inline-flex; align-items: center; gap: 6px; }
+.ml-special li.k { font-weight: 800; color: var(--ink); }
+.ml-special b { color: var(--ink); }
+@media (max-width: 760px) {
+ .ml-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
+ .ml-step::after { display: none; }
+ .ml-step.stage { grid-column: 1 / -1; }
+}
+
+/* The person just opened: medal reveal in the dialog, and a mark in the lists behind it */
+.p-award { position: relative; overflow: hidden; display: flex; align-items: center; gap: 16px; padding: 16px 18px; border-radius: 16px; background: linear-gradient(118deg, #23276A, #4A45B5 70%, #6E68BC); color: #fff; }
+.p-award::after { content: ""; position: absolute; top: 0; bottom: 0; left: -40%; width: 30%; background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .28), transparent); transform: skewX(-18deg); animation: award-shine 1.4s .25s ease-out 1 both; pointer-events: none; }
+.p-award-medal { flex-shrink: 0; animation: award-pop .6s cubic-bezier(.2, 1.5, .45, 1) both; filter: drop-shadow(0 8px 14px rgba(0, 0, 0, .3)); }
+.p-award-medal .medal { display: block; height: 104px; width: auto; }
+.p-award-body { display: grid; gap: 4px; min-width: 0; }
+.p-award .k { font-size: 12px; font-weight: 700; color: rgba(255, 255, 255, .72); }
+.p-award .t { font-size: 20px; font-weight: 800; color: #FFD54A; letter-spacing: -.01em; }
+.p-award .d { font-size: 14px; color: rgba(255, 255, 255, .9); }
+.p-award .btn.ghost { justify-self: start; margin-top: 6px; color: #fff; border-color: rgba(255, 255, 255, .45); }
+.p-award .btn.ghost:hover { border-color: #fff; }
+.p-ribbons { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 14px; }
+.p-ribbons li { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: rgba(255, 255, 255, .8); }
+.p-ribbons li > span { display: flex; flex-direction: column; line-height: 1.3; }
+.p-ribbons b { color: #fff; font-size: 13px; }
+@keyframes award-pop { from { transform: scale(.4) rotate(-20deg); opacity: 0; } to { transform: none; opacity: 1; } }
+@keyframes award-shine { to { left: 120%; } }
+@media (max-width: 480px) { .p-award { padding: 14px; gap: 12px; } .p-award-medal .medal { height: 84px; } .p-award .t { font-size: 18px; } }
+.ro.is-picked { background: color-mix(in srgb, var(--c) 9%, var(--surface)); box-shadow: inset 4px 0 0 var(--c); }
+.tcard.is-picked > button, .pcard.is-picked > button { border-color: var(--c); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c) 30%, transparent); }
+
+/* Academic events the team works on */
+.stage { margin-top: 28px; padding: 22px; border-radius: 18px; background: var(--banner); color: #fff; scroll-margin-top: 84px; }
+.stage-k { font-size: 12.5px; font-weight: 800; color: #FFD54A; }
+.stage-head h3 { font-size: 20px; margin-top: 2px; }
+.stage-head p { font-size: 14px; color: rgba(255, 255, 255, .82); margin-top: 4px; max-width: 52em; }
+.stage-list { list-style: none; margin: 16px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
+.stage-list a { display: flex; flex-direction: column; gap: 8px; height: 100%; box-sizing: border-box; padding: 16px; border-radius: 14px; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .18); color: #fff; text-decoration: none; transition: background .15s ease, border-color .15s ease; }
+.stage-list a:hover { background: rgba(255, 255, 255, .16); border-color: rgba(255, 255, 255, .45); }
+.stage-list a:focus-visible { outline: 3px solid #FFD54A; outline-offset: 2px; }
+.sg-year { font-family: var(--f-display); font-weight: 800; font-size: 28px; line-height: 1; letter-spacing: -.02em; }
+.sg-body { display: flex; flex-direction: column; gap: 2px; }
+.sg-body b { font-size: 15.5px; line-height: 1.4; }
+.sg-en { font-size: 12px; color: rgba(255, 255, 255, .66); }
+.sg-about { font-size: 13.5px; color: rgba(255, 255, 255, .88); margin-top: 4px; }
+.sg-when { font-size: 12.5px; color: rgba(255, 255, 255, .7); font-variant-numeric: tabular-nums; }
+.sg-go { margin-top: auto; font-size: 13px; font-weight: 700; color: #FFD54A; }
+.sg-go::after { content: " ↗"; }
+@media (max-width: 860px) { .stage-list { grid-template-columns: minmax(0, 1fr); } .stage { padding: 18px; } }
+
+/* Banner line for the academic partnership */
+.academy { margin: 10px 0 0; max-width: 600px; }
+.academy a { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; padding: 8px 12px; border-radius: 10px; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .2); color: rgba(255, 255, 255, .85); font-size: 12.5px; text-decoration: none; }
+.academy a::after { content: "›"; font-weight: 800; color: #FFD54A; }
+.academy a:hover { background: rgba(255, 255, 255, .16); }
+.academy a:focus-visible { outline: 3px solid #FFD54A; outline-offset: 2px; }
+.academy b { color: #fff; font-weight: 800; }
+
+/* Builder pages: medal in the hero and the medal box */
+.bp-medal { margin-left: auto; flex-shrink: 0; filter: drop-shadow(0 10px 18px rgba(0, 0, 0, .3)); animation: award-pop .6s cubic-bezier(.2, 1.5, .45, 1) both; }
+.bp-medal .medal { display: block; height: 148px; width: auto; }
+.bp-tier { font-size: 12.5px; font-weight: 800; padding: 3px 10px; border-radius: 999px; background: rgba(255, 255, 255, .16); color: #FFD54A; }
+.bp-tier-line { display: flex; align-items: center; gap: 10px; color: var(--ink) !important; }
+.bp-tier-line .medal { height: 52px; width: auto; flex-shrink: 0; }
+.bp-tier-line span { display: flex; flex-direction: column; font-size: 13px; color: var(--muted); }
+.bp-tier-line b { font-size: 16px; color: var(--ink); }
+.bp-medals .p-ribbons li { color: var(--muted); }
+.bp-medals .p-ribbons b { color: var(--ink); }
+.bi-medal { display: inline-flex; vertical-align: -4px; }
+.bi-medal .medal { height: 21px; width: auto; }
+@media (max-width: 640px) { .bp-medal .medal { height: 96px; } .bp-hero { flex-wrap: wrap; } .bp-medal { position: absolute; right: 20px; top: 20px; } .bp-hero { position: relative; } .bp-hero .bp-id { padding-right: 0; } }
+.bp-kicker { flex-wrap: wrap; row-gap: 6px; }
+.bp-kicker .rank-tag, .bp-tier { white-space: nowrap; }
diff --git a/assets/js/hub.js b/assets/js/hub.js
index 7aec156..baf76c5 100644
--- a/assets/js/hub.js
+++ b/assets/js/hub.js
@@ -46,6 +46,7 @@
d.projects.forEach((p) => { p.cohort = int(p.cohort); p.runners = p.runners == null ? null : int(p.runners); });
d.events.forEach((e) => { e.order = int(e.order); e.year = int(e.year); e.participants = e.participants == null ? null : int(e.participants); });
d.routes.forEach((r) => { r.id = tok(r.id); });
+ d.stages.items = (d.stages.items || []).map((x) => ({ ...x, id: tok(x.id), year: int(x.year) }));
d.builders.forEach((b) => { (b.runnerOf || []).forEach((x) => { x.cohort = int(x.cohort); }); });
return d;
}
@@ -72,7 +73,7 @@
/* ---------- data ---------- */
async function load() {
- const names = ["repos", "lines", "levels", "map", "routes", "projects", "events", "articles", "builders", "growth", "stats", "featured", "daily"];
+ const names = ["repos", "lines", "levels", "map", "routes", "projects", "events", "articles", "builders", "growth", "stats", "featured", "daily", "stages"];
const data = await Promise.all(names.map((n) => getJSON(`data/${n}.json`)));
const d = cleanData(Object.fromEntries(names.map((n, i) => [n, data[i]])));
d.repos.forEach((r) => {
@@ -84,7 +85,7 @@
(d.map.paid || []).forEach((p) => state.repos.set(p.id, { repo: p.id, kind: "paid", status: "paid", builders: [], cohorts: [], ...p }));
state.lineList = d.lines;
d.lines.forEach((l) => state.lines.set(l.id, l));
- Object.assign(state, { levels: d.levels, map: d.map, routes: d.routes, projects: d.projects, events: d.events, articles: d.articles, builders: d.builders, growth: d.growth, stats: d.stats, featured: d.featured, daily: d.daily });
+ Object.assign(state, { levels: d.levels, map: d.map, routes: d.routes, projects: d.projects, events: d.events, articles: d.articles, builders: d.builders, growth: d.growth, stats: d.stats, featured: d.featured, daily: d.daily, stages: d.stages });
const pos = new Map(d.map.stations.map((s) => [s.id, s]));
d.lines.forEach((l) => {
@@ -130,6 +131,41 @@
return b.linkedin ? `${esc(name)} ` : esc(name);
}
+ /* ---------- Builder medals ----------
+ One medal for how many cohorts someone has led, plus two special ones. The same rules
+ live in scripts/build_builders.py so the hub, Builder pages and share images agree. */
+ const TIERS = [
+ { id: "honor", min: 5, name: "명예 Builder", rule: "5개 기수 이상", c: ["#9C95E8", "#33378C"], ink: "#FFFFFF" },
+ { id: "gold", min: 3, name: "베테랑 Builder", rule: "3개 기수 이상", c: ["#F8D978", "#B98318"], ink: "#3A2700" },
+ { id: "silver", min: 2, name: "다시 온 Builder", rule: "2개 기수", c: ["#E6EBF1", "#8995A6"], ink: "#1B2230" },
+ { id: "bronze", min: 1, name: "Builder", rule: "첫 기수", c: ["#E3A36A", "#8E5226"], ink: "#FFFFFF" }
+ ];
+ const SPECIALS = [
+ { id: "mentor", name: "멘토", rule: "러너 20명 이상과 함께", c: ["#63D2B1", "#1B7A61"], ink: "#FFFFFF", has: (p) => p.runners >= 20 },
+ { id: "rise", name: "러너에서 Builder로", rule: "러너로 참여한 뒤 Builder가 됨", c: ["#FFAE8C", "#C04F33"], ink: "#FFFFFF", has: (p) => p.runnerOf.some((x) => x.cohort < p.first) }
+ ];
+ const tierOf = (p) => TIERS.find((t) => p.cohorts.length >= t.min);
+ const specialsOf = (p) => SPECIALS.filter((m) => m.has(p));
+ let medalUid = 0;
+ function medalSVG(m, size, n) {
+ const id = `mg${++medalUid}`, h = Math.round(size * (m.min ? 84 / 64 : 1));
+ const grad = ` `;
+ if (m.min) {
+ return `${grad}
+
+
+
+ ${n}
+ 기수 `;
+ }
+ const glyph = m.id === "mentor"
+ ? `20+ `
+ : ` `;
+ return `${grad}
+ ${glyph} `;
+ }
+ const tierMedal = (p, size) => medalSVG(tierOf(p), size, p.cohorts.length);
+
/* ---------- growth ---------- */
function growthSeries() {
const runners = (state.growth.uniqueRunners || []).map((x) => ({ x: `${x.cohort}기`, y: x.cumulative, add: x.new }));
@@ -491,21 +527,34 @@
}
/* One cell per cohort: filled = Builder that cohort (number = runners), ring = joined as a runner. */
- function stripHTML(p, cohorts) {
- const ranAs = new Set(p.runnerOf.map((x) => x.cohort));
- return `${cohorts.map((c) => {
+ /* the cohorts someone took part in, oldest first: filled = led as Builder, outlined = joined as a runner */
+ function stripHTML(p) {
+ const ran = new Set(p.runnerOf.map((x) => x.cohort).filter((c) => !p.byCohort.has(c)));
+ const all = [...new Set([...p.cohorts, ...ran])].sort((a, b) => a - b);
+ const chips = all.map((c) => {
const its = p.byCohort.get(c);
- if (its) {
- const n = its.reduce((s, i) => s + (i.runners || 0), 0);
- const live = its.some((i) => i.live);
- const label = `${c}기 Builder: ${its.map((i) => i.title || i.name).join(", ")}${n ? `, 러너 ${n}명` : ""}${live ? ", 진행 중" : ""}`;
- return `${n || ""} `;
- }
- if (ranAs.has(c)) return ` `;
- return ` `;
- }).join("")} `;
+ if (!its) return `
${c}기 러너 `;
+ const n = its.reduce((s, i) => s + (i.runners || 0), 0);
+ const live = its.some((i) => i.live);
+ const label = `${c}기 Builder: ${its.map((i) => i.title || i.name).join(", ")}${n ? `, 러너 ${n}명` : ""}${live ? ", 진행 중" : ""}`;
+ return `${c}기 ${live ? "진행 중" : n ? `러너 ${n}` : "Builder"}${its.length > 1 ? `· ${its.length}개 ` : ""} `;
+ }).join("");
+ return ``;
+ }
+
+ /* medal rules and the stage they lead to, with how many people hold each */
+ function renderMedalLadder(list) {
+ const box = $("#medal-ladder");
+ if (!box) return;
+ const count = (t) => list.filter((p) => tierOf(p) === t).length;
+ const steps = [...TIERS].reverse().map((t) => `${medalSVG(t, 48, t.min)} ${esc(t.name)} ${esc(t.rule)} ${count(t)}명 `).join("");
+ const sp = SPECIALS.map((m) => `${medalSVG(m, 22)}${esc(m.name)} ${esc(m.rule)} · ${list.filter((p) => m.has(p)).length}명 `).join("");
+ box.innerHTML = `Builder 메달과 다음 무대 Builder로 연 기수가 쌓일수록 메달이 바뀝니다. 오래 함께한 Builder에게는 학회와 Data Forum에서 발표할 기회가 열립니다.
+ ${steps}발표 무대 비즈니스 실험 심포지엄 · Data Forum
+ `;
}
+
function renderContrib() {
const list = builderStats();
state.people = list;
@@ -515,9 +564,10 @@
$("#top3").innerHTML = list.slice(0, 3).map((p) => {
const recent = [...p.items].reverse().slice(0, 2);
- return `
+ return `
${p.rank}
${avatarHTML(p.name, "lg")}${esc(p.name)} ${esc(tenure(p))}
+ ${tierMedal(p, 30)}${esc(tierOf(p).name)} ${specialsOf(p).map((m) => `${medalSVG(m, 22)}${esc(m.name)} `).join("")}
${p.projects} 프로젝트${fmt(p.runners)} 함께한 러너${p.repos.size} 레포
${recent.map((i) => `${i.cohort}기 · ${esc(i.name)} `).join("")}
이력 보기
@@ -527,17 +577,17 @@
const rest = list.slice(3);
const card = (p, copy) => {
const latest = p.items[p.items.length - 1];
- return `${avatarHTML(p.name, "lg")}
- ${esc(p.name)} ${esc(tenure(p))}
+ return `${avatarHTML(p.name, "lg")}
+ ${esc(p.name)}${tierMedal(p, 16)} ${esc(tenure(p))}
프로젝트 ${p.projects} · 러너 ${fmt(p.runners)}
${latest ? `최근 · ${esc(latest.name)} ` : ""} `;
};
$("#people-rail").innerHTML = rest.length ? `${rest.map((p) => card(p, false)).join("")} ${rest.map((p) => card(p, true)).join("")} ` : "";
- const head = `Builder ${cohorts.map((c) => `${c} `).join("")} 최근 프로젝트 합계
`;
- $("#roster").innerHTML = head + `${list.map((p) => `
- ${p.rank} ${avatarHTML(p.name, "sm")}${esc(p.name)} ${esc(stripLabel(p))}
- ${stripHTML(p, cohorts)}
+ const head = `Builder 참여한 기수 최근 프로젝트 합계
`;
+ $("#roster").innerHTML = head + `${list.map((p) => `
+ ${p.rank} ${avatarHTML(p.name, "sm")}${esc(p.name)}${tierMedal(p, 16)} ${esc(tierOf(p).name)}${specialsOf(p).map((m) => ` · ${esc(m.name)}`).join("")}
+ ${stripHTML(p)}
${p.items.slice(-3).reverse().map((i) => `${i.cohort}기 ${i.repo ? `${esc(i.name)} ` : i.link ? `${esc(i.name)} ` : `${esc(i.name)} `}${i.live ? `진행 중 ` : ""} `).join("")}${p.items.length > 3 ? `이전 프로젝트 ${p.items.length - 3}개 더 보기 ` : ""}
러너 ${fmt(p.runners)}명 프로젝트 ${p.projects}개
`).join("")} `;
@@ -546,7 +596,8 @@
const contributors = state.stats.totals && state.stats.totals.contributors;
$("#n-contrib").textContent = list.length; $("#n-contrib").title = `Builder ${list.length}명`;
$("#contrib-sub").textContent = `Builder ${list.length}명이 ${cohorts.length}개 기수 동안 프로젝트 ${state.projects.length}개를 열었습니다.${contributors ? ` GitHub 기여자는 ${fmt(contributors)}명입니다.` : ""}`;
- $("#roster-legend").innerHTML = ` Builder로 연 기수, 숫자는 함께한 러너 수 러너로 참여한 기수 진행 중칸은 왼쪽부터 ${cohorts[0]}기–${cohorts[cohorts.length - 1]}기 `;
+ $("#roster-legend").innerHTML = `8기 러너 6 Builder로 연 기수와 함께한 러너 수7기 러너 러너로 참여한 기수13기 진행 중 지금 진행 중 `;
+ renderMedalLadder(list);
}
/* Three lines a Builder writes after a project; nothing shows until they do. */
@@ -556,11 +607,28 @@
return `회고 ${row("왜 만들었나", r.why)}${row("무엇을 배웠나", r.learned)}${row("다음 사람에게", r.next)} `;
}
+ function awardHTML(p) {
+ const t = tierOf(p), sp = specialsOf(p);
+ const said = `${p.cohorts.length > 1 ? `${p.cohorts.length}개 기수(${p.cohorts.join("·")}기)` : `${p.first}기`}에서 프로젝트 ${p.projects}개를 열고${p.runners ? ` 러너 ${fmt(p.runners)}명과 함께했습니다.` : " 첫 러너를 기다리고 있습니다."}`;
+ return `
+ ${tierMedal(p, 84)}
+ Builder 메달
${esc(t.name)} ${esc(said)}
+ ${sp.length ? `
${sp.map((m) => `${medalSVG(m, 26)}${esc(m.name)} ${esc(m.rule)} `).join("")} ` : ""}
+
메달 카드 만들기
+ `;
+ }
+ /* the person just opened stays marked in the lists behind the dialog */
+ function markPerson(name) {
+ document.querySelectorAll("[data-person-row].is-picked").forEach((el) => el.classList.remove("is-picked"));
+ document.querySelectorAll("[data-person-row]").forEach((el) => { if (el.dataset.personRow === name) el.classList.add("is-picked"); });
+ }
+
function openPerson(name, source) {
const p = (state.people || []).find((x) => x.name === name);
if (!p) return;
const info = builderInfo(name);
state.lastPerson = name;
+ markPerson(name);
track("open_builder", { builder: info.slug || name, source: source || "hub" });
if (window.hubSeen) window.hubSeen("builders", info.slug || name, 3, "builder");
const runnerItems = p.runnerOf.map((x) => {
@@ -583,6 +651,7 @@
${p.rank <= 3 ? `Top ${p.rank} ` : ""} ${esc(tenure(p))}
${avatarHTML(p.name, "lg")}
${esc(p.name)} ${info.linkedin ? `
LinkedIn ` : ""}
+ ${awardHTML(p)}
${info.slug ? `
` : ""}
${info.intro ? `
${esc(info.intro)}
` : ""}
${p.projects} 프로젝트${p.cohorts.length} 기수${fmt(p.runners)} 함께한 러너${repos.length} 레포
@@ -723,6 +792,21 @@
}
/* ---------- events ---------- */
+ /* academic events the team works on with 한국경영정보학회 */
+ function renderStages() {
+ const st = state.stages, box = $("#stage");
+ if (!st || !box || !st.items.length) return;
+ const evp = (x, placement) => esc(JSON.stringify({ conference: x.id, placement }));
+ box.innerHTML = `
With ${esc(st.host)}
학회와 함께 여는 무대 ${esc(st.note)}
+
${st.items.map((x) => `
+ ${x.year} ${esc(x.name)} ${esc(x.en)} ${esc(x.about)} ${esc(x.when)} · ${esc(x.place)} 행사 사이트 `).join("")} `;
+ const hl = $("#academy");
+ if (hl) {
+ const years = (re) => st.items.filter((x) => re.test(x.id)).map((x) => x.year).sort().join("·");
+ hl.innerHTML = `
With ${esc(st.host)} 비즈니스 실험 심포지엄 ${years(/^kbes/)} · 인과추론 여름 워크숍 ${years(/^kswci/)} `;
+ }
+ }
+
function renderEvents() {
const list = [...state.events].sort((a, b) => (b.upcoming ? 1 : 0) - (a.upcoming ? 1 : 0) || b.order - a.order);
const max = Math.max(...list.map((e) => e.participants || 0)) || 1;
@@ -1003,6 +1087,67 @@
const mark = $(".banner-mark");
if (mark && mark.complete && mark.naturalWidth) c.drawImage(mark, W - 300, 70, 210, 210);
}
+ function drawMedal(c, cx, cy, r, m, n) {
+ const g = c.createLinearGradient(cx - r, cy - r, cx + r, cy + r);
+ g.addColorStop(0, m.c[0]); g.addColorStop(1, m.c[1]);
+ if (m.min) {
+ const k = r / 26, top = cy - 56 * k, x = (v) => cx + (v - 32) * k, y = (v) => top + v * k;
+ c.fillStyle = "#2A2E7A"; c.beginPath(); c.moveTo(x(15), y(0)); c.lineTo(x(30), y(0)); c.lineTo(x(38), y(32)); c.lineTo(x(23), y(32)); c.fill();
+ c.fillStyle = "#A9A4F5"; c.beginPath(); c.moveTo(x(49), y(0)); c.lineTo(x(34), y(0)); c.lineTo(x(26), y(32)); c.lineTo(x(41), y(32)); c.fill();
+ }
+ c.fillStyle = g; c.beginPath(); c.arc(cx, cy, r, 0, Math.PI * 2); c.fill();
+ c.strokeStyle = "rgba(255,255,255,.6)"; c.lineWidth = r * 0.06; c.beginPath(); c.arc(cx, cy, r * 0.79, 0, Math.PI * 2); c.stroke();
+ c.fillStyle = "rgba(255,255,255,.28)"; c.beginPath(); c.ellipse(cx - r * 0.35, cy - r * 0.45, r * 0.35, r * 0.19, -0.5, 0, Math.PI * 2); c.fill();
+ if (!m.min) return;
+ c.fillStyle = m.ink; c.textAlign = "center";
+ c.font = `800 ${Math.round(r * 0.72)}px "Pretendard Variable", Pretendard, sans-serif`; c.fillText(String(n), cx, cy + r * 0.2);
+ c.font = `700 ${Math.round(r * 0.28)}px "Pretendard Variable", Pretendard, sans-serif`; c.fillText("기수", cx, cy + r * 0.6);
+ c.textAlign = "left";
+ }
+ function drawMedalCard(canvas, p) {
+ const W = 1200, H = 630, c = canvas.getContext("2d"), t = tierOf(p), sp = specialsOf(p), info = builderInfo(p.name);
+ canvas.width = W; canvas.height = H;
+ const g = c.createLinearGradient(0, 0, W, H);
+ g.addColorStop(0, "#1C1F57"); g.addColorStop(0.55, "#333689"); g.addColorStop(1, "#6E68BC");
+ c.fillStyle = g; c.fillRect(0, 0, W, H);
+ const glow = c.createRadialGradient(930, 300, 0, 930, 300, 360);
+ glow.addColorStop(0, "rgba(255,255,255,.22)"); glow.addColorStop(1, "rgba(255,255,255,0)");
+ c.fillStyle = glow; c.fillRect(0, 0, W, H);
+ const font = (w, px) => `${w} ${px}px "Pretendard Variable", Pretendard, "Apple SD Gothic Neo", "Noto Sans KR", sans-serif`;
+ c.fillStyle = "rgba(255,255,255,.82)"; c.font = font(600, 26); c.fillText("Causal Inference Hub Builder · 가짜연구소 인과추론팀", 80, 104);
+ c.fillStyle = "#FFD54A"; c.font = font(800, 34); c.fillText(t.name, 80, 186);
+ c.fillStyle = "#fff"; c.font = font(800, 96); c.fillText(p.name, 80, 292);
+ c.fillStyle = "rgba(255,255,255,.88)"; c.font = font(600, 30);
+ c.fillText(`${tenure(p)}`, 80, 352);
+ c.fillText(`프로젝트 ${p.projects}개 · 함께한 러너 ${fmt(p.runners)}명`, 80, 398);
+ sp.forEach((m, i) => {
+ const x = 80 + i * 300, y = 470;
+ drawMedal(c, x + 22, y, 22, m);
+ c.fillStyle = m.ink; c.font = font(800, 15); c.textAlign = "center"; c.fillText(m.id === "mentor" ? "20+" : "↑", x + 22, y + 6); c.textAlign = "left";
+ c.fillStyle = "#fff"; c.font = font(700, 24); c.fillText(m.name, x + 56, y + 9);
+ });
+ c.fillStyle = "rgba(255,255,255,.7)"; c.font = font(500, 22);
+ c.fillText(`causalinferencelab.github.io/builders/${info.slug || ""}`, 80, H - 56);
+ drawMedal(c, 930, 330, 150, t, p.cohorts.length);
+ }
+ async function openMedalCard(name) {
+ const p = (state.people || []).find((x) => x.name === name);
+ if (!p) return;
+ const info = builderInfo(name);
+ track("medal_card_open", { builder: info.slug || name, tier: tierOf(p).id });
+ $("#station-body").innerHTML = `
+
${icons.close}
+
+
‹ ${esc(p.name)} 이력으로
+
${esc(p.name)} · ${esc(tierOf(p).name)} 메달 카드
+
+
링크드인이나 블로그, 발표 자료에 올려 보세요. Builder 페이지 링크를 함께 붙이면 이력이 바로 열립니다.
+
${navigator.canShare ? "이미지 저장·공유" : "이미지 저장"} ${info.slug ? `Builder 페이지 링크 복사 ` : ""}
+
`;
+ showDialog();
+ try { if (document.fonts) await document.fonts.load('800 96px "Pretendard Variable"'); } catch (e) { /* draw with fallback fonts */ }
+ drawMedalCard($("#station-body .card-canvas"), p);
+ }
async function openCard(levelId) {
const lv = state.levels.find((l) => l.id === levelId);
if (!lv || !levelDone(levelId)) return;
@@ -1027,19 +1172,20 @@
function saveCard(levelId) {
const canvas = $("#station-body .card-canvas");
if (!canvas) return;
- const name = `causal-inference-hub-${levelId}.png`;
+ const medal = levelId.startsWith("medal:"), content = medal ? "medal_card" : "finish_card";
+ const name = medal ? `causal-inference-hub-builder-${levelId.slice(6)}.png` : `causal-inference-hub-${levelId}.png`;
canvas.toBlob(async (blob) => {
if (!blob) return;
const file = typeof File === "function" ? new File([blob], name, { type: "image/png" }) : null;
/* phones: hand the image to the share sheet; elsewhere download it */
if (file && navigator.canShare && navigator.canShare({ files: [file] })) {
- try { await navigator.share({ files: [file], title: "Causal Inference Hub 완주 카드" }); track("share", { content: "finish_card", method: "share_sheet" }); return; } catch (e) { if (e && e.name === "AbortError") return; }
+ try { await navigator.share({ files: [file], title: medal ? "Causal Inference Hub Builder 메달" : "Causal Inference Hub 완주 카드" }); track("share", { content, method: "share_sheet" }); return; } catch (e) { if (e && e.name === "AbortError") return; }
}
const a = document.createElement("a");
a.download = name; a.href = URL.createObjectURL(blob);
document.body.appendChild(a); a.click(); a.remove();
setTimeout(() => URL.revokeObjectURL(a.href), 4000);
- track("share", { content: "finish_card", method: "download" });
+ track("share", { content, method: "download" });
}, "image/png");
}
@@ -1161,6 +1307,8 @@
if (card) { openCard(card.dataset.card); return; }
const nl = e.target.closest("[data-next-level]");
if (nl) { closeStation(); gotoLevel(nl.dataset.nextLevel); return; }
+ const mc = e.target.closest("[data-medal-card]");
+ if (mc) { openMedalCard(mc.dataset.medalCard); return; }
const dl = e.target.closest("[data-card-save]");
if (dl) { saveCard(dl.dataset.cardSave); return; }
const ride = e.target.closest("[data-ride]");
@@ -1239,7 +1387,7 @@
$("#shelf").addEventListener("scroll", shelfSpy, { passive: true });
renderContrib();
renderLegend(); renderMap(); wireTabs();
- renderFeatured(); renderPartner(); renderEvents(); renderArticles(); renderDaily();
+ renderFeatured(); renderPartner(); renderEvents(); renderStages(); renderArticles(); renderDaily();
if (location.hash === "#contrib") { selectTab("tab-contrib"); requestAnimationFrame(() => $("#curriculum").scrollIntoView()); }
openFromHash();
if (location.hash === "#start" || new URLSearchParams(location.search).has("quiz")) openQuiz();
diff --git a/assets/og/builders/bang-taemo.jpg b/assets/og/builders/bang-taemo.jpg
index f9a0b5397d5ba5c9763467369a9d9e6868a0b129..0107f1f935de7dcfab7c22bdadd11653fc965212 100644
GIT binary patch
literal 55975
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