McKay 성인 수학클리닉 0.4

시작하기
release/성인_수학클리닉_연구기반_초안.html 을 브라우저로 열면 됩니다.
이 파일은 문서 읽기 구성요소를 포함합니다.
웹 게시에는 가벼운 release/adult.html 과 assets 및 resources 폴더를 함께 사용합니다.
문서 읽기는 최신 브라우저의 파일과 Worker 및 WASM 기능을 사용합니다.
파일 직접 열기에서 제한되면 게시된 성인관을 사용해 주세요.
https://mckayclinic.kr/adult.html

성인 사용성
본문 기본 20px / 확대 모드 24px / 주요 누르기 영역 52px
휴대전화에서는 긴 옆 메뉴를 화면 선택 목록으로 바꿉니다.
시간 제한 없이 과제 하나를 고르고 직접 기록할 수 있습니다.
필수 배경정보는 없습니다.

포함 기능
생활 결정 과제 6개와 조건을 바꾸는 계산
12문항 출발 탐색과 72문항 맞춤 연습 및 18개 개념
생활 과제 기록 후 다른 맥락의 후속 문항 24개
3일과 7일 및 14일과 21일의 제안 일정
큰 글자 35쪽 PDF와 DOCX 및 실제 HWPX 활동집
배경정보 16개 항목과 배경별 지원 검토 7종
작성한 배경정보 DOCX와 HWPX 내보내기 및 다시 불러오기
PDF 입력칸과 텍스트 읽기 및 스캔 PDF와 사진의 한국어 및 영어 OCR
항목별 원문 대조와 선택 적용 및 충돌 표시
가져온 응답은 문서 관찰로 보관하며 처음 보는 점검으로 채점하지 않습니다.
단독 개인용 HTML은 서버에 기록을 보내지 않습니다. 게시된 성인관은 참여 시 운영 정보를 저장하며 명시적으로 제출한 학습 기록만 서버로 보냅니다.
기기 저장은 선택 사항이며 기본값은 꺼짐입니다.
전체 JSON 백업에는 배경정보도 들어갑니다.
학습 기록 인쇄와 TXT 내보내기에는 배경정보 포함을 따로 선택합니다.

연구 범위
기존 탐색적 자료 25편과 이형주 관련 성인 연구 6편을 연결했습니다.
체계적 문헌고찰이나 연구 전수조사는 아닙니다.
추가 연구는 공개 서지와 저자 초록을 확인한 수준입니다.
연구 원 척도를 복제하거나 검증된 진단이라고 표시하지 않습니다.
이 도구 자체의 성인 학습 효과는 검증되지 않았습니다.
국가문해교육센터와 다누리 및 공식 수리 학습 자료 9개를 연결했습니다.
공식 자원은 링크로 제공하며 복제와 재배포 허가는 별개입니다.
웹 성인관은 기존 사이트의 10개 언어 선택과 용어집을 재사용합니다.
새 문항 전체에 검토된 번역이 제공되는 것은 아닙니다.
번역과 읽기 지원은 수학 힌트와 분리해서 기록합니다.

검사
node test_app.cjs
node test_pdf_ocr.mjs
npm install 로 개발 의존성을 준비한 뒤 실행합니다.
기본 Node 의존성 위치를 CODEX_PRIMARY_RUNTIME_NODE_MODULES 에 지정할 수 있습니다.
사용한 엔진은 JSZip 3.10.1 / PDF.js 5.6.205 / Tesseract.js 7.0.0 입니다.
브라우저용 엔진과 OCR 언어 파일은 release/assets/adult 에 포함합니다.
자동 검사 상세는 test-results.json 과 pdf-ocr-test-results.json 에 있습니다.
자동 DOM 검사와 실제 문서 추출 및 왕복 검사와 엔진 검사를 수행했습니다.
PDF와 DOCX 활동집 35쪽을 렌더링해 확인했습니다.
HWPX는 패키지와 XML 구조를 확인했습니다.
한컴 앱의 화면과 실제 모바일 기기 및 보조공학 사용성은 확인하지 않았습니다.
OCR은 손글씨와 작은 숫자 및 촬영 상태에 따라 실패할 수 있습니다.
추출값은 사용자가 확인한 뒤에만 적용합니다.

코드 구성
app_base.js: 기존 학습 엔진과 화면
extension_core.js: 배경정보와 생활 과제 및 후속 기록 규칙
extension_ui.js: 성인 화면과 확인 후 적용 흐름
document_readers.js: 로컬 PDF 및 DOCX와 HWPX 읽기 및 OCR
adult_accessibility.css: 큰 글자와 누르기 영역 및 화면 재배치
content_contract.json: 인쇄와 화면에서 함께 쓰는 문항과 배경 항목
data.json: 자체 문항과 기존 문헌
research_additions.json: 관련 연구와 공식 자원 및 배경별 검토
build_app.py: 배포 HTML과 로컬 엔진 파일 묶기
docs_build.py: 인쇄 및 편집용 문서와 가상 검사 자료 생성
integrate_site.py: 기존 McKay 사이트 체크아웃에 성인관 연결
site-integration.patch: 기존 사이트의 메뉴와 언어 및 경로 변경 내역

재생성
Python 의존성은 requirements.txt 를 참고하세요.
문서 생성에는 한글을 포함하는 TTF 글꼴이 필요합니다.
docs_build.py 상단 FONT 와 BOLD 경로를 설치한 글꼴로 지정하세요.
build_app.py 의 runtime 경로는 CODEX_PRIMARY_RUNTIME_NODE_MODULES 를 사용합니다.
OCR 언어 파일은 release/assets/adult 에 포함되어 재생성에서도 재사용합니다.
검수용 페이지 PNG와 가상 입력 문서는 실제 개인 자료가 아닙니다.

이용 범위
직접 만든 앱 코드와 자체 문항은 MIT 조건으로 제공합니다.
제3자 라이브러리와 연구 원문 및 외부 자료는 각자의 이용 조건을 따릅니다.
THIRD_PARTY.txt 와 release/assets/adult 의 라이선스 파일을 참고하세요.

사이트 연동 추가 안내
기존 사이트의 큰 텍스트 파일은 gzip 전송을 사용합니다.
논리 URL과 실제 원문은 같으며 압축을 풀었을 때 바이트 단위로 검사합니다.
site-integration.patch 는 선택한 기존 버전에서의 메뉴와 언어 및 빌드와 HTTP 경로 변경입니다.
site 폴더의 추가 스크립트와 검사 파일도 같은 경로에 복사합니다.
빌드 끝에 finalize-compressed-assets.mjs 가 중복 원문을 정리하고 게시 용량을 확인합니다.

메뉴와 진입 화면 개정
성인관 메뉴 14개를 목적별 4개 모음으로 정리했습니다.
나의 시작 / 배우고 연습하기 / 기록과 다시 보기 / 자료와 도움
메뉴 검색과 현재 위치 및 브라우저 뒤로 가기를 지원합니다.
홈페이지에서는 성인관과 학생관을 큰 카드 두 개로 보여줍니다.
입구에서 성인관에 바로 들어갈 수 있으며 생활 과제와 문서 화면의 직접 링크를 지원합니다.
node test_navigation.cjs 로 메뉴와 홈페이지 진입을 검사합니다.
공통 언어 모듈 검사는 기존 사이트 체크아웃이 있을 때 함께 수행합니다.

2026-10-18 운영 통합 업데이트
학생관과 성인관은 같은 입구 크기와 강조 수준을 사용합니다.
각 관의 GIF와 정지 이미지 및 재생 제어를 제공합니다.
성인관 진행자는 기존 계정 가입과 이메일 확인 및 관리자 승인 체계를 사용합니다.
참여자는 성인 전용 5자리 코드와 동의로 입장합니다.
이름과 지역 및 동의는 입장 시 저장합니다. 학습 기록은 제출 버튼을 눌렀을 때만 전송합니다.
배경정보 포함은 별도 선택이며 원본 문서는 전송하지 않습니다.
성인관 화면은 한국어 포함 10개 언어를 지원합니다. 원문 학술 식별자는 유지합니다.
기존 PDF와 DOCX 및 HWPX 활동집은 한국어 원본입니다.
급여 지급과 공제 합계 및 부가세 포함 여부와 근무시간 도구 및 상황 점검 4개를 제공합니다.
소득세와 사회보험료를 자동 추정하거나 실제 신고 세액을 확정하지 않습니다.
글자 크기는 20px와 24px 및 28px와 32px 중에서 선택할 수 있습니다.

기존 mckayclinic 저장소와 함께 적용하는 순서
1. 기존 저장소를 이 폴더의 형제 clinic_site_checkout에 둡니다.
2. Supabase SQL은 site/supabase/sql/001_adult_operations.sql 이후 002_adult_private_rpc.sql 순서로 적용합니다.
3. site/supabase/functions의 두 함수는 기존 함수 설정과 발송 환경을 유지하여 갱신합니다. 비밀 키는 제공하지 않습니다.
4. python3 build_app.py 이후 python3 integrate_site.py 및 python3 upgrade_site.py를 실행합니다.
5. clinic_site_checkout에서 npm run build 및 npm test를 실행합니다.
6. 성인관 DOM 검사는 node test_operations.cjs로 실행합니다. qa에 jsdom 26.1.0이 필요합니다.
7. 번역 검사는 ADULT_CHECK_ALL=1 node localization/verify_catalog.cjs로 실행합니다.
오프라인 단독 HTML은 기존 개인 학습용입니다. 웹사이트 운영 계정과 제출 기능은 기존 사이트 연동에 포함됩니다.
이번 수정본의 실제 브라우저 화면과 이메일 수신함 도착은 검증하지 않았습니다.

공개 ZIP의 관리자 알림 수신 주소는 CLINIC_ADMIN_EMAIL 환경 설정으로 지정합니다. 운영자 개인 주소를 공개 ZIP에 포함하지 않습니다.

단독 HTML은 build_app.py에서 재생성합니다. 코드 ZIP에는 같은 OCR 자료를 중복 내장하는 대형 단독 HTML 생성물을 제외하고 원본 코드와 실행 자산을 포함합니다. release/adult.html은 포함됩니다.

2026-10-18 관별 권한과 대시보드 업데이트
관리자 로그인은 두 관에서 공통입니다. 같은 mckayclinic.kr origin의 기존 Supabase Auth 세션을 사용합니다.
교사와 진행자는 같은 이메일 계정을 사용해도 학생관과 성인관에 각각 이용 신청하고 승인받아야 합니다.
학생관 가입과 승인은 성인관에 자동 적용되지 않으며 성인관 가입과 승인도 학생관에 자동 적용되지 않습니다.
성인관에 신청한 교사는 승인 대기 중 콘텐츠만 둘러볼 수 있습니다. 운영 코드와 참여 기록은 성인관 승인이 필요합니다.
학생관 기존 승인은 학생관 멤버십으로만 이전합니다. 기존 운영 중인 성인관 계정은 해당 관으로만 이전합니다.
공통 관리자 화면에서 관별 이용 신청을 각각 승인합니다. 기존 메일 함수도 관별 중복 방지와 안내를 사용합니다.
SQL 003_audience_memberships.sql 및 004_audience_policy_guards.sql을 002 뒤에 순서대로 적용합니다.
성인관 운영 대시보드와 참여 기록 검색 및 상태 필터와 관 전환을 제공합니다.
둘러보기는 참여 레코드를 만들거나 학습 기록을 제출하지 않습니다. 실제 참여는 별도 코드로 시작합니다.
진행자와 성인 참여자용 72초 무음 동영상 2편을 제공합니다. 큰 한국어 내장 자막과 VTT가 있습니다.
각 설명서는 한국어 원본 HTML과 PDF 및 DOCX와 HWPX입니다. 화면 안내는 10개 언어를 지원합니다.
guides/build_guides.py는 자산 재생성 코드입니다. 한국어 Research Sans KR 폰트와 ffmpeg 및 LibreOffice를 사용합니다.
node test_portal.cjs로 권한별 대시보드와 미리보기 및 안내 연결 115개 검사를 실행합니다.
site/supabase/tests/audience_memberships.sql은 관별 가입과 승인을 양방향 검증하고 전체 트랜잭션을 rollback 합니다.
시험에서 실제 메일을 보내거나 실제 사용자 계정을 만들지 않았습니다. 기기별 브라우저 렌더링과 메일 수신함 도착은 확인하지 않았습니다.
HWPX 설명서는 ZIP과 XML 및 본문 재추출을 검사했습니다. 실제 한컴 앱 렌더링은 검증하지 않았습니다. guides/build_hwpx_manuals.py에서 다시 생성합니다.

성인관 로그인 수정: 입구에서 이메일과 비밀번호로 직접 로그인합니다. 처리 상태와 오류 안내 및 중복 제출 방지와 응답 지연 안내를 제공합니다. 기존 Auth 세션과 관별 신청 및 승인을 유지합니다. Supabase JS 2.118.0 브라우저 배포본을 사이트 내부에 고정 배포하며 CDN 스크립트 로딩에 의존하지 않습니다. node test_staff_login.cjs로 31개 검사를 실행합니다.
성인관 시각화 개선: 로그인과 참여 코드 카드 구분 및 준비·연습·기록의 3단계 순서와 생활 수학 SVG 및 학습 모음 아이콘과 대시보드 카드 계층을 적용했습니다. 본문과 입력창은 큰 글자를 유지하고 좁은 화면에서는 1열로 표시합니다.
