🧠 Catcher Treatment Engine — 엔진 매뉴얼 v2
Boston Neuromind · 증상 무관 진단·훈련·진화 엔진의 전체 구조 문서. 코드는 공통, 데이터(rules)만 교체해 증상을 복제한다.
v2 · 2026-07 · 판단 알고리즘 + 근거 + 세션추적 + 복제 자동화 반영
★ 이번 업데이트에서 바뀐 것 읽고 시작
할비 참고: 아래가 이번에 추가·변경된 것. 나중에 혼자 복제·관리할 때 이 요약부터 보면 됨.
| 항목 | 무엇이 | 어디에 |
| 판단 알고리즘 신규 | 각 증상마다 상태공식·축계산·하위유형판별 (rules에 내장) | rules.game_module.state_formulas / axis_formulas / profile_matching |
| 논문 근거 신규 | 각 공식에 메타분석 + 효과크기 + 한계 | 각 state_formula의 evidence[] |
| 심장2 v2 신규 | 판단 알고리즘 관리 화면 (3패널 + 근거표시) | adhd-super.html 인라인 (AdhdHeartAlgo) |
| 세션 추세 그래프 신규 | 설문 점수가 세션마다 어떻게 변하는지 | board.html (renderSessionTrend) |
| QEEG 세션 추적 신규 | QEEG 스펙트럼 + 진행 그래프, 엑셀 업로드/손입력 | qeeg-session.html (독립) |
| dept 마커 자동화 신규 | 복사 시 각 증상 QEEG 마커 자동 표시 | dept_marker_helper.js |
| catcher_id 정리 수정 | 8증상 rules가 각자 증상 ID를 가짐 (복사 위생) | 각 rules.meta.catcher_id |
| 8증상 완비 확장 | 우울·불안·수면·번아웃·PTSD·OCD·양극성·자폐 | public/adhd-engine/rules/*.json |
① 설계 철학
"AI 적용 안 되면 nothing." 진짜 AI = LLM 호출(검색)이 아니라 판단 메커니즘 + 스스로 자기발전하는 루프. 데이터가 쌓일수록 정밀해지는 구조여야 카피 불가 IP가 된다.
핵심 원칙 4가지
| 원칙 | 의미 |
| 엔진 차원 | ADHD는 첫 콘텐츠일 뿐. 코드는 증상 무관, rules 데이터만 갈아끼워 9+ 증상 복제. |
| 1세대 → 2세대 | 논문 기반 합성으로 지금 작동(부트스트랩) → 실측 쌓이면 표상/정책 학습으로 진화. |
| 측정 = 훈련 | 게임 1판이 훈련이자 측정기(behavioral probe). 묻지 않고 재게 한다. |
| 판단 전시 | 엔진의 내부 추론(상태공식·z지문·교차판별·적응)을 화면에 꺼내면, 같은 데이터가 "판단하는 AI"로 보인다. |
정직한 경계선: 표상·정책 학습은 실측 N이 쌓여야 켜진다. N=0이면 못 돈다. 그래서 1세대(논문 합성)로 첫 데이터를 걷고, behavioral probe가 그 데이터를 누적한다.
② 전체 흐름 (사용자 여정)
입력(나이·BPS) → 설문(진단) → QEEG 측정 → 판단 알고리즘(상태·축·하위유형) → 알고리즘 리포트 → AI 심층분석 → 뉴로피드백/QEEG 세션추적 → AI 치료훈련(게임)
이번 추가: "판단 알고리즘" 단계가 명시됨 — 설문·QEEG·게임 측정을 각 증상의 상태공식으로 계산해 5축 상태 + Bio/Psycho/Social + 하위유형을 산출. 이 판단이 심장2에서 관리·전시됨.
③ 3층 AI 구조 (경쟁력의 심장)
| 층위 | AI 능력 | 현재 상태 |
| L1 교차판별 | 설문+QEEG+행동을 융합해 사람이 못 잇는 판별 | 1세대 가동 (norm 기반) |
| L2 적응처방 | 반응 결과로 난이도·게임 순서 학습 | 1세대 가동 (곡선 기반) |
| L3 해석생성 | 엔진 근거를 LLM에 주입해 개인 해석 문장 | API 대기 |
판단 알고리즘(④)이 L1의 입력을 만든다: 상태공식으로 5축 상태를 계산 → 그 상태들이 교차판별·하위유형 판별의 재료. 즉 상태공식 = L1의 앞단.
④ 판단 알고리즘 신규 핵심
이게 이번의 심장. 각 증상마다 "측정값 → 판단"을 하는 실제 공식. 증상별로 다르고, 각 공식이 논문 근거를 달고 있다.
3층 구조
| 층 | 역할 | rules 위치 |
| 🧮 state_formulas | 측정 지표로 5개 상태를 계산 (증상별 5축) | game_module.state_formulas |
| 🧭 axis_formulas | 상태들을 묶어 Bio/Psycho/Social 3축 산출 | game_module.axis_formulas |
| 🎯 profile_matching | 측정 프로파일이 어느 하위유형과 닮았는지 (강/중/약) | game_module.profile_matching |
상태공식(state_formula) 구조 — 예: 우울 무쾌감
{
"id": "anhedonia",
"name": "무쾌감 (anhedonia)",
"formula": {
"base": 100,
"terms": [
{"feature":"detection", "op":"add", "multiplier":0.6},
{"feature":"frontal_alpha_asymmetry", "op":"add", "multiplier":40}
]
},
"evidence": [ ← ★ 논문 근거 (이번 신규)
{"indicator":"detection (보상/긍정 탐지)",
"direction":"저하 → 무쾌감↑",
"meta":"Halahakoon 2020 (JAMA Psychiatry 메타); Pizzagalli 2014",
"effect":"복측선조체 보상반응 둔화 일관 (fMRI 메타)",
"limit":"행동 탐지과제로 직접 측정한 표준 효과크기는 제한적"}
],
"coefficient_status": "방향·관여는 논문 근거. 정밀 계수는 Genius 검수·실측 조정."
}
공식 문법 (terms의 op)
| op | 의미 |
add | 지표값 × multiplier 를 더함 |
subtract | 지표값 × multiplier 를 뺌 (offset으로 기준점 조정) |
add_inverted | 역방향 (높을수록 낮은 상태) |
conditional_add | if_greater_than / if_less_than 조건 충족 시 value 더함 |
★ 계수 원칙 (할비 검수 대상): 논문은 "이 지표가 이 방향으로 관여한다"까지 준다. 정밀 계수 숫자(0.6, 40)는 논문이 안 준다 — 그건 임상 검수·실측 조정. 그래서 각 공식에 coefficient_status로 명시. 발표 때 "방향은 논문, 계수는 검수 예정"이라 방어 가능.
근거(evidence) 3요소 — 각 지표↔상태 연결마다
| 필드 | 내용 |
meta | 메타분석/체계적 리뷰 (개수보다 질 — 메타 우선) |
effect | 효과크기 (Hedges g, Cohen d, r 등) |
limit | 한계·논란 (정직하게 — 효과크기 작음, 대리지표 등) |
왜 이렇게? "논문 하나"로는 임상 방어 불가. 각 지표↔상태 연결마다 메타분석급 근거 + 효과크기 + 한계를 달아야, 할비가 "이 계수 왜?"에 답할 수 있다. 8증상 × 5상태 = 40개 상태공식 전부 이 기준.
8증상 하위유형 (profile_matching)
| 증상 | 하위유형 3개 |
| 우울 | 멜랑콜리형 · 비정형 · 인지형 |
| 불안 | 범불안형 · 신체형 · 회피형 |
| 수면 | 입면곤란형 · 수면유지형 · 일주기형 |
| 번아웃 | 소진우세형 · 냉소이탈형 · 인지피로형 |
| PTSD | 침습우세형 · 회피마비형 · 해리형 |
| OCD | 확인형 · 오염형 · 억제결손형 |
| 양극성 | 조증우세형 · 우울우세형 · 급속순환형 |
| 자폐 | 사회의사소통형 · 감각우세형 · 실행기능형 |
⑤ 심장1 · 심장2 (슈퍼 관리) 신규
public/adhd-super.html (슈퍼 게이트 bnm123#)
슈퍼 대시보드에 두 개의 "심장" — 9증상을 풀다운으로 중앙 관리.
심장1 — 게임 엔진 관리
각 증상의 게임 모듈 관리: axes·games·axis_game_map·norms·qeeg_norms 등. 증상 선택하면 그 증상의 게임 구성이 보임. window.AdhdHeartGame (adhd-super.html 인라인).
심장2 — 판단 알고리즘 관리 v2 이번 개편
이번에 v2로 개편. 판단 알고리즘(④)을 화면에 전시. window.AdhdHeartAlgo (adhd-super.html 인라인, L592~717).
심장2가 보여주는 패널
| 패널 | 내용 |
| 🧮 상태 계산 공식 | 5개 상태공식 + 📚메타 + 📊효과크기 + ⚠한계 + 🔬계수상태 |
| 🧭 축 계산 | Bio/Psycho/Social 산출 공식 |
| 🎯 하위유형 판별 | 3개 하위유형 + 근거 + 판별 조건 |
| (기존) | 행동 norm · QEEG norm · 교차판별 · 적응규칙 |
사용법: 슈퍼 로그인 → 📊 알고리즘 엔진 카드 → 증상 풀다운 선택 → 그 증상의 판단 로직 + 근거 전부 표시. 관리·검수용.
인터페이스 규약: 심장2는 window.AdhdHeartAlgo={render} 형태. 배선은 openSection('algo')에서 AdhdHeartAlgo.render() 호출. 교체 시 이 인터페이스 유지하면 배선 안 건드려도 됨.
⑥ rules 구조 (game_module) 확장
모든 임상 콘텐츠는 <증상>_rules.json의 game_module에 있다. 증상 복제 = 이 파일만 교체.
public/adhd-engine/rules/{adhd,depression,anxiety,sleep,burnout,ptsd,ocd,bipolar,autism}_rules.json
game_module 섹션 (★ = 이번 추가)
| 섹션 | 내용 | 복제 시 |
axes | 5 조절축 (색·근거·정의) | 증상별 재정의 |
surveys | 6 설문 (3층 × 2연령) | 증상 문헌으로 교체 |
games | 7 게임 = 5엔진 + 파라미터 | 파라미터만 조정 |
norms | 지표별 문헌 norm + 블렌딩 | 증상 문헌 norm |
qeeg_norms | QEEG 마커 (대표 마커 포함) | 증상별 마커 |
adaptation | 반응곡선 + 적응 규칙 | 증상별 곡선 |
state_formulas ★ | 5축 상태 계산 공식 + 근거 | 증상별 공식·근거 |
axis_formulas ★ | Bio/Psycho/Social 산출 | 증상별 조합 |
profile_matching ★ | 하위유형 판별 | 증상별 하위유형 |
_algo_meta ★ | 근거 정책 메타 정보 | 공통 |
5개 범용 게임 엔진
| 엔진 | 측정 지표 |
react_inhibit | 억제율·오반응 (commission/inhibition) |
detect_target | 탐지·RT변동·누락 (detection/rtVariability) |
match_memory | 작업기억 정확도 (matchAccuracy) |
choice_conflict | 갈등 간섭 (conflictEffect) |
pace_regulate | 호흡·자율 (autonomic) |
상태공식이 쓰는 지표 = 게임 엔진의 측정값. 예: 우울 무쾌감은 detection(탐지) + frontal_alpha_asymmetry(QEEG). 즉 게임 측정 → 상태공식 → 판단. 지표 이름이 연결고리.
⑦ 코드 모듈 (전부 증상 무관 공통)
| 모듈 | window | 역할 |
| engines_v3.js | AdhdGames | 5 범용 엔진 + 디스패처 |
| matcher.js | AdhdMatcher | 3레이어 → 축·강도·게임화 |
| cross_engine.js | AdhdCross | L1: z지문·교차판별·블렌딩 |
| adapt_engine.js | AdhdAdapt | L2: 궤적분석·적응처방 |
| dept_marker_helper.js ★ | getDeptQeegMarker | rules에서 각 증상 QEEG 마커 자동 추출 (복제용) |
public/adhd-training/shared/*.js
⑧ QEEG 세션 추적 신규
public/qeeg-session.html (독립 페이지)
뉴로피드백 훈련 자체는 뺀, QEEG 기반 세션 추적기. Linda Thomson 모듈 데이터를 세션별로 올리거나 손입력 → 그래프. 다른 것과 연계 없는 독립 모듈.
담은 것
| 기능 | 설명 |
| 화면 통일 | 일반/임상가 같은 화면. 임상가는 대상(환자) 여러 명 관리, 개인은 자기 것만 |
| 엑셀 업로드 | .xlsx 자동 파싱 (1Hz bin + 3비율: Monastra/DT-SMR/BB-SMR) |
| 손입력 | 세 비율 직접 입력 |
| 그래프① 세션 스펙트럼 | 2~30Hz 1Hz bin, 대역별 색(Delta~Hi Beta), EO/EC 토글 |
| 그래프② 세션 진행 변화 | 비율이 세션마다 어떻게 변하는지 추세선 |
ProComp Infiniti 파일: 할비가 주로 쓰는 Thought Technology 기계. BioGraph Infiniti는 텍스트/CSV export 지원하나, 열 구조가 채널셋마다 달라 실제 export 샘플이 오면 파서를 정밀화. 지금은 유연 파싱으로 준비됨.
제외 (할비 확정): HRV·Temp·GSR 추가탭은 제외. QEEG 세션 그래프만.
⑨ board 세션 추세 그래프 신규
public/board.html (임상가 환자관리 화면)
환자관리(board)에서 설문 점수가 세션마다 어떻게 변하는지 그래프. 임상가가 환자 대신 입력, 이메일이 환자 식별 키.
동작
임상가 로그인 → 환자 리스트에서 선택 → 세션 진행에 따른 변화 그래프 (총점·주의력·과활동 추세선)
| 요소 | 확정값 |
| 데이터원 | listAssessments(clientId) — 전체 세션 반환 |
| X축 | session_date |
| Y축 | total_score / inattention_score / hyperactivity_score (0~1 → ×100 %) |
| 함수 | window.renderSessionTrend(rows) |
★ 세션 자유 추가: 세션 수 고정 로직 없음. 있는 세션 전부 그림. 새 세션 저장 → loadAssess 재호출 → 그래프 자동으로 점 추가. 미리 10세션 잡아도 15세션 되면 15개 다 그려짐.
QEEG θ/β 추세 (다음): 지금은 설문 추세만. QEEG 마커 추세(qeeg_data.derived.<marker>)는 실제 저장 레코드 1건 구조 확인 후 붙임. 이때 getDeptQeegMarker로 각 증상 마커를 자동으로 읽게 함.
⑩ 진화 루프 (1세대 → 2세대)
1세대 (현재)
논문 기반 합성 norm으로 상태공식·z지문·교차판별·적응이 지금 작동. 데이터 0에서 부트스트랩.
2세대 (진화 후)
실측 N 쌓이면 norm 자동 블렌딩. 표상학습·정책학습으로 격상. 계수도 실측으로 재보정(지금은 논문 방향 + 검수 계수).
블렌딩 공식
w_real = n_real / (n_real + K) # K=50
blended = 문헌 × (1 - w) + 실측 × w # 캡 95%
n=0 → 문헌 100% (1세대)
n=500 → 실측 91% (2세대)
⑪ 증상 복제 절차 상세 갱신
원칙: 코드는 공유, rules만 각 증상으로. AI 분석 기준 룰(rules)을 바꾸는 게 정답 — 코드는 안 건드림.
복사 시 바뀌는 것 = rules만
각 증상 사이트에 그 증상 rules 파일만 넣으면 됨. rules 안에 모든 증상-고유 규칙이 있어 자동으로 바뀜:
✅ 상태공식 · ✅ 하위유형 · ✅ QEEG 마커 · ✅ 논문 근거 · ✅ 설문 · ✅ catcher_id
복사해도 그대로 = 코드 공유
심장1/2, board 세션추세, QEEG 세션추적, dept 마커 헬퍼 — 전부 rules만 읽어 각 증상에 맞게 동작. 코드 안 바꿈.
각 증상 대표 QEEG 마커 (자동 추출)
| 증상 | 대표 마커 | 측정 위치 |
| 우울 | frontal_alpha_asymmetry | F3-F4 |
| 불안 | beta_power | frontal |
| 수면 | delta_beta_ratio | central |
| 번아웃 | frontal_alpha_asymmetry | F3-F4 |
| PTSD | frontal_alpha_asymmetry | F3-F4 |
| OCD | frontal_theta (error/ERN) | Fz |
| 양극성 | frontal_theta | Fz |
| 자폐 | frontal_theta (EF) | Fz |
복제 절차 (사이트당)
2
public/adhd-engine/rules/에 그 증상 rules 넣기 (예: depression_rules.json)
3
심장1/2 CONDITIONS에서 그 증상 ready:true + rules 경로 (이미 9증상 등록됨)
4
adhd-config.js의 dept/symptom을 그 증상으로
Genius 저작 필수 (코드 아님, 데이터가 IP): 설문 문항·축 정의·상태공식 계수·norm 수치·근거는 임상 저작. 특히 상태공식의 정밀 계수는 검수 대상 (논문은 방향까지, 계수는 할비).
⑫ 로드맵
완료 (이번 세션 포함)
✅ 5엔진·게임✅ 3층 설문✅ L1 교차판별✅ L2 적응처방
✅ 8증상 판단 알고리즘✅ 논문 근거+효과크기✅ 심장2 v2
✅ board 세션추세✅ QEEG 세션추적✅ dept 마커 자동화✅ catcher_id 정리
대기
⏳ QEEG θ/β 추세 그래프
⏳ ProComp Infiniti 파서 (샘플 대기)
⏳ 상태공식 계수 임상 검수 (할비, 몰아서)
⏳ L3 LLM 해석(API)
⏳ 8사이트 복제 실행
⏳ NF 적응 엔진