radiation-calc — RadCalc
radiation-lab.com 우산의 셋째 lab. 방사선 실무 계산기 묶음이고 /calc/ 에 산다.
★ 위 배지는 개념 DOI 다 — 항상 최신 판본을 가리키므로 릴리스를 내도 낡지 않는다.
판본 DOI(릴리스마다 새로 발급)는 배지에 쓰지 않는다. 화면 정본은 brand.ts 의 DOI,
발급 절차와 밟은 함정은 docs/zenodo.md 4절.
우산 정본은 aijhmin1031-eng/radiation-lab, 절차는 radiation-meter-tester/docs/umbrella-setup.md.
★★★ 공통 셸 v3 — 머리글 · 꼬리말을 radiation-lab/public/shell 정본으로 (2026-10-28, T2)
계기. 소유주 「radiation-lab.com 이 사이트가 하나의 사이트처럼 보이게 해줘야 해. 지금 탑재된 pro 기능들이 별도로 구축된 것들이
있어 다른 사이트처럼 보이는 경향이 있어」. 네 오리진 17쪽 실측(우산 README 2026-10-28 절)에서 「Radiation Lab /」 글자 말고는 글꼴 ·
배경 · 메뉴 · 꼬리말 · 로그인 입구가 제각각이었다. 이 lab 은 우산과 apex 를 같이 쓰므로 막대가 한 픽셀도 달라선 안 되는데, 그것을
SiteHeader.astro 가 우산 .hd/.tm 과 같은 모양을 제 CSS(.shdr-* · .tmenu-*)로 다시 그려 지키고 있었다 — 2026-09-16 절
「레포가 셋이라 공유 모듈을 둘 수 없다 — 같은 숫자를 세 곳에 적는다」의 사본 셋 중 하나. 인용하던 정본 C:\dev\rl\HEADER-SPEC.md 는
이 PC 에 없다. 설계 · 결정 기록: D:\Files\_작업\20261028_radiation-lab 사이트 개편\20261028_1240_…_공통 셸 명세·결정 기록·작업 분해_설계안.md §3.9 · §4 B행.
정본은 우산 public/shell/ (shell.json · render.mjs · shell.css · shell.js · fonts/ — https://radiation-lab.com/shell/, 2026-10-28 배포).
이 저장소는 그 사본 shell/ 을 든다 — npm run sync-shell(scripts/sync-shell.mjs)이 apex 에서 받아 온다(받은 것이 셸인지 검사한 뒤
쓴다 · 네트워크가 안 되면 사본을 두고 경고 · --from=<dir> 로 로컬 체크아웃 복사). 사본은 손으로 고치지 않는다 — 고칠 것은 우산에
고치고 다시 받는다. 빌드는 shell.json · render.mjs 만 쓴다(네트워크 없이 재현 가능); shell.css · shell.js · fonts 는 라이브에서 우산 Worker 가
내주고, 사본은 게이트의 로컬 서버만 쓴다.
| 자리 | 전 | 후 |
|---|---|---|
머리글 components/brand/SiteHeader.astro |
마크업 60행 + CSS 75행 + 메뉴 스크립트 — 우산과 같은 숫자를 손으로 | renderHeader(spec, { section: "calc", currentHref, apex: true }) 출력(set:html). 「현재」는 lib/shell-page.mjs 의 currentHrefFor — 구역 셋(/calc/nuclides/ · /calc/methods/ · /calc/validation/)은 뿌리를 넘겨 낱장에서도 켜지고(옛 startsWith 와 같은 뜻), 도구 쪽은 제 주소(Calculators 패널이 지금 도구를 표시). apex: true 라 apex 링크가 /calc/… 루트 상대 — check-output ② 그대로 |
| 테마 단추 · 계정 칩 | ThemeToggle.astro(저장 · aria-pressed 스크립트) · AccountChip.astro(data-who + ::after)를 머리글 슬롯에 |
머리글 출력의 #thm · #acct — 동작은 /shell/shell.js(테마 저장 모양 {"state":{"mode","resolved"},"version":0} 그대로). 두 컴포넌트 삭제. 계정 상태(data-acct · data-acct-who, SB_REF)는 그대로 Base.astro 의 부팅 스크립트 |
| 그리기 전 테마 스크립트 | 저장된 선택이 있을 때만 data-theme |
우산과 같은 것(renderHeadAssets(…, { withThemeBoot: true })): 저장이 없으면 OS 설정을 읽어 항상 세운다. 옛 방식은 shell.js 의 단추와 해·달 그림이 data-theme 만 보므로 OS 다크 + 저장 없음에서 해가 보이고 첫 클릭이 「다크 → 다크」가 됐다 |
꼬리말 Base.astro |
도구 여덟 · Data sources · 면책 · Platform documents(링크 7) | renderFooter(…) 출력 — 공유 줄 + About the site / Radiation Lab / Legal + 한 줄. 도구 여덟 · 출처 · 면책은 꼬리말 위의 aside.site-notes 로(<main> 밖 — 어수 검사가 둔해지지 않게; 도구 링크는 <nav> 라 check-notes 가 세지 않는다). Platform documents 일곱은 공통 열이 전부 든다 — 잃은 링크 0(내부 링크 4,036개 · 죽은 주소 0) |
공유 줄 ShareRow.astro(본문 끝) |
다섯 단추 + 복사 스크립트 | 삭제 — 공통 꼬리말 첫 줄이 같은 다섯이다(두 벌 금지). share={false}(저장 목록)와 404 는 이 쪽 대신 apex 홈을 권한다(shareFor, 우산 404 와 같은 처방) |
색 토큰 styles/global.css 12–63행 |
--c-* 라이트 · 다크 두 블록(+ color-scheme) |
삭제 — /shell/shell.css 가 같은 이름 · 값을 준다. Tailwind rgb(var(--c-x) / <alpha>) 그대로. 실측: --c-paper 232 234 230 / 18 21 23, body 배경 같은 값 |
| head | 테마 스크립트 | /shell/shell.css?v=1 · /shell/shell.js?v=1(defer) — 같은 오리진의 루트 상대, 제3자 요청 0 |
압축 고정 바 #topbar |
그대로(이번 범위 밖) | |
HEADER-SPEC.md 인용 주석 |
SiteHeader · check-platform · check-lockup · lucide.ts · tools.ts · brand.ts | radiation-lab/public/shell/ (HEADER-SPEC v3) |
실측(Playwright, dist/calc + 우산 public/shell, 4쪽 × 1280/390 × 라이트/다크 = 16, D:\Files\_작업\20261028_radiation-lab 사이트 개편\T2_캡처\실측.md):
머리글 56px(1280) · 90px(390) 16/16, 가로 넘침 0, JS · HTTP 오류 0, shell.css 200 · 적용, shell.js 동작(aria-pressed 선다), data-theme light/dark, 「현재」 Nuclide data · Methods(390 에서 Nuclides).
게이트
check-shell(신설, 체인 2번째, 정적 · 우산 것을 본뜸) — 산출물 101쪽 전부:header.site·footer.site가 같은 호출의 render.mjs 출력과 바이트 동일(머리글 10,247자 · 꼬리말 2,870자 — Astro 의compressHTML이set:html을 건드리지 않는다는 것이 이것으로 확인됐다) · 꼬리말이 권하는 주소가 canonical 이고 글이<title>과 같다(홈을 권하는 쪽은 noindex 둘뿐) · head?v== shell.json version · 그리기 전 테마 스크립트 · 인라인 +_astroCSS/JS 에 옛 사본(--c-paper:·.shdr-·.tmenu-·.rmt-theme· 테마를 쓰는 스크립트 · 옛 컴포넌트 표식) 0 · aside 도구 8 · 출처 · 면책 · shell.json 절대 주소 53개 · 옆에 우산 체크아웃이 있으면 사본 대조(경고만 — CI 에는 우산이 없다).package.json의gate와ci.yml두 자리에 적었다(check-gates ② 확인). · 잡은 것: 처음<title>의'를 안 되돌려/validation/mda/(MARSSIM's) 하나가 빨갰다 — 엔터티 되돌리기를 숫자 엔터티까지로.- 게이트 로컬 서버 11곳에
/shell/*을 더했다(gate/shell-assets.mjs—SHELL_DIR환경변수 → 없으면 vendoredshell/). 없으면 check-render 가 전 쪽 「HTTP 404」, 다른 게이트는 벗은 쪽(토큰 · 막대 CSS 없음)을 잰다. CI 에는 우산이 없으므로 사본이 기본값 — 그래서 sync-shell 이 css · js · fonts 도 받는다(산출물에는 안 들어간다). - 고친 것:
check-lockup[data-site-header]→header.site[data-shell](옛 표식은 「옛 막대」로 센다) ·check-header선택자(#thm·.thm-sun/.thm-moon·#acct·#acct-who글자) + 칩은 늘 있다(셸의 일부 — 환경변수 없는 빌드는 상태 검사만 생략) ·check-save「켜짐」을 머리글 링크가 아니라 빌드의SB_REF로 읽고, 꺼진 빌드는 칩 밖의 저장 링크 0 을 요구 ·check-sticky⑥ 머리글positionstatic 또는 relative(shell.css 가relative; z-index:40을 준다 — 흐름 안이면 된다) ·check-output허용 목록에/shell/shell.css·/shell/shell.js·check-gates·check-adsense의 Windows 경로(E:\E:\…)를fileURLToPath로(CI 에는 차이 없음 — 로컬에서 돌리려고). - 로컬 결과 2026-10-28(Windows · PW_CHROMIUM · 환경변수 없는 빌드 = CI 와 같은 상태): check-gates · check-shell · check-output · check-render · check-lockup · check-inputs · check-save · check-sticky · check-header · check-platform(치수 · 색 · 메뉴 동작 — 한 픽셀도 안 움직였다) · check-a11y · check-nuclides · check-notes · check-progeny · check-og · check-lastmod · check-adsense · check-validation 전부 통과.
tsc·astro check0 오류(.mjs의 서명은shell/render.d.mts— 이 파일만 사본이 아니라 이 저장소 것). - 계정 켜진 빌드도 따로 확인했다(가짜 Supabase 값으로 빌드 — 커밋 아님): check-header 로그아웃 「Sign in」 · 로그인 이름 「알토리」 · 「Sign in」 숨김 · 전환 light→dark 저장, 1280/390 · check-save 「켜짐」(머리글 · 우측 레일 2곳 · 조작부 있음) · check-shell 그대로. 두 상태 모두 초록이다.
못 보는 것 · 다음
- v2(같은 날 오후) — 위 정본 변경 요청 둘이 우산에 반영돼 사본을 v2 로 받았다(
npm run sync-shell -- --from=…, 라이브 배포 뒤 네트워크 사본과 바이트 동일 확인 · 쪽?v=2). ① 띠 다섯(.hd·.tm·.ft·.crumbs·.back)의 좌우 여백이 토큰--rl-gutter(32px, 셸 중단점 600px 아래 20px)가 됐고, 이 lab 의 본문 경계는 640px(px-5/sm:px-8)이라global.css가 600.02–639.98px 에서 20px 로 덮어쓴다. 실측(T2_캡처실측_600-640_여백.md, 3쪽 × 599/600/601/620/639/640/641/1280px): 머리글.hd안쪽 왼끝 =main안쪽 왼끝 = 꼬리말.ft안쪽 왼끝 — 600–639 에서 20 = 20, 640 부터 32 = 32, 1280 에서 148 = 148, 전 폭 넘침 0. ② render.mjs 에 JSDoc typedef·@param 이 붙어astro check가 0 오류로 통과 → 이 저장소의shell/render.d.mts는 지웠다(사본 폴더에 사본 아닌 파일을 두지 않는다). sync-shell 의--from은 글자 파일을 LF 로 맞춘다(Windows 체크아웃은 CRLF — apex · git 과 같은 바이트가 되게). v2 빌드로npm run gate전체(18개)를 다시 돌렸다 — 결과는 위 「로컬 결과」 줄과 같다(전부 통과). .tm패널(z 50, 머리글의 z 40 안)과#topbar(fixed z 40, DOM 뒤) — 메뉴를 연 채 스크롤해 바가 뜨면 바가 패널 위에 선다. 메뉴는 머리글과 함께 흘러가므로 겹치는 구간은 짧다. 실측 결함 아님.- 글꼴: shell.css 의 Saira 는 묶음 제목 · 꼬리말 열 제목 · 건너뛰기만 쓴다(막대 글자는
--body= system-ui). 이 lab 의 본문은 그대로 Tailwind sans. - 사본
shell/이 정본보다 뒤처지는 것은 check-shell ⑧ 이 옆에 우산이 있을 때만 경고한다. 정본의version이 오르면 각 저장소가npm run sync-shell→ 빌드 → 커밋해야 한다(자동이 아니다). - 하위 도메인 셋(T3 Field Pro · T4 RadiMeter · T5 M-Phreefiteq)은 각자 같은 방식으로 받는다 — 이 저장소의
scripts/sync-shell.mjs·gate/shell-assets.mjs·gate/check-shell.mjs를 본뜨면 된다.
★★★ 계산기 하나, 도구 일곱 — 머리글 한 줄 · 허브는 apex 홈 · 이름은 「Radiation Lab」 (2026-10-06 ⑥)
소유주: 「여기 상단에 놓아두는 2가지 영역이 다르네… 하나의 계산기 안에 다양한 도구가 들어있는 형태로 구성해보자.
구조를 다시 잘 잡아봐」 → 시안(머리글 한 줄 · Tools 메뉴 · 홈의 도구 묶음 · 도구 쪽 왼쪽 목록) 승인 「고」.
정본 명세는 C:\dev\rl\HEADER-SPEC.md(네 레포 공통). 우산 쪽 짝은 radiation-lab ab49970.
★ 무엇이 문제였나 — 머리글이 두 막대였다. 위는 분야 칸 셋(Dose & shielding · Instrument testing · Disposal & transport)이
세 사이트를, 아래는 RadCalc + Calculators · Nuclides · Methods 가 한 사이트 안의 쪽을 가리켰다. 같은 모양의 칸이 다른
층을 말했고, 화면에 이름이 둘(Radiation Lab · RadCalc) 섰다. apex 가 RadCalc 하나가 된 뒤(⑤)로는 위 막대의 첫 칸과 아래
막대가 같은 곳을 두 번 말하고 있었다.
| 자리 | 전 | 후 |
|---|---|---|
| 머리글 | 플랫폼 막대 + lab 막대(두 줄) | 한 줄 components/brand/SiteHeader.astro — 브랜드 Radiation Lab(→ https://radiation-lab.com/) · Tools ▾ · Nuclide data · Methods · Validation · 테마 · 계정(→ /calc/saved/). 치수는 우산 홈 .hd/.tm 와 같은 값 |
| Tools 메뉴 | 없음 | <details> — 두 묶음(선량·차폐 셋 / 방사능·계측 넷) · Lucide 아이콘 · 한 줄 설명 · 맨 아래 「More from Radiation Lab」(Instrument testing ↗ · Disposal & transport ↗ · Reference fields ↗ — 옛 셋째 Everyday tools 는 2026-10-13 도토리툴 분리로 뺐고, 2026-10-25 Field Pro pro.radiation-lab.com 을 셋째로 더했다). Esc(초점은 Tools 로) · 바깥 누르기로 닫힌다. JS 없이도 열린다 |
| 도구 쪽 왼쪽 목록 | 일곱 줄 한 덩어리, 손그림 표식 | 같은 두 묶음 · 같은 순서 · 같은 Lucide 아이콘(16px), 지금 도구는 accent-soft |
도구 정본 lib/tools.ts |
순서 = 만든 순서 | 명세 순서(감마·베타·ALARA / 환산·붕괴·질량·MDA) + group · icon · line 칸, TOOL_GROUPS·toolsIn·menuName |
| 보이는 이름 | RadCalc | Radiation Lab — 제목 <쪽> · Radiation Lab · 공유 그림 95장 다시 구움(눈썹 「RADIATION LAB」, 밑줄 radiation-lab.com) · JSON-LD WebSite 는 apex 노드(#site). RadCalc 은 DOI 인용(CITATION_NAME) · 저장소 · 문서에만 |
/calc/ 허브 |
도구 카드 일곱 + 읽을 글 + 해설 | 없음 — deploy/_redirects /calc/ → / 301(배포가 dist/ 로 복사, 스모크가 301 을 잰다). 내용은 apex 홈이 든다(#tools · #notes · #method). 도구 주소는 그대로 |
| 읽을 글 일곱 | 허브에서 클릭 1회 | /calc/methods/#notes 에서 클릭 1회(이 lab 안의 허브) — check-notes 의 HUB 를 옮겼다 |
| 빵부스러기 | Calculators / … | 도구 쪽 Tools / <묶음> / <이름>(Tools → /#tools), 그 밖 Home / … |
| 압축 고정 바 | lab 칸 셋 | 머리글과 같은 글자 넷(Tools → /#tools · Nuclide data · Methods · Validation, 좁은 화면 짧은 글자). 메뉴 판은 다시 싣지 않는다(쪽마다 같은 일곱 링크가 두 벌이면 겹침만 는다) |
- 걷은 것:
brand/PlatformBar.astro·ToolIcon.astro·lib/tool-icons.ts(손그림 표식) ·pages/index.astro(허브). 새것:Icon.astro·lib/lucide.ts(ISC, 마크업을 박았다 — 바깥 요청 0). - 공유 그림: 사이트맵에
/가 없어 사이트맵 밖 쪽(404 ·/saved/)의 대체 카드는 매니페스트"*"칸(home.png)이다 —make-og가 굽고Base가 읽는다. - 쪽 수 98 → 97(허브 1), 사이트맵 96 → 95.
게이트
check-platform— 우산 레포의 게이트를 그대로 옮겼다(같은PBAR표 · 같은 측정 함수). 10폭 × 2테마 × 5쪽 + Tools 메뉴(묶음·도구·자매·패널 자리·Esc·바깥 누르기) 1280/390px. 역테스트 2종 — 게이트 표의 Methods 주소를 틀리게(100건) · 산출/methods/메뉴에서 Beta 를 빼기(4건) — 둘 다 빨개졌다.check-lockup— 두 막대 → 막대 하나(옛[data-platform-bar]·[data-lab-bar]0개) · 브랜드 → apex · 머리글에 「RadCalc」 글자 0 · 모바일 예산 110px(실측 97).check-notesHUB →/methods/·check-a11y다크 쪽에서/calc/를 뺐다.- 머리글은 흐름 안(
static)에 둔다 — 처음에position: relative를 주었다가check-sticky⑥ 이 잡았다. 판의 쌓임은 판의 z-index 가 정한다. - 로컬(2026-10-06, Windows · Chromium 1243): output · render · lockup · inputs · save · sticky · header · platform · a11y · nuclides · notes · og · lastmod · adsense · progeny · validation 통과,
npm test143/143 · tsc 0 · astro check 0 오류.check-gates7건은 Windows 의gate\…경로 자기 제외 오탐(HEAD 와 같은 7건).
우산이 함께 들어야 하는 것
- 우산
cf/_redirects의/calc /calc/ 301은/calc / 301로 바꿀 것 — 그대로면/calc→/calc/→/로 두 번 돈다. - apex 홈의
#tools·#notes가 이 레포의 빵부스러기·압축 바·저장 쪽 「Back to the tools」의 목적지다.
★★ Cloudflare Workers 로 옮겼다 — apex 의 주인공이 됐다 (2026-10-06)
애드센스가 2026-10-06 00:48 에 radiation-lab.com 을 「가치가 별로 없는 콘텐츠」로 돌려보냈다. 소유주 결정:
apex 는 RadCalc 하나에 집중하고, RadiMeter · 처분 lab 은 하위 도메인(radimeter. · disposal.)으로 내보낸다.
그리고 광고가 실릴 두 층(우산 · RadCalc)을 Vercel Hobby(애드센스 금지) 에서 Cloudflare Workers Free 로 옮긴다.
| 무엇 | 전 | 후 |
|---|---|---|
| 배포 | Vercel radiation-calc → 우산이 /calc/* 를 재작성 |
Worker radiation-lab-calc, 라우트 radiation-lab.com/calc/* (wrangler.jsonc) |
| 배포 방아쇠 | Vercel Git 연동 | .github/workflows/deploy.yml — main 에 들어오면 빌드 → wrangler deploy → workers.dev 실측 |
| 계정 칩 | 우산 /account/(실제로는 RadiMeter 껍데기) |
/calc/saved/ — 로그인 단추 · 저장 목록 · 로그아웃(새로 넣음) |
| 처분 lab 링크 | /disposal/ |
https://disposal.radiation-lab.com/ |
- ★ 세션은 이제 오리진별이다. apex 에서 로그인해도 하위 도메인은 따로 로그인한다. 자료는 같은 Supabase 프로젝트라 그대로다.
- ★ 비밀값은
CLOUDFLARE_API_TOKEN하나(radiation-lab 전용: Workers Scripts · Workers Routes · DNS, 존 radiation-lab.com).CLOUDFLARE_ACCOUNT_ID·VITE_SUPABASE_URL·VITE_SUPABASE_ANON_KEY는 저장소 변수다(anon 키는 원래 브라우저에 실린다). - ★ 404 는 Worker 의
404-page가 가장 가까운404.html(dist/calc/404.html)을 낸다.copy-404가 만드는dist/404.html은 Vercel 의 자리였고, Vercel 을 걷을 때 함께 걷는다. - ★ 끝 슬래시는
auto-trailing-slash—/calc/mda는 307 로/calc/mda/가 된다(정본은 슬래시 있는 쪽 그대로). - Vercel 프로젝트
radiation-calc는 전환이 끝날 때까지 되돌릴 자리로 두고, 끝나면 Git 연동을 끊는다.
★★ 새 세션은 여기부터 (2026-09-20 기준)
현재 상태
main = 8ccbe00(2026-10-06 ④) + 그날 ⑤(아래 첫 절 — 플랫폼 상단 메뉴). 라이브 radiation-lab.com/calc/ · 산출 HTML 98쪽(핵종 낱장 70 · 사이트맵 96 · noindex 2) · npm test 143건 통과.
★★★ 핵종 참조 쪽은 70종에만 있다(2026-10-06 ④) — 검색 제외 77장을 지웠다. 자료와 계산기는 147종 그대로다(쪽 목록 정본 src/lib/nuclide-pages.ts,
핵종 이름은 components/NuclideRef.astro 로만 그린다 — 쪽이 없으면 링크 없이 이름만).
도구 7종 전부 유효성 평가가 서 있고 낱장 8쪽이 공개돼 있다(/validation/), 7건 모두
스스로 「All checks pass」를 선언한다(케이스 id 266개 대조).
★★ 머리글은 두 막대다(2026-10-06 ⑤) — 맨 위 플랫폼 막대(브랜드 Radiation Lab + 분야 칸 셋 Dose & shielding ·
Instrument testing · Disposal & transport + 테마·계정)는 네 곳(우산 · 세 lab)이 글자·순서·주소·치수까지 같고, 그 아래
lab 막대(RadCalc + Calculators · Nuclides · Methods)가 이 lab 의 칸이다. 정본 components/brand/PlatformBar.astro,
지키는 것은 check-platform(네 레포가 같은 숫자를 적는다). 잠금장치(Lockup)는 걷었다.
★★ 법무·연락 링크가 우산 루트를 가리킨다(2026-09-28). 그전에는 /radimeter/privacy|terms|contact/
였다 — 2026-09-14 에 루트에 그 문서들이 없어서(라이브 404) 우회한 것인데, 2026-09-21 부터 루트에
실재한다(라이브 200 확인). 사이트의 79% 가 이 lab 인데 하단의 Privacy 를 누르면 RadiMeter 의
측정 데이터 설명이 나오고 있었고, 애드센스가 요구하는 광고 쿠키 고지는 루트 문서에만 있다.
★ 끝 슬래시를 붙이지 않는다 — 우산 쪽의 정본은 슬래시 없는 쪽이다(우산 꼬리말·사이트맵·canonical 일치).
붙이면 200 이지만 canonical 이 딴 곳을 가리키는 중복으로 보내게 된다.
★★ 없는 주소에 이 lab 의 404 쪽이 나간다(2026-10-03) — 그전에는 404.astro 자체가 없었고, Vercel 의 평문
NOT_FOUND(84 B) 가 나갔다. ★ 쪽을 만드는 것으로는 안 된다 — Astro 는 dist/calc/404.html 에 굽고 Vercel 은
산출 루트의 404.html 만 쓴다. scripts/copy-404.mjs 가 빌드 끝에 올리고 check-output ⑧ 이 잰다.
★★ 접근성 게이트가 섰다(2026-10-03, check-a11y) — 라이트 강조색이 종이 위에서 4.06:1 로 AA 미달이던 것을
143 78 0(5.32) 으로, 가로 스크롤 표·코드 59자리에 tabindex, <nav> 넷에 이름, 결과 카드의 라벨 색을 고쳤다.
핵종 낱장(그때 147장)의 되풀이 줄이기 ①~④ 가 끝났다(배포·라이브 확인 완료 — 아래 표는 147장 시절 값이다. 70장으로 줄인 뒤 실측은 2026-10-06 ④ 절):
| 시작 | 지금 | |
|---|---|---|
| 산문 되풀이 몫 중앙 | 66.4% | 27.9% |
| 최악 | 80.6% | 38.8%(cd-109) |
| 숫자 뺀 낱말 겹침 | 31.9% | 16.6% |
| 제목 틀 겹침 | 75.0% | 20.0% |
| 147장 전부에 같은 제목 | 4개 | 0개 |
| 5-그램 겹침(옛 ④) | 9.9% | 4.4% |
| 낱장 최소 어수 | ~250 | 271 |
★★★ 애드센스가 2026-10-06 「가치가 별로 없는 콘텐츠」로 돌려보냈다 — 색인을 핵종 70장으로 줄였고(#63, 라이브 사이트맵 92 확인) 긴 글 넷을 더했다(읽을 글 3 → 7, 그날 ② 절). 같은 날 ④ 에서 색인에서 뺀 77장을 아예 지웠다(소유주 「불필요한 것들은 과감하게 잘라내자」).
★★ 147장 전부에 손글이 섰다(2026-10-04 26장 → 2026-10-05 나머지 121장, 아래 두 절). ★ 2026-10-06 ④ 부터 그려지는 것은 쪽이 있는
70장의 글이고, 나머지 77장의 글은 nuclide-notes.ts 에 자료로 남는다(쪽 목록에 넣으면 되살아난다). 되풀이를 내린 뒤에도 낱장은
한 틀에서 나온 자료 쪽이고 색인 쪽의 72% 다 — 애드센스 심사의 남은 불확실성 중 가장 큰 것. 「이 핵종이 실무에서
어디서 만나지고 무엇이 문제가 되는가」를 숫자 없이 세 문단씩, 쪽마다 그 쪽의 표를 띄워 놓고 썼다(src/data/nuclide-notes.ts,
합 약 26,000어). 147장 되풀이 몫 중앙 27.9% → 19.0%, 최악 38.6% → 26.5%, 산문 어수 중앙 316 → 484(최소 338).
지키는 것은 check-nuclides ④-3(그 쪽에 섰는가 · 숫자 없음 · 글 사이 8낱말 공유 없음). ★ 쓰다가 자료 결함 둘을 잡았다
(Pu-241·Nb-95m 의 붕괴 모드 표기, nuclides.ts 의 DECAY_FIX)와 자료 공백 열다섯(미결 6).
★★ 노출 상위 20쪽의 해설을 넓혔다(2026-10-28, T7 — 소유주 「상위 20쪽 고유 해설을 하자. 이거 중요하네」). Search Console 3개월
(9/910/25) 사이트 클릭 99 · 노출 4,048 중 핵종 쪽이 클릭 32 · 노출 1,864 이고 클릭 상위 10쪽이 전부 핵종 쪽이다 — 애드센스 10-06 거절의 가장
큰 후보가 같은 틀의 핵종 쪽이라, 지우지 않고 쪽마다 다른 해설을 단다. 노출 순 20종(600어**(문단만)로 늘리고 글 아래 출처 목록(IAEA Live Chart · ICRP 107 · NIST · EPA · WHO · CTBTO 등, 링크 둘 이상)을 달았다.
구조화 데이터(TechArticle)의 쪽 설명은 손글 첫 문장이다(meta description 은 nuclide-notes.ts 의 GSC_TOP20)의 손글을
**300nuclideSeo 의 수치 요약 그대로).
10-06 에 지운 U-236 · Ra-224 를 되살렸고(노출 103 · 64회, 그 주소는 404 였다) Ra-228 의 noindex 를 뗐다.
글은 여전히 숫자 없이 쓴다(④-3). 써 놓고 독립 검토로 사실을 대조했다 — 틀림 4 · 과장·부정확 30 을 고쳤다(그중 둘은 원래 있던 문단:
Th-232 「우라늄 다음으로 많은 악티나이드」 → 우라늄보다 몇 배 많다, Ni-63 「증기발생기 세관에 재고가 가장 많다」 → 노심 구조물, 세관은 부착 부식막뿐).
지키는 것은 check-nuclides ④-4(300~600어 · https 출처 둘 이상 · TechArticle 설명 = 첫 문장 · 20편 사이 같은 문장 0 · noindex 아님).
★ 출처 이름표는 제목(h3)이 아니다 — 20쪽에 같은 「Sources」 제목이 서자 ④-2 제목 틀 중앙이 14.3% 로 상한 12% 를 넘었다.
★ 되살린 두 쪽의 공유 그림은 npm run make-og -- --only=/nuclides/u-236/,/nuclides/ra-224/ 로 그 둘만 구웠다.
★★ 해설 2차 20쪽 · 틀 문장 줄이기(2026-10-29, T10-② — 애드센스 재검토 준비 점검 T10-① 의 F2). 해설 없던 색인 40쪽은 쪽마다 문장의 「다른 쪽에도 있는 틀」(숫자를 지운 문장) 몫이 중앙 65% 였다. 애드센스는 「비슷한 쪽이 많으면 쪽마다 고유 내용으로 늘리거나 합쳐라」 (answer 10015918)이고, 소유주 결정은 지우지도 합치지도 noindex 하지도 않는다이므로 늘리고, 표를 되풀이하던 문장을 뺐다.
- 틀 문장 —
paragraphs()와 「Read before relying on these figures」 목록에서 40~47쪽에 숫자만 바뀌어 서 있고 그 숫자가 이미 표 · 캡션에 있는 문장을 뺐다: 「1 GBq at 1 m reads … and 1 Ci …」(수치표) · 「N lines clear the 20 keV cutoff, but M of them carry 90%」 · 「The leading one is … which is also the highest」(방출선 표 첫 줄) · 목록의 「… mGy/h at a metre — bare point source」 · 「… mm of lead halves this spectrum」(차폐표) · 「Γ excludes …」(방출선 캡션과 같다). 남긴 것은 표를 한 줄씩 읽어서는 안 보이는 관계 하나 — 선량을 가장 많이 나르는 선이 가장 자주 나오는 선이 아닐 때(「The two columns of the line table disagree here …」). ★ 옛 판은 둘째 줄과만 비교해 Eu-152 에 「also the highest」라고 틀리게 적고 있었다(1408 keV 는 방출 확률 1위가 아니다) — 새 판은 모든 줄과 비교한다. 허브로 가는 한 줄 링크 · 데이터 출처 한 줄 · 표 · 수치 · 계산은 그대로다. - 해설 2차 20편(
nuclide-notes.ts의NOTES_ROUND2, 틀 몫 상위 20) — T7 과 같은 방식: 기존 문단을 살리고 표가 못 드는 각도(만나는 자리 · 만드는 법 · 측정 함정 · 관리 맥락)를 더해 문단 370~390어, 숫자 없음, 출처 4~5(링크 4, 브라우저로 66개 전부 2xx). 쓴 뒤 독립 사실 대조 두 차례(편마다 1차 검증 → 고친 문장만 다시 2차 검증 — 2차가 1차의 고침에서 새로 생긴 틀림 셋과 이어 붙인 자리의 문법 손상을 잡았다).check-nuclides④-4 가 1차 · 2차 40편을 함께 잰다(같은 문장 0 은 40편 전부 사이). ★ 옛 손글의 틀림도 고쳤다 — In-111 「소마토스타틴 수용체를 표지 펩타이드로 처음 영상한 핵종」(처음은 I-123 표지 옥트레오타이드), Pb-210 제목 「라돈 계열의 끝」(끝은 안정한 Pb-206) 등. - 전 → 후(같은 정의 — 쪽 본문 = main 에서 머리글 · 꼬리말 · nav 를 뺀 글, 여섯 낱말+ 문장, 숫자 지움): 2차 20쪽 틀 몫 중앙 69.6% → 43.5%(최대 85.2 → 56.7), 해설 있는 40쪽 65.2% → 42.9%(쌍별 같은 틀 최대 77.8 → 63.0), 해설 없는 20쪽 50.0% → 40.0%(틀 문장 줄이기만으로).
- ★ 쓰다가 잡은 자료 결함 둘(이 판에서는 표 · 계산을 바꾸지 않았다 — 별도 작업): ① 쪽이 있는 β− 핵종 11종에 베타 가지 자료가 없다 (Cs-137 · Sb-124 · Cs-134 · Xe-133 · Lu-177 · Sm-153 · Re-188 · Eu-154 · K-40 · Au-198 · Ra-228 — 베타 사정거리 · 제동복사 표가 안 선다; Eu-152 는 β− 가지가 없다) ② Kβ X선을 두 번 센다 — Livechart 의 Kβ 묶음 줄과 그 구성 줄이 함께 들어와, 「묶음 = 구성 둘의 합」 꼴이 120 keV 아래 48종(I-125 · Cd-109 · Ce-139 · Cs-137 · I-131 · Tc-99m 등). → 둘 다 T11 에서 고쳤다(아래). 「48종」은 수치 짝을 대강 센 값이었고, 이름표로 다시 세니 79줄 · 70키다.
★★ 계산 자료 결함 수정 — Kβ 이중 계산 · β− 가지 누락(2026-10-29, T11). scripts/clean-dataset.mjs(npm run clean-dataset)가
src/data/nuclides.json 을 원문 그 자리에서 고친다(다시 수확하지 않는다 — 9-13 뒤 Live Chart 값이 갱신된 핵종이 있어 관계없는 수까지 바뀐다).
- Kβ 이중 계산 79줄 뺌(70키, 쪽 29) — 판별은 Live Chart
rad_types=x의 껍질 이름표로 한다: 같은 준위 · 같은 원소(딸핵)에서 KB 가 K′β1 · K′β2 사이에 있고 세기가 그 합과 1% 안이면 묶음 줄이다. DDEP 표와 LARA 방출 목록은 I-125 · Cs-137 · Ba-133 · Ir-192 모두 K′β1 · K′β2 두 묶음만 싣고 Kβ 전체 줄이 없다 — 구성 줄이 맞는 표현이다. ★ 수치만으로 고르면 틀린다(무거운 원소는 Kα1 ≈ Kα2 + Kβ). ★ 첫 판이 가벼운 원소 13줄을 잘못 뺐다 — Kβ 가 갈리지 않는 원소는 원천이 KB 와 K′β1 을 같은 줄로 두 번 내고 수확이 이미 하나로 합쳐 두었다(Co-57 7.082 keV). 구성 줄이 별개의 줄일 때만 뺀다. ★ K′β1 만 자료에 있고 K′β2 가 0.001% 문턱에서 빠진 6키(Eu-152 의 Gd · Y-90 · Pu-239 · U-234 · Ba-133m · Nb-95m)는 KB 를 남기고 K′β1 을 뺐다 (KB 를 빼면 K′β2 몫이 사라지고, 두면 K′β1 을 두 번 센다). 그래서 79줄 = KB 73 + K′β1 6.harvest.py에도 같은 규칙을 넣었다(부분 짝 포함). 임시 폴더에서 다시 수확해 대조 — 103키 중 81키는 줄 표가 글자까지 같고, 새 수확에서 KB 가 구성 줄 옆에 실린 경우 0. 나머지는 전부 9-13 뒤 원천 갱신이다(세기 45줄 · 새 줄 106 · 에너지 이동 2). ★ Eu-152 의 Gd 는 원천에 K′β2 가 새로 생겨 새 수확이 KB 를 빼고 K′β1 · K′β2 를 둔다 — 고친 자료(KB 남기고 K′β1 뺌)와 줄은 다르지만 둘 다 한 번씩만 센다. - Γ 변화(엔진, δ = 20 keV): Tl-201 −14.6% · I-125 −12.5% · Cd-109 −12.1% · Xe-133 −10.2% · Sm-153 −10.0% · Ra-223 −7.0% · Ce-139 −6.8% · In-111 −5.0% · Ba-133 −4.7% · Tc-99m −3.7% · Cs-137 −0.26% · Co-60 0. 문헌과 대조하니 고친 값이 가깝다 — I-125 TG-43U1 0.0355 에 전 +12.7% → 후 −1.4%, Tl
