| name | aggregate-dashboard |
| description | Use when computing Code Complete study-level aggregates โ verdict distribution across chapters, voting averages per chapter and per member, highest/lowest rated chapters, best discussion curation, Devil's Advocate collection, member activity counts. Also use when regenerating the /appendix dashboard after new chapter YAMLs arrive. |
aggregate-dashboard
Overview
๊ฐ ์ฑํฐ YAML ์์ ํฉ๋ฟ๋ ค์ง ํ์ /ํฌํ/๋ฒ ์คํธ ํ ๋ก ์ ํ ๋ฐ ๋ชจ์ ์คํฐ๋ ์ ์ฒด ๋์๋ณด๋๋ฅผ ๋ง๋ ๋ค. ์๋ณธ YAML์ read-only. ๊ฒฐ๊ณผ๋ _workspace/appendix/dashboard.yml ํ๋.
When to Use
- ์ ์ฑํฐ YAML์ด ์ถ๊ฐ/์์ ๋ ํ ๋์๋ณด๋ ๊ฐฑ์
- ์ฌ์ฉ์๊ฐ "๋ถ๋ก๋ง ๋ค์" / "๋์๋ณด๋ ๋ค์" ์์ฒญ
- ์คํฐ๋ ์งํ ํํฉ ๋ฆฌํฌํธ๊ฐ ํ์ํ ๋
์ง๊ณ ๊ณต์
verdict_distribution
alive = count(ai_assist.verdict.rating == "๐ข ์์กด")
evolved = count(... == "๐ก ๋ณํ")
dead = count(... == "๐ด ์ฌ๋ง")
other = count(null OR ์ 3์ข
์ธ)
voting_summary.overall_average
๋ชจ๋ ์ฑํฐ, ๋ชจ๋ ๋ฉค๋ฒ์ votes ๊ฐ (1~5 ์ ์) ํ๊ท
null ํฌํ๋ ๋ถ์/๋ถ๋ชจ์์ ๋ชจ๋ ์ ์ธ
์์์ 1์๋ฆฌ๊น์ง
voting_summary.per_chapter[chXX]
ํด๋น ์ฑํฐ์ votes.* ์ค null ์๋ ๊ฐ๋ค์ ์ฐ์ ํ๊ท
์ ์ null์ด๋ฉด null (ํ๊ท ๊ณ์ฐ ๋ถ๊ฐ)
voting_summary.per_member[name]
ํด๋น ๋ฉค๋ฒ๊ฐ ์ ์ถํ ๋ชจ๋ ์ฑํฐ votes์ ํ๊ท
highest_rated / lowest_rated (TOP 3)
per_chapter ํ๊ท ๊ธฐ์ค ๋ด๋ฆผ์ฐจ์ / ์ค๋ฆ์ฐจ์ ๊ฐ 3๊ฐ
๋์ ์ chapter_number ์ค๋ฆ์ฐจ์ tiebreak
null ์ฑํฐ๋ lowest์ ํฌํจํ์ง ์์
best_discussions
human_only.best_pick.content๊ฐ null ์๋ ๋ชจ๋ ์ฑํฐ ์์ง
content, reason ์๋ฌธ ์ธ์ฉ
devils_advocates
human_only.devils_advocate๊ฐ null ์๋ ๋ชจ๋ ์ฑํฐ ์์ง
author, argument ์๋ฌธ ์ธ์ฉ
member_activity[name]
opinions_count = ์ด ๋ฉค๋ฒ๊ฐ opinion ์์ฑํ ์ฑํฐ ์ (opinion != null)
devils_advocate_count = ์ด ๋ฉค๋ฒ๊ฐ ๋ฐ๋ฐ ๋ด๋นํ ์ฑํฐ ์
votes_submitted = ์ด ๋ฉค๋ฒ์ votes.name != null ์ธ ์ฑํฐ ์
์ฃ์ง ์ผ์ด์ค
| ์ํฉ | ์ฒ๋ฆฌ |
|---|
| ์
๋ ฅ YAML 0๊ฐ | ๋น dashboard.yml ์์ฑ (chapters_included: 0), exit 0 |
| YAML ์คํค๋ง ์๋ฐ | ํด๋น ์ฑํฐ๋ง skip + chapters_skipped: [ch03] ํ๋์ ๊ธฐ๋ก |
| ์ ์ ๋ฏธ์๋ต ์ฑํฐ | per_chapter[chXX]: null, overall_average ๊ณ์ฐ์์ ์ ์ธ |
| ํ์ ์ด ์ด๋ชจ์ง๊ฐ ์๋ ํ
์คํธ๋ง ("์์กด") | other์ ์นด์ดํธ + ๊ฒฝ๊ณ ๋ก๊ทธ |
| best_pick.content ์กด์ฌํ์ง๋ง reason null | ํฌํจ์ ํ๋ reason ๋น ๋ฌธ์์ด |
์ถ๋ ฅ ์คํค๋ง
generated_at: 2026-04-18T23:00:00+09:00
chapters_included: 8
chapters_skipped: []
members_count: 7
verdict_distribution:
alive: 5
evolved: 2
dead: 1
other: 0
voting_summary:
overall_average: 3.8
per_chapter:
ch01: 4.2
ch02: 3.5
ch03: null
per_member:
Alice: 3.9
Amber: 4.1
Crong: 3.5
diego: 4.3
Jay: 3.7
Leo: 3.8
zinii: 3.4
highest_rated:
- { chapter: 5, title: "...", average: 4.7, verdict: "๐ข ์์กด" }
lowest_rated:
- { chapter: 6, title: "...", average: 2.1, verdict: "๐ด ์ฌ๋ง" }
best_discussions:
- chapter: 5
content: "(์๋ฌธ ์ธ์ฉ)"
reason: "(์๋ฌธ ์ธ์ฉ)"
devils_advocates:
- chapter: 5
author: diego
argument: "(์๋ฌธ ์ธ์ฉ)"
member_activity:
Alice: { opinions_count: 8, devils_advocate_count: 1, votes_submitted: 8 }
๋ฉฑ๋ฑ์ฑ
๋์ผ ์
๋ ฅ set์ ๋ํด generated_at ์ธ ๋ชจ๋ ํ๋ identical. ๋ค๋ฅธ ๊ฒฐ๊ณผ ๋์ค๋ฉด ๋ฒ๊ทธ.
Common Mistakes
| ์ค์ | ๊ฒฐ๊ณผ | ์์ |
|---|
| null ํฌํ๋ฅผ 0์ผ๋ก ์นํ | ํ๊ท ์๊ณก | null์ ๋ถ๋ชจ์์๋ ์ ์ธ |
| best_pick ์์ฝ/์ฌํํ | Human-only ์นจ๋ฒ | ์๋ฌธ ๊ทธ๋๋ก ๋ณต์ฌ |
| ํ์ fuzzy ๋งค์นญ ("์์กด" ํฌํจ ๋ชจ๋ alive) | ์ค๋ถ๋ฅ | ์ ํํ "๐ข ์์กด" ๋ฌธ์์ด ๋งค์น |