[503CA 보수 원고 연결·편집 안내](../DPG-CX-503CA/README.md): 현재 503C 검수 변경분을 포함합니다. ## 현역 구성과 저장 규격 실제 접속은 [로컬 서버](../../tools/dev-server/README.md)의 `http://127.0.0.1:5174/`다. 이 폴더의 [index.html](index.html)은 개발실 편집 원본이며 release에 고정된 사본을 실행한다. O index.html은 이 입구로 이동하며 별도 게임이 아니다. [O boot.js](../DPG-CX-502O/boot.js)의 상대경로는 H 문서를 기준으로 해석한다. 현행 서버·저장 연결은 504C 절, 교육자료·정책은 504A/504B 절을 따른다. 다른 작업 절의 버전·저장 방법은 당시 이력이다. | 수정·조사할 역할 | 현역 파일 | |---|---| | 헤더 탐색·홈·내 어휘·결과·최근 기록·분석 화면 원고 | [index.html](index.html)의 헤더, [player.js](player.js)의 동작·본문 | | 내부 숙련도 재계산·응답 검증·문항 시간/점수 | [engine.js](engine.js), [policy.json](policy.json). 정책 항목과 실제 사용 코드를 함께 확인 | | 학년·학습 자격·추천·이어가기 | [progression.js](progression.js), [M runtime.js](../DPG-CX-502M/runtime.js) | | 진단 판정·적용·진단 표시 | M runtime.js·[ui.js](../DPG-CX-502M/ui.js), [진단 편집 안내](../DPG-CX-502M/README.md#현역-편집과-소비-경로) | | 계정 XP 장부 검증·전환·진단 기여·정산 영수증 | [account-xp.js](account-xp.js). 503J/O/Q 전환은 기존 정규화 경로이며 보수 때 수동 재실행하지 않음 | | 기본학습·무점수 첫 질문·리듬·성취·결과 상세 | [503B 학습 모듈](../DPG-CX-503B/README.md): runtime.js·learning.js·feedback.js. learning-data.js는 생성된 질문 자료 | | 읽기 전용 분석·피드백 | [analytics.js](analytics.js) 계산·원고, player.js 표시. 분석을 추천·XP로 역전파하지 않음 | | 영어 음성·효과음 | [speech.js](speech.js)의 Web Speech TTS, 503B feedback.js의 합성 효과음. 파일 음원 경로는 사용하지 않으며 실제 기기 발화 동기화는 미검증 | | 로그인·관리자·의견 | [O 계정 안내](../DPG-CX-502O/README.md), O accounts.js·admin.js·catalog-gate.js, [A review-notes.js](../DPG-CX-502A/review-notes.js) | | 공지·팁·튜토리얼·첫 설명·만두 | [R intro.js·guide.js 안내](../DPG-CX-503R/README.md). 별도 연습의 context.js는 메모리 전용 | | CSS·원본 로고 | H/O/R style.css·R character.css. O 계정 화면과 R 캐릭터에서 [원본 로고](<../../logo/02-03 대치동 박선생 상호+로고 흰색(1) 좌우(배경제거).png>)를 참조 | 현재 규칙은 [현행 기준의 읽는 순서](../../docs/08_영어학습개발/DPG-CX-502-영어학습재편-현행기준.md#현행-기준의-읽는-순서)에 따라 찾는다. 모든 규칙이 policy.json에 모여 있지 않으며 engine/progression/M/account-xp/503B에도 판정·검증 조건이 있다. 원고 변경·생성은 [L 갱신 범위](../DPG-CX-502L/README.md#현역-갱신-범위)를 따른다. data.json/data.js는 최종 소비 결과이며 직접 편집하지 않는다. X build-data는 이전 H 출력을 읽지 않는다. 필요한 호환 입력은 [word-metadata.json](word-metadata.json)·[legacy-node-titles.json](legacy-node-titles.json)과 S의 명시 입력이며, 최신 뜻·수준·선지·검수는 기존 담당 원고에서 결합한다. | 기록·규격 | 실제 소유 위치와 저장 경계 | |---|---| | 프로필·원응답 | engine.js의 EN502H-1 검증. attempts·진단 응답·배정·학습 이력을 보존하며 내부 숙련도 합계는 원응답과 현재 자료로 재계산 | | 계정 XP | 같은 프로필 안 accountXP. account-xp.js의 503J-1·scale 검증과 grants/diagnoses/quizzes. 합계 캐시·회차 성장 표시를 두 번째 장부로 만들지 않음 | | 회원·프로필 정본 | `dev-server/private/records.sqlite`의 users/profiles. [서버 소스](../../tools/dev-server/server.mjs), [실행·DB 안내](../../tools/dev-server/README.md). browser-records.js·O private bootstrap은 현행 로더에서 제외 | | 프로필 전송·충돌 | [storage.js](storage.js). 서버 revision 비교·중복 요청 영수증, 미전송 보존·명시적 충돌 선택. 기존 폴더 파일은 자동 이관하지 않음 | | 로그인·미완료 회차 | 서버 쿠키 세션과 DB scratch. O server-client.js가 EN502H:active/diagnostic-active 등 진행 키를 연결. 브라우저 DPG504C 키는 계정·탭별 미전송 보조이며 별도 정본 아님 | | 화면 설정 | R 입장 EN503R:entry::english, R 직전 팁 EN503R:lastTip::english, R 첫 설명 EN503RA:help::english, B 효과음 EN503B:sound. 브라우저 설정이며 XP·응시와 분리 | | 검수 의견·문제 신고 | A review-notes.js → 서버 opinions. 일반 의견·문항 제보·관리자 검수 의견을 O admin.js에서 조회. 계정별 브라우저 미전송함은 확인 후 제거 | 503D user01 초기화는 퇴역 상태다. 504C에서 기존 브라우저·폴더 계정은 보존만 하며 새 서버 계정으로 자동 이관하지 않는다. 구버전 파일 복원·resetEpoch 설명은 과거 이력이다. [퇴역 근거](../DPG-CX-503D/README.md). 검수·제보의 편집 주소는 [editors.js](editors.js)가 필요할 때 읽는 editor-sources.js/json에 있다. X editor-origins.mjs가 실제 ID·채택 원고·표시 소비처에서 파생하며 별도 편집 목록으로 관리하지 않는다. content/options를 구별하고 여러 담당 필드가 있으면 모두 표시한다. 과거 의견 원문·당시 주소는 보존하고 관리자 열람에서 현재 주소를 별도로 해석한다. 찾지 못한 항목은 확인 필요로 표시하며 생성물이나 임의 원고를 지정하지 않는다. ## 504C 서버 실행·저장 경로 [서버 사용법](../../tools/dev-server/README.md) · [버전·재사용 규칙](../../dev-server/README.md) · [검증 결과](../DPG-CX-504C/README.md). 개발실에서 H/O/A 원본을 편집하고 `assemble.mjs`로 고정 자산과 release를 추가한다. 선택한 release는 원본 파일을 직접 따라가지 않는다. 코드·정책·교육자료의 내용 해시는 배선 목록에 고정하고 계정 DB는 별도로 연결한다. 정상 이용에서 폴더 연결·기록 내려받기를 요구하지 않는다. 서버 미연결·비호환을 빈 기록으로 처리하지 않는다. 실행 변경에는 명시적 선택과 서버 재시작이 필요하다. 아래 과거 작업의 IndexedDB·폴더 저장·로컬 계정·초기화/이관 안내는 504C 서버 실행 방법이 아니다. 교육 내용·출제·정산 정책은 이번에 바꾸지 않았다. ## 504A 현행 실행 경로 현재 표시 로더는 `504B-20261006-8`, 자료 revision `bbf0927537f995c0`, 정책 `503Q-1`, 계정 장부 `503J-1`이다. 504A 생성 경로는 이전 H 출력 없이 재생성하며, 변경 전과 게임 자료 전체가 같고 명시 입력 조립 순서에 따른 revision만 달라졌다. 어휘·학습 예문·게임 문장·유형·점수·정책·ID·호환 정보는 변경하지 않았다. 504B는 [R의 24개 팁·랜덤 표시와 튜토리얼 첫 인사](../DPG-CX-503R/README.md#공지와-팁-원고-위치)를 반영했다. 팁에는 별도 제목을 표시하지 않고, 오늘 숨김·공지 우선과 기존 학습·저장 정책을 유지한다. [표시 검사](../DPG-CX-504B/README.md). 헤더의 `홈`은 영어 홈으로, 옆의 `메인`은 로그인 상태를 유지하며 기존 과목 선택 화면으로 돌아간다. 진행 중 퀴즈는 기존 나가기 처리로 중단·보관하고 저장 완료를 확인한 뒤 이동한다. 저장 복구가 필요하면 이동 대신 기존 복구 안내를 표시한다. 별도 튜토리얼의 같은 버튼은 연습 나가기 동작을 사용한다. 튜토리얼 입구는 같은 탭에서 이동하며, 영어 홈 입구도 기존 저장 완료·복구 확인을 거친다. 완료 팝업의 `실제 학습 시작하기`는 연습 기록을 이관하지 않고 기존 로그인으로 영어 홈을 연다. 관리자 A 화면은 H 최종 어휘를 기본으로 보여주며 원자료 참고를 별도로 연다. W 원점수에서 L 최종 문장으로 ID/별칭 대조를 제공한다. W/X/CA의 동일 어휘 합산은 W score-basis.mjs로 통합했고 내부 숙련도와 계정 XP의 책임은 유지했다. L 일반 갱신은 V → W → I → S → H → 503B → L → A 순서다. [검증 도구](../DPG-CX-504A/README.md). ## 503R 현행 실행 경로 503RA 반영 당시 표시 로더는 `503RA-20261005-2`, 자료 revision은 `e0a6ce19bfe02661`입니다. 최신 로더·자료는 위 504A 절을 따릅니다. `I’m a dabbawala.` 예문 1개를 출제에서 제외한 상태, 정책 `503Q-1`, 계정 장부 `503J-1`과 실제 배점·추천·저장 절차는 유지합니다. 기존 `index.html`을 새로고침하면 과목 선택의 영어 아래 튜토리얼에서 별도 연습 페이지로 이동할 수 있습니다. 실제 영어 입장에는 공지 또는 게임 팁을 하나 표시하고, 첫 계정은 어휘진단 → 구문진단 → 기존 추천으로 안내합니다. 저장 복구·충돌 해결을 먼저 진행합니다. 503RA는 별도 연습 화면의 안내를 팝업·모션 화살표로 바꿨습니다. 실제 게임에는 기능별 첫 사용 설명과 내 학습 현황 종합 탭의 만두 상태창만 연결합니다. 설명 확인 여부는 별도 화면 설정이고 만두 수치는 기존 계정 XP를 읽습니다. 실제 게임에는 연습 순서·화살표·가상 기록이 없습니다. [튜토리얼·공지 원고·검사 안내](../DPG-CX-503R/README.md), [현행 규칙](../../docs/08_영어학습개발/DPG-CX-502-영어학습재편-현행기준.md#503r-현행-입장안내영어-체험). 체험은 기존 H/M/503B 동작을 공유하는 메모리 전용 문맥이며 실제 계정의 프로필·장부·응시·진단·의견·설정·세션 백업을 사용하지 않습니다. ## 503Q 현행 실행 경로 503Q 반영 당시 로더는 `503Q-20261005-1`, 자료 revision은 `4ef490c2772dceab`, 정책은 `503Q-1`, 계정 장부는 `503J-1`입니다. 최신 입장·로더는 위 503R 절을 따릅니다. 아래 과거 작업 절의 로더·자료는 해당 작업 당시 상태입니다. 구문 진단의 하위 학년 인정은 16배입니다. 기존 계정도 구문 진단 지급액·회수액 자체를 한 번 새 기준으로 정하며 실제 퀴즈 손익, 어휘 진단·보정, 원응답은 유지합니다. 신규/기존 로그인·파일 불러오기·충돌 채택은 기존 장부 정규화를 사용합니다. 기본 통과 7배·부스트 완료 21배와 다른 퀴즈 정책은 그대로입니다. 결과는 퀴즈 종류와 짧은 결과, 새 기본 통과·부스트 완료 축하, 오답·시간 초과, 접힌 상세 기록 순서입니다. 어휘 실전의 경험치 카드에는 합계와 같은 분야별 점수 내역을 반복하지 않고, 기존 문항별 답·시간·점수를 펼쳐 볼 수 있습니다. 새 회차의 문항별 답·시간·점수와 연결 어휘·구문 점수는 실제 정산 출력으로 저장하며 계정 XP 영수증과 합계를 맞춥니다. 과거 회차에 없는 상세는 만들지 않습니다. 기존 다음 학습·재도전·홈·제보 동작을 유지합니다. [현행 규칙](../../docs/08_영어학습개발/DPG-CX-502-영어학습재편-현행기준.md#503q-현행-구문-진단성취결과), [검증 도구](../DPG-CX-503Q/README.md), [수행 기록·실제 적용 범위](../../docs/05_작업기록/영어/작업완료/DPG-CX-503Q-261005-CLOSED-구문진단16배와학습성취결과.md). 실제 물리 휴대폰·태블릿 확인과 Chrome 화면 폭 검증을 구별합니다. ## 503P 현행 실행 경로 503P 반영 당시 로더는 `503P-20261005-3`, 자료 revision은 `f79ebf02f6f0deb8`, 배점 정책은 `503O-1`입니다. 최신 버전은 위 503Q 절을 따릅니다. 계정 장부 `503J-1`은 유지합니다. 계정·학습 기록·보존 사본은 H `browser-records.js`의 IndexedDB `EN502H-learning-records/records`에 저장합니다. 이전 localStorage 기록은 원문 그대로 저장·재읽기 확인 후 같은 원문인 키만 옮깁니다. 폴더 파일명·내려받기/불러오기 형식은 그대로이며 실제 점수·응답·계정 ID를 재구성하지 않습니다. 회원가입은 계정과 빈 학습 기록을 함께 저장하고, 진단 적용·결과 확정은 저장 완료를 확인합니다. 저장 중인 회차·진단의 세션 백업은 완료 확인 전까지 보존합니다. 이전 버전 창에서 다른 기록을 다시 쓰면 덮어쓰지 않고 충돌을 안내합니다. 저장소/용량 자체의 실제 실패에는 복구 차단을 유지합니다. 내 어휘의 정렬 목록에 `검색 정확도순`이 있습니다. 선택하면 표제어/뜻 완전 일치 → 앞부분 일치 → 포함 일치 순이며 같은 등급은 알파벳순입니다. 검색어가 없으면 알파벳순으로 표시합니다. 기존 기본 정렬과 숙련도·최근 이력 정렬은 그대로 선택할 수 있습니다. 전체 어휘 9,198뜻·게임 예문 7,195개·별도 학습 예문 938개를 직접 읽어 뜻·해석·선지·참조·지칭을 보수했습니다. 현재 생성 결과는 역사 ID 포함 9,212뜻(독립 출제 가능 7,466뜻), 게임 예문 7,131개, 학습 예문 938개입니다. 각색문은 새 ID를 사용하고 원문·과거 응답·계정 XP를 보존합니다. 기본 구문의 설명·읽기에는 실제 학습 예문 원고를 연결하며 무점수 첫 질문과 실전은 게임 문항을 사용합니다. - 기본/부스트 어휘는 열린 같은 종류 전체에서 10뜻을 편성합니다. 1~9뜻은 다른 유한 학습의 정상 회차가 있으면 대기하고, 실제 마지막 잔량일 때만 실행합니다. 고2 이후 무제한 종합은 마지막 잔량을 막지 않습니다. - 틀린 어휘는 36% 미달 실패를 우선하고, 36% 이상은 직접 어휘 또는 보충 확인의 실패가 있어야 포함합니다. 구문 간접 감점만으로 졸업 어휘를 모음에 넣지 않습니다. 모음은 항상 10뜻부터 실행합니다. - 자동추천·수동 선택·시작·계속하기는 같은 자격을 확인합니다. 내 어휘는 진단 인정·기본 학습·문장 이력·직접 퀴즈·보충 확인을 구별합니다. [현행 기준](../../docs/08_영어학습개발/DPG-CX-502-영어학습재편-현행기준.md#503p-현행-원고품질복습편성), [수행 기록·직접 읽기와 검증 범위](../../docs/05_작업기록/영어/작업완료/DPG-CX-503P-261005-CLOSED-전체어휘예문품질및복습편성.md)를 참조합니다. 원고는 기존 A/I/C/V/W/X 소유 위치에서 수정하고 `node artifacts/DPG-CX-502L/refresh.mjs`로 생성합니다. 내용이 변경되면 직접 재검수한 해당 증거를 먼저 갱신합니다. 503P의 일회성 원고 적용 스크립트를 다시 실행하지 않습니다. ## 503O 현행 실행 경로 503O 반영 당시 로더 `503O-20261005-1`, 자료 revision `5ca312ea6c8e463d`입니다. 학습 정책 `503O-1`과 계정 장부 버전 `503J-1`은 유지하며 최신 로더·자료는 위 503P 절을 따릅니다. 어휘 진단의 하위 학년 최초 인정 기준은 36%입니다. 기존 계정에는 진단 기여 차액만 한 번 보정하고, 이후 퀴즈 손익과 과거 영수증은 유지합니다. 새 어휘 회차의 실패 감점은 기본 3%·부스트 6%이고 이미 시작한 옛 회차는 6%·12%입니다. 구문 점수식·36% 보충 확인·추천·졸업 기준은 유지합니다. 보정은 기존 로그인·조회·저장·가져오기·충돌 선택 경로에서 공통 적용됩니다. [수행 기록](../../docs/05_작업기록/영어/작업완료/DPG-CX-503O-261005-CLOSED-어휘진단감점보수.md), [검증 안내](../DPG-CX-503O/README.md). 아래 각 작업 절의 이전 진단 비율·감점 설명은 이 절의 변경 범위에서 대체됩니다. ## 503NA 현행 실행 경로 503NA 반영 당시 로더는 `503NA-20261005-3`입니다. 당시 자료 revision `e0cf6614918a68d6`, 학습 정책 `503N-1`, 계정 XP 정책 `503J-1`입니다. 현재 버전은 위 503O 절을 따릅니다. 홈 제목과 중복 진입점을 정리하고 경험치·학습 선택·복습/기록·진단을 묶었습니다. `내 어휘`는 상단에서, 구문 현황은 경험치 카드 또는 학습 현황의 구문 탭에서 엽니다. 좁은 화면에서는 글자를 줄여 카드 3개를 억지로 유지하지 않고 경험치 카드를 재배치합니다. 부스트 남은 개수는 버튼의 보조 정보입니다. 계정/설정, 목록·분석·학습·결과·의견창도 화면 폭에 맞춰 다듬었습니다. 게임 규칙·분석 계산·저장·TTS는 그대로입니다. [수행 기록](../../docs/05_작업기록/영어/작업완료/DPG-CX-503NA-261005-CLOSED-영어화면가독성마감.md), [격리 Chrome 검수](../DPG-CX-503NA/check-browser.mjs)를 참조합니다. 실제 휴대폰·태블릿 출력은 Chrome viewport 확인과 구별합니다. ## 503N 현행 실행 경로 503N 반영 당시 로더는 `503N-20261005-1`, 자료 revision `e0cf6614918a68d6`, 학습 정책 `503N-1`입니다. 현재 버전은 위 503O 절을 따릅니다. - H `progression.js`·`engine.js`와 M `runtime.js`: 종합의 5점 간격 목표/인접 5문장 편성, 기존 통과 기록 호환, 기본/부스트 예문 재진입 및 새 회차 보상, 적격 틀린 어휘 후보를 계산합니다. - O `accounts.js`·`style.css`, H `player.js`, A `review-notes.js`, O `admin.js`: 과목 선택과 게임 외 의견 작성·문맥 기록·파일 전달·관리자 열람을 연결합니다. - 503C `vocabulary-proposals.json`·`vocabulary-reviews.json`: 최종 뜻별 학년의 편집 원본입니다. 자료 생성은 기존 `node artifacts/DPG-CX-502L/refresh.mjs`를 사용합니다. 문장 점수는 참조에서 자동 계산합니다. 정책의 본문은 [503N 현행 기준](../../docs/08_영어학습개발/DPG-CX-502-영어학습재편-현행기준.md#503n-현행-재학습종합-목표과목-입구의견), 수행 결과는 [공식 기록](../../docs/05_작업기록/영어/작업완료/DPG-CX-503N-261005-CLOSED-재학습과종합진행보수.md)에 둡니다. 검증 명령은 `node artifacts/DPG-CX-503N/check.mjs`와 `node artifacts/DPG-CX-503N/check-browser.mjs`이며 합성 프로필과 격리 Chrome을 사용합니다. 아래 이전 종합 편성·5회 통과 제외 안내는 대체됐습니다. ## 503M 학습 현황·정확도와 속도 분석 홈의 어휘·구문·종합 경험치 카드를 누르거나 `내 학습 현황`을 선택하면 전체/어휘/구문 분석을 엽니다. PC에서는 hover, 모바일에서는 누름 반응이 있으며 키보드 Enter/Space도 지원합니다. 홈과 현황의 정답률은 `98% · 110/112`처럼 표시합니다. 현재 배정·과정·보충 위치와 학년별 기본/부스트/단독 학습 완료, 실제 응시한 항목 수를 구별합니다. 최근 10회와 누적 기록에서 정답률·시간 내 성공률·정답 시간 초과·방향별 어휘 시간·구문 제한시간 사용 비율을 봅니다. 충분한 동일 조건의 최근/이전 기록이 있을 때만 변화와 성과를 안내합니다. 취약 목록과 원답변은 펼쳐 확인하며 기존 구문 유형 현황도 이 화면에 통합했습니다. 분석은 읽기 전용입니다. 검수 조작·모의·중단 회차를 학습 성과에서 제외하며, 과거 시간은 당시 정책으로 읽습니다. 맞춤 취약 퀴즈는 생성하지 않고 홈의 기존 추천을 확인하도록 연결합니다. 기존 점수·XP 장부·출제 정책은 유지합니다. [503M 수행 기록](../../docs/05_작업기록/영어/작업완료/DPG-CX-503M-261005-CLOSED-학습현황과속도분석.md). ## 503LC 실시간 TTS·어휘 보수 현재 로더·자료 버전은 위 503O 실행 경로를 따릅니다. 영어 발음은 H `speech.js`의 웹 TTS 한 경로를 사용하며 파일 재생·생성을 요구하지 않습니다. **504E 사용자 승인 확정:** 문제·답안 표시와 타이머 시작 직후 TTS를 요청합니다. 발화 이벤트를 기다리지 않으며 음성 끔·지연·실패·다시 듣기는 풀이시간이나 정산을 바꾸지 않습니다. 카운트다운에서는 제한된 무음 예열을 시도하고, 취소·시간 초과를 정리합니다. 지난 발화는 취소하고 오류는 비차단 안내로 표시합니다. 헤더 사운드 설정에서 TTS·효과음·BGM을 각각 조절하고 미리 들을 수 있습니다. 1.01.03까지의 발화 시작 대기·TTS 음악 감쇠·분리된 소리 토글은 과거 방식으로 보존합니다. 504E 확정 원본은 1.01.04 조립 대상이며 정확한 선택·검증 상태는 [504E 확인](../DPG-CX-504E/README.md)과 서버 active.json을 따릅니다. 사용자가 로컬 소리 방향과 이번 개발 결과를 승인했습니다. 실제 PC·Android·iOS/iPadOS의 발화 지연 감소·청감 비율과 동형이의어 발음은 자동검증과 구별하며 기기별 검증 완료를 주장하지 않습니다. 후속 화면 보수: 홈의 중복 준비하기 버튼을 제거하고 도전하기에서 기존 필수 학습으로 연결합니다. 어휘 부스트 버튼은 현재 열려 있는 학년 범위의 실제 출제 가능 뜻 수를 표시합니다. 계산식·내부 정책 설명을 일반 학습 화면에서 정리했으며, 재진단의 경험치 하락 경고·시간 초과 감점·저장 실패 안내는 유지합니다. 경험치 상세와 관리자용 기술 정보는 접힌 상세로 구별합니다. 결과 화면은 퀴즈 종류를 상단에 표시하고 이번 판 경험치를 한 영역에 모읍니다. 부스트·종합구문은 배율과 실제 추가 획득을 표시합니다. 오답·시간 초과와 구문 보충 어휘를 먼저 보여주고, 통과 항목·누적 기록은 접어 둡니다. 다음 학습 버튼은 화면 하단에 고정됩니다. 503C 원고에 6묶음의 직접 판단을 적용했습니다. 새 대표 연결 1,512개, 독립 학습 제외 55개이며 현재 독립 출제 가능 뜻은 7,602개입니다. 역사 ID 9,198개와 예문 7,195개를 유지합니다. 기존 계정 장부는 재구성하지 않습니다. [직접 읽기 근거](../DPG-CX-503LC/reading-notes.md) · [현재 결과·남은 검증](../../docs/05_작업기록/영어/작업완료/DPG-CX-503LC-261004-CLOSED-실시간TTS와어휘원고보수.md). ## 503LB 현행 기본 학습·어휘 편성 - 기본 어휘는 최종 목록 미리보기에서 바로 실전에 들어가거나 리듬 학습을 거쳐 실전으로 진행합니다. 리듬 학습 도중에도 퀴즈로 넘어갈 수 있고, 표시 속도는 0.5~2배로 조절합니다. 기본 구문은 첫 무점수 질문 → 설명·예문 → 실전입니다. 부스트·종합·틀린 어휘 모음은 기본 학습 관문을 거치지 않습니다. - 음수 어휘의 강제 모의 조건을 제거했습니다. 모의는 선택한 경우에만 무점수로 진행합니다. 기본 새 회차·재도전에는 학습 단계를 다시 적용하며, 같은 주제의 설명 후 모의→실전에서는 이수를 재사용합니다. - 기본·부스트는 현재 적격 후보가 충분하면 10뜻, 부족할 때만 남은 1~9뜻을 출제합니다. 기존 목록·재도전 대상은 우선 유지하고 같은 적격 풀에서 보충합니다. 기본 10뜻은 양방향 20문항, 부스트는 단방향 10문항입니다. 모음의 최소 10뜻 조건과 503LA 보충 확인은 그대로입니다. - 실제 변경 경로는 H `engine.js`·`progression.js`·`player.js`, M `runtime.js`, 503B `learning.js`입니다. 503LB 적용 당시 H/O 로더는 `503LB-20261004-3`입니다. 원고·음원·정책·기존 계정 장부는 해당 작업에서 변경하지 않았습니다. [현행 기준](../../docs/08_영어학습개발/DPG-CX-502-영어학습재편-현행기준.md#503lb-현행-기본-학습어휘-편성) · [검증 재현](../DPG-CX-503LB/README.md) · [작업기록](../../docs/05_작업기록/영어/작업완료/DPG-CX-503LB-261004-CLOSED-기본학습과어휘회차보수.md). 아래의 실전 직행·음수 강제 모의·축소 목록 유지 안내는 대체됐습니다. 음성·원고의 이후 반영 상태는 위 503LC 절을 따릅니다. ## 503LA 현행 실패 판정·구문 후 어휘 확인 [503LA 현행 기준](../../docs/08_영어학습개발/DPG-CX-502-영어학습재편-현행기준.md#503la-현행-실패-판정구문-후-어휘-확인)이 아래의 문항 사이 어휘 확인·실패 모음 처리보다 우선합니다. - H `engine.js`·M `runtime.js`: 새 실전 구문 회차는 시작 시 36% 미만 뜻만 확인 대상으로 기록합니다. 구문을 전부 푼 뒤 실패 문장의 대상 뜻을 중복 없이 확인하고 마지막 한 번 정산합니다. 36% 이상은 확인 없이 감점하며, 미만은 보충 통과 시 해당 구문 어휘 감점만 면제합니다. - H `player.js`·`style.css`: 시간 초과 정답도 실패로 표시하고, 결과는 실패·선택 답·정답부터 보여 줍니다. 통과 목록은 하단에 접어 둡니다. 공통 문항 생성과 진단 재개에 고정 4번 ‘모르겠음’을 적용합니다. - 기존 계정 XP 장부·정책 `503K-1`·원고는 유지합니다. 새 회차의 `wordCheckVersion: 503LA`로 새 보충 규칙을 구별하며, 구형 회차는 기존 점수 해석을 유지합니다. - 503LA 적용 당시 로더는 `503LA-20261004-2`입니다. 최신 로더와 기본 학습·소수 회차 보수는 위 503LB 절을 따릅니다. 음성 지연·원고 보수는 후속 범위입니다. [재현 검사](../DPG-CX-503LA/README.md) · [수행 결과](../../docs/05_작업기록/영어/작업완료/DPG-CX-503LA-261004-CLOSED-실패판정과구문후어휘확인.md). ## 503K 현행 실행 경로 [503K 현행 기준](../../docs/08_영어학습개발/DPG-CX-502-영어학습재편-현행기준.md#503k-현행-학년-진행추천종합이어가기)이 추천·학년 개방·종합·이어가기의 이전 규칙보다 우선합니다. - `progression.js`: `course`가 현재 학년/하위 보충/종합 잠금/실제 5문항 통과를 계산하고 `recommend`·`eligiblePlan`·`continuation`이 같은 기준을 사용합니다. 별도 진행 DB나 점수통은 없습니다. - `engine.js`: 학년 안의 어휘 묶음, 명시된 학습 모드의 배율, 어휘 누적 합계 상한 제거, 저장되지 않는 회차 예상 점수. - `player.js`: 홈 추천·가능한 수동 선택, 시작 자격 재확인, 실제 모드 이어가기와 후보 소진 안내. - M `runtime.js`: 동일 학년 범위의 부스트 후보와 기존 분리 진단/회차 내 어휘 확인. - `account-xp.js`의 `503J-1` 장부·기존 영수증은 유지하고 B `finish`에서 새 증감만 기록합니다. 503J 최초 전환을 다시 실행하지 않습니다. - 교육 편집 원본은 503C의 학년 보수 4건, 생성은 기존 L/X 경로입니다. 로더의 최신 버전은 위 503LA 절을 따릅니다. [재현 검사](../DPG-CX-503K/README.md). 아래 503J의 진단·배점·어휘 확인 기준은 대체되지 않은 부분에 적용합니다. ## 503J 현행 실행 경로 학습 단계·배율·분리 진단·오답 확인·최초 장부 전환은 [503J 현행 정책](../../docs/08_영어학습개발/DPG-CX-502-영어학습재편-현행기준.md#503j-현행-진단학습-단계정산)을 우선합니다. 아래 이전 정책 중 3배 부스트, 24%/40배 졸업, 종합 20배·70:30, 별도 어휘 선별 회차·절반 보상 복습은 대체됐습니다. - `policy.json`: 유효 기본점수 6배, 12/36%·7/21배, 부스트 2배·종합 3배의 설정. - `engine.js`·`progression.js`: 내부 점수와 현재 점수에 따른 단계·출제·종합 잠금. - `account-xp.js`: 기존 프로필의 독립 계정 XP 장부, 축별 진단 회수·복원, `503J-1` 최초 전환. - `player.js`: 미리보기 듣기, 부스트 직접 진입, 회차 내 어휘 확인과 틀린 어휘 모음. - `../DPG-CX-502M/runtime.js`·`ui.js`: 분리 진단과 부스트 후보, 무보상 어휘 확인 문항. - `../DPG-CX-503B/runtime.js`·`learning.js`: 1회 정산과 학습 버튼. 저장은 기존 H/O 경로 유지. - `../DPG-CX-502X/compile.mjs`: 원고 점수에 정책을 적용한 최종 유효 점수·문장 점수군 계산. 갱신 명령은 `node artifacts/DPG-CX-502L/refresh.mjs`. H/O 로더는 같은 패치 버전의 실행 파일을 읽습니다. [정산·화면·저장 재현 검사](../DPG-CX-503J/README.md). ## 503I 현행 계정 경험치·내부 숙련도 홈·HUD·결과·최근 기록·관리자 요약의 경험치와 레벨은 같은 프로필의 `accountXP` 장부를 사용합니다. 출제·배치·부스트·어휘/구문 게이지는 원응답을 현행 자료·정책으로 재계산한 **내부 숙련도**를 사용합니다. 아래 503G 등의 ‘과거 응답 재계산’은 내부 숙련도에 적용하며 이미 확정한 계정 XP를 다시 쓰지 않습니다. 계정 정산 확장은 [account-xp.js](account-xp.js), 내부 계산은 `engine.js`, 실제 실전 완료 연결은 `503B/runtime.js`입니다. XP는 진단 기여분과 퀴즈 증감으로 나누고 합계 캐시는 메모리에만 둡니다. 레벨 기준도 장부에 고정합니다. 기존 프로필은 새 규칙으로 최초 한 번 재구성하며 옛 점수 보존·차액 보상·별도 저장소를 만들지 않습니다. 근거가 부족하면 원기록을 유지하고 확인을 요구합니다. 재진단의 하향은 빠진 학년의 진단분만 회수하고, 재상향은 처음 지급한 금액만 복원합니다. 퀴즈 증감·응시 이력과 부스트 실패는 유지합니다. 시작 경고와 결과의 정확한 변경량을 확인한 뒤 **이 위치로 시작**을 눌러야 적용합니다. [현행 규칙](../../docs/08_영어학습개발/DPG-CX-502-영어학습재편-현행기준.md#503i-현행-계정-경험치내부-숙련도) · [재현 검사](../DPG-CX-503I/README.md) · [수행 결과·검수 한계](../../docs/05_작업기록/영어/작업완료/DPG-CX-503I-261003-CLOSED-내부숙련도와계정경험치분리.md). ## 503HA 현행 읽기 표시 7,195문장의 학습·리듬 읽기·정답 확인 후 해설에 `/`와 명사 수식 `( )`, 대응 직독직해를 표시합니다. 퀴즈 풀이 중에는 원문을 그대로 씁니다. 기존 내용 승인·참조·점수는 유지하며, 읽기 표시는 [공통 기준](../DPG-CX-502W/authoring-contract.md)에 따른 별도 확인을 통과해야 연결됩니다. [실행 결과](../../docs/05_작업기록/영어/작업완료/DPG-CX-503HA-261002-CLOSED-구문읽기표시보수.md). ## 503H 현행 어휘·선별·목록 어휘와 숙어는 표현↔뜻으로 출제합니다. 실전 구문 종료 후 오답·유효 시간 초과 문장에서 숙련도 24% 미만의 뜻을 모아 바로 영어→뜻 선별을 시작합니다. 미리보기·모의 관문 없이 일반 1배로 정산하고, 실패한 뜻만 명시적 보강에 편입합니다. 하위 어휘가 12% 미만으로 떨어져 일반 학습에 복귀하는 규칙은 유지합니다. 일반·부스트 어휘 목록은 `wordRounds`, 미완료 선별은 `screenings`에 같은 계정의 기존 기록과 함께 저장합니다. 홈·모의·취소·재접속으로 목록을 바꾸지 않고 실전 완료 후 다시 구성합니다. 선별은 남은 문항을 이어 풀어 한 번만 정산합니다. 옛 구문 오답 전량을 다시 소환하지 않습니다. 기본 예문 219개를 보충해 전체 7,195개입니다. 177주제 모두 기본 예문이 최소 6개이며, 도입 5개를 지정한 주제는 학습자 출제 자격 안에서 해당 예문과 대응 설명을 사용합니다. 그 외에는 낮은 어휘 수준부터 설명 예문 5개를 고릅니다. 전체 도입을 검토해 103주제의 예문 또는 설명을 보수했습니다. [검증·결과](../../docs/05_작업기록/영어/작업완료/DPG-CX-503H-261002-CLOSED-어휘퀴즈선별예문보수.md). 아래 이전 선별·자료 부족 설명은 이 보수 전 이력입니다. ## 503G 현행 학습·부스트 후속 사용자 지정 `503G-2`: 어휘는 **문항별 4초 이내 정답**만 통과하며, 오답·유효 시간 4초 초과는 뜻별 만점의 **−6%**입니다. 정답은 `만점 × 3% × 2초 / 응답시간`, 상한은 **12%**(0.5초 이하)입니다. 회차의 다른 문항으로 시간을 보충하지 않습니다. 부스트는 기존대로 이 기본 증감의 3배이며, 과거 응답도 현행 계산식으로 재계산합니다. 구문 자체의 점수식과 진단 무점수는 유지합니다. 아래의 어휘 1초 기준·15% 상한·회차 시간 보충 설명은 이전 기준입니다. 현재 배정 학습과 아래 학년 부스트에 각각 어휘·구문 진입을 둡니다. 기본 구문은 계정의 `learningTopics.normal`, 부스트는 `.boost`에 진행 중 주제를 저장하고 40배 숙련 전에는 홈·재접속으로 바꾸지 않습니다. 20배 선행 개방과 종합 수동 선택은 별개입니다. `learningWords`와 문장 오답의 뜻 ID를 일반 어휘 풀에 합치며 24% 이상은 자동 출제에서 제외합니다. 명시적 강등·보강은 아래 학년 12% 출제 제외보다 우선합니다. 부스트는 보상 상한 적용 후 일반 증감량의 **3배**입니다. 구문에 포함된 어휘도 같으며 특별 배율은 중첩하지 않습니다. 실패한 뜻/주제는 일반 학습으로 이어지고 재진단으로 부활하지 않습니다. 과거 응답도 현행 계산식으로 다시 계산하며 옛 24%/40배 일괄 보충은 폐기했습니다. 503F 진단·시간·12% 시작점은 유지합니다. 설명 예문 5개·추가 보기·같은 예문의 리듬 읽기와 적용 5문항을 사용합니다. [자료 부족 목록](../DPG-CX-503G/example-shortages.md), [503G 설계](../../docs/07_작업설계/DPG-CX-503G-작업설계.md), [검증 근거](../DPG-CX-503G/checks.json). 아래 과거 하위 확인 보상 설명보다 이 절이 우선합니다. ## 503F 현행 진단·통과 시간 [M 현행 안내](../DPG-CX-502M/README.md)의 학년별 7문항·85%·미통과 2회 제외 진단을 사용합니다. 탐색 문항 한 번을 맞혀 올라가는 것과 학년 최종 통과는 구별합니다. 통과 시간은 어휘 4초·구문 3초+영어 단어당 2초이며, 반비례 보상 기준 1초/2초+단어당 1초는 별도로 유지합니다. 통과 수준과 다음 학습 시작 위치를 나눠 저장합니다. 구문 진단은 어휘 통과 범위 안의 예문으로 권장 학년을 검사하고, 배정 학년 아래 구문은 홈의 **아래 구문 퀴즈**에서 학습 없이 확인·부스트를 받을 수 있습니다. 원응답·과거 정책·개인 기록을 초기화하지 않습니다. [503F 설계](../../docs/07_작업설계/DPG-CX-503F-작업설계.md). 503F 후속 승인: 어휘 배정 학년 아래의 출제 가능한 뜻별 어휘는 **만점 12%까지 시작 점수를 한 번 보충**하고 구문에서 바로 사용합니다. 기존 높은 점수·이후 가감점을 유지하며 재접속·재진단으로 중복 지급하지 않습니다. 기존 브라우저 기록은 다음 접속 시 원본 보관 후 자동 반영하고, 저장 폴더 기록도 백업 후 반영했습니다. 일반 어휘 출제는 배정 범위를 유지하되 하위 어휘가 12% 미만으로 떨어지면 보강합니다. 아래 초기 점수 없음 설명은 후속 승인 전 이력입니다. ## 503D 당시 진단·하위 확인 보수 현행 진단은 [M 사용 안내](../DPG-CX-502M/README.md)의 정답·문항별 시간 동시 판정을 따릅니다. 배치 시 하위 점수를 일괄 지급하지 않으며, 플레이 중 하위 확인 통과에 1회 보상을 줍니다. 일반 퀴즈의 반비례 보상·감점 규칙은 유지합니다. user01 저장 파일은 백업 후 초기화했고, 다음 접속 때 브라우저 기록을 한 번만 초기화하는 지시를 반영했습니다. 실제 사용 중인 브라우저의 재접속은 미확인입니다. --- ## 503B 현행 학습·성장 표시 [결과](../DPG-CX-503B/report.md) · [구현·검증 안내](../DPG-CX-503B/README.md). 구문은 **내용 배우기 / 모의시험 / 실전** 중 선택한다. 학습·모의 종료 후에도 세 가지 선택이 있고 처음 배우는 유형의 실전을 강제 차단하지 않는다. 내용 배우기는 문제→읽는 방법→용어·공통 구조→다른 문장 적용이다. 리듬 읽기는 선택형 보조이며 전체 영어를 유지하고 구간을 강조한다. 구문 미리보기는 제거했다. 실전 결과와 최근 기록에서 회차별 어휘·구문·종합 성장량을 확인한다. 정답 효과음은 연속 정답에 따라 높아지고 상단에서 끌 수 있다. 학습·모의는 무점수이며 점수·출제·진단 정책은 그대로다. 아래의 ‘처음 배우는 구문은 학습부터’·구문 메트로놈 강제 설명은 과거 이력이다. 기존 음수 어휘 보호와 저장 오류 차단은 유지한다. 503CA 반영 후 현행 게임에는 검수 완료 6,976예문이 반영되어 있다. # 현행 로컬 게임 — 502X + 502YA 보수 502YA-2 후속: 실전 구문 오답은 같은 시간의 정답 어휘 보상(상한·부스트 적용 후)의 절반을 차감한다. 유효 시간 내 3지선다 찍기의 뜻별 원점수 기댓값은 0이다. 모의·복습 무감점은 유지한다. [추가 검증](../DPG-CX-502YA/guess-neutral-check.json). [502YA 결과·제한](../DPG-CX-502YA/report.md): 문항별 시간 판정, 회차 실패 중 정답도 실전 5회 집계, 당시 정확도 기반 어휘 진단·임시 시작(현재는 상단 503D 진단으로 대체), 종합 목표군 우선, 자동 같은 분야 2회 연속 제한을 적용했다. 저장 실패 시 다음 도전을 멈추고 복구·내려받기를 제공한다. 기존 기록은 현행 정책으로 재계산하며 패치 보상 경로를 유지한다. 아래 과거 설명 중 다른 판정·추천 기준은 사용하지 않는다. [게임](index.html) · [전체 예문](../DPG-CX-502L/index.html) · [177유형 지도](../DPG-CX-502V/graph.html) · [편집·갱신 기준](../DPG-CX-502X/README.md) 현행 유형·예문은 V와 X/W/503A, 어휘는 A/J를 사용한다. 최신 검수·반영 범위는 [L 전체 목록](../DPG-CX-502L/index.html)에서 확인한다. 점수는 뜻별 만점 대비12%/24%, 시간 반비례와 최종상한을 적용한다. 구문은 실제 사용 노드마다 가산·3배 감점하며 최저0점이다. 노드20배수에서 다음 선행을 열고40배수 이후 종합에서 다룬다. 원응답으로 현행 점수·진도를 재계산하고 대응 불가능한 기록은 명시적으로 차단한다. 런타임 편집: H/engine.js·progression.js·player.js·policy.json, M/runtime.js·ui.js, O/accounts.js·boot.js·admin.js, 학습·성장 표시는 [503B 안내](../DPG-CX-503B/README.md)를 따른다. 데이터 갱신은 저장소 루트에서 node artifacts/DPG-CX-502L/refresh.mjs. 새 계정 저장소는 없다. 모의·취소는 무점수다. 아래는 각 작업 당시 이력이다. 예전 N 노드·30/60점·옛 수량·구문 전체 완료 관문을 현행으로 적용하지 않는다. --- > **현행 진행·보상: [502R 설계](../../docs/07_작업설계/DPG-CX-502R-작업설계.md)**. 신규 응시는 시간 반비례 보상, 어휘12/24점, 열린 미완료10개 이하에서 다음 묶음 개방, 자동2:1/1:2, 현재 어휘 수준 중심 구문, 실전 예문5회 통과 제한을 사용합니다. 아래의30/60점·실전1회·구문 전체 완료 후 수준 상승은 과거 이력입니다. > 502Q 진행 중: [기초 문장·절반 보상 복습 및 자료 추가 안내](../DPG-CX-502Q/README.md). 아래 수량은 각 작업 완료 시점의 이력이며 최신 수량은 L 검수 목록에서 확인한다. > **현행 진행·화면은 [502P 안내](../DPG-CX-502P/README.md)**를 따른다. 아래 H/I/L 시점의 수량·전체 목록·재출제 설명은 이력이다. 현재 도전, 학습 난도 층위, 통과 문장 실전 제외, 결과 문항 신고가 적용된다. > 현행 접속·계정별 저장·관리자 검수는 [502O 안내](../DPG-CX-502O/README.md)를 따른다. 아래 단일 프로필 저장 설명은 O 이전 구현 이력이다. > 2026-09-28 현행 게임 구문은 **[502N](../DPG-CX-502N/README.md)의 114유형·181직접선행·858예문**이다. 아래 101구문 설명은 개편 전 이력이다. 유형·설명·역할은 N, 원문·뜻 참조·플레이 경로는 기존 위치를 유지한다. > 현행 진단 배치·문맥 어휘 보강은 [502M 사용 안내](../DPG-CX-502M/README.md)를 따른다. 아래 최초 H/I 수량·기능 설명은 과거 제작 범위이며, 현재 자료는 L의 101구문·858예문 및 6,982개 뜻별 어휘다. > 2026-09-27 현재 플레이 자료는 [502L](../DPG-CX-502L/README.md)에서 101구문·검수 완료858예문으로 확장했다. 아래 최초 H 제작 범위와 구별한다. 기존 ID·정책·기록 형식은 유지하며 미검수·보류 예문은 출제하지 않는다. # 영어 502H — 로컬 플레이 예문 사용 여부는 [502K 검수 상태](../DPG-CX-502K/README.md)를 따른다. D의 고정 뜻 ID를 직접 소비하며 미검수·보류 예문은 학습·출제하지 않는다. 현재 게임 범위는 기존 6구문·29예문이다. [플레이 열기](index.html) · [승인 설계](../../docs/07_작업설계/DPG-CX-502H-작업설계.md) · [H 초기 수행 기록](../../docs/05_작업기록/영어/작업완료/DPG-CX-502H-260927-CLOSED-어휘구문로컬플레이.md) · [I 전체 어휘 확장 결과](../../docs/05_작업기록/영어/작업완료/DPG-CX-502I-260927-CLOSED-전체어휘연결과학습현황.md) ## 사용 `index.html`을 Chrome에서 열어 **빠른 시작 / 어휘 / 구문**을 선택한다. 준비 화면에서 메트로놈 학습, 실전, 모의퀴즈를 고른다. 모의는 같은 문항·시간·정오 판정을 사용하지만 실제 점수와 점수 기반 진도에는 반영하지 않는다. 모의 기록은 실전 통계와 구별한다. 첫 구문은 학습을 마친 뒤 퀴즈를 시작한다. 어휘는 10뜻을 영한·한영으로 총 20응답, 구문은 사용 가능한 예문을 최대 5개 출제한다. 어휘 점수가 준비되지 않으면 먼저 어휘를 학습한다. 이 값과 시간·부스트·성장식은 `policy.json`의 **검수용 임시 설정**이다. 공식 학습효과·실력 등급이 아니다. 현재 범위는 **4,341표제어·6,736개 뜻별 어휘 항목, 구문 1~6·29예문**이다. 502I에서 전체 어휘를 연결했다. 후속 승인으로 보류 100건을 교정·통합·분리했다. 이후 [502J 검수 상태 확정](../DPG-CX-502J/README.md)으로 완료 6,736개·보류 0개를 구분하고, 중복 31개는 대표 항목만 출제한다. 현재 독립 어휘 출제 대상은 6,705개이며 기존 139군 위치를 유지한다. [보수 내역](../DPG-CX-502I/repair-260927/applied.json). 기존 출제 6,684개 ID와 기록 연결은 유지했다. 초기 H의 102뜻 ID와 기존 구문·점수·저장 주소는 유지했다. 구문 전체 101개나 다른 분야·서비스까지 완성한 결과는 아니다. 위쪽 **어휘 현황**에서 검수 완료/미검수/보류와 이유, 뜻별 점수·수준·학습 이력·잠금·보류·발음을 확인한다. 검색·필터 후 스크롤하면 다음 자료가 표시된다. 같은 단어라도 뜻마다 점수가 다르며 열람·발음만으로 잠금이나 점수가 바뀌지 않는다. 구문 예문 미연결 뜻도 표시한다. 상태는 **REVIEW**다. H의 [초기 독립검수](audit/independent-review.md)는 당시 범위의 이력이다. I의 전체 검수와 보수 영향 확인은 [I 공식 기록](../../docs/05_작업기록/영어/작업완료/DPG-CX-502I-260927-CLOSED-전체어휘연결과학습현황.md)을 따른다. 사용자 종료 승인 전이다. 단어 발음은 기존 501과 같은 Windows Microsoft Zira Desktop으로 만든 WAV다. 화면의 ‘다시 듣기’로 재생하며, 영어→뜻에서는 자동 1회 재생한다. 다음 문제 이동은 음성 종료를 기다리지 않는다. 구문독해·문맥 보강은 문장 음성을 생성하거나 재생하지 않는다. ## 기록과 의견 개인 기록은 `EN502H:profile:1`에 자동 보관한다. 같은 브라우저·주소에서 다시 열면 이어진다. 파일 URL과 HTTP, 다른 브라우저는 저장 공간이 다를 수 있으므로 주소를 바꿀 때 파일을 명시적으로 불러온다. 501 기록을 가져오거나 변환하지 않는다. ‘결과 저장 폴더 연결’의 권장 폴더는 **`artifacts/DPG-CX-502H/play-results/`**다. 연결 후 회차 종료·취소 시 `EN502H-profile.json`을 자동 저장한다. 새 창/새로고침 후 폴더 쓰기 연결은 다시 허용해야 할 수 있으나 브라우저 기록은 자동 복원되므로 기록 파일을 매번 불러올 필요는 없다. 보안 컨텍스트·브라우저 지원에 따라 폴더 연결이 불가능하면 기록 내려받기를 사용할 수 있다. 브라우저와 파일 내용이 다르면 자동 덮어쓰기를 중단한다. 사용자 ID·응시 수·갱신 일시를 보고 채택할 출처를 고른다. 2026-10-05 보수 이후 연결 폴더가 있으면 덮기 전에 두 기록을 각각 `EN502H-preserved-시간-ID-browser.json` / `EN502H-preserved-시간-ID-incoming.json`으로 보관한다. 폴더가 없으면 기존 브라우저 보존 키에 보관한다. 보존 실패 시 채택하지 않는다. 브라우저 용량 부족으로 폴더 저장까지 막히는 문제를 제거했으며 기존 파일을 지우거나 나중 날짜만 보고 자동 채택하지 않는다. 검증은 격리 브라우저와 가상 폴더·사본에서만 했다. 검수 의견은 기존 502A 의견 도구를 읽기 전용 재사용한다. 대상 키는 `502H:`로 구별하며 기존 의견은 수정하지 않는다. 의견 파일은 `review-comments/`에 연결할 수 있다. 개인정보·플레이 결과·의견은 Git 보존 대상이 아니다. ## 편집·생성·재사용 | 위치 | 역할 | |---|---| | `authoring.json` | 기존 6구문의 설명·문장별 선지·핵심/서브·목표 뜻·채택 관계. 초기 어휘 선지/우선순위 필드는 이력으로 보존하며 현행 전체 어휘는 I가 공급 | | [I 연결 자료·사용법](../DPG-CX-502I/README.md) | 전체 뜻의 선지·잠정 우선순위·보류·뜻별 발음. `editorial-decisions.json`과 검수된 후보를 조립해 `vocabulary-play.json`으로 소비 | | `identities.json` | H의 뜻별 고정 ID와 원본 뜻 대응. A의 배열 인덱스를 개인 ID로 쓰지 않음. 삭제·재발급하여 기존 개인 점수를 끊지 않음 | | `policy.json` | 임시 개방·시간·부스트·성장 설정. 사용자 확정값과 구별 | | `build.mjs` | A/B/C/D 정본과 I 연결 자료를 읽고 참조 검증·조합하여 H 표시 데이터 생성. 원본에 쓰지 않음 | | `data.json`, `data.js` | 현행 생성 결과. 직접 편집 금지. 본문·뜻·해설의 두 번째 편집 정본이 아님 | | `engine.js` | 출제 자격·랜덤·회차 정산·현행 연결 재계산. 순수 함수로 사본 실험 가능 | | `storage.js` | H 전용 브라우저 보관·파일 자동 저장·충돌 채택. 501 저장 로직의 방식만 계승 | | `player.js`, `index.html`, `style.css` | 메트로놈·실전/모의·목록·성장·의견 진입. 501의 취소·음성·타이머 방식을 필요한 부분만 재사용 | | `speech.js` | 현행 웹 실시간 TTS·취소·실패 처리. 파일 가용성과 무관 | | `make-audio.ps1`, `audio-input.json`, `media/` | 과거 음원 생성 이력. 현행 실행·갱신에서 사용하지 않으며 재실행하지 않음 | ```powershell node artifacts/DPG-CX-502L/refresh.mjs node artifacts/DPG-CX-503LC/check-data-history.mjs node artifacts/DPG-CX-503LC/check-speech.mjs node artifacts/DPG-CX-503LC/regression-logic.mjs node artifacts/DPG-CX-503LC/check-browser.mjs node artifacts/DPG-CX-503LC/regression-browser.mjs ``` 원고 변경 후 빌드하고 새로고침한다. 현재 원고 범위 밖에 예문을 추가하려면 제작자가 뜻·핵심/서브·선지를 먼저 확인해야 한다. 미연결을 런타임에서 추측하지 않는다. 어휘 배열 재배치에는 뜻으로 다시 찾지만, 뜻 자체 변경·분리/통합은 식별 대응을 확인해야 한다. 사라진 항목의 과거 응답은 기존 참조를 보존하고 ‘판단 필요’로 보고하며 임의 다른 뜻으로 옮기지 않는다. 과거 응시는 정오 사실·원래 참조·당시 시간과 정책을 보존한다. 현재 채택 참조로 점수를 재계산하고, 변경된 항목의 적합한 재퀴즈를 통과할 때 연결 변경별 패치 2배를 한 번 적용한다. 무관한 자료 추가로 같은 보상이 되살아나지 않는다. 재도전도 최신 자격·보상을 다시 계산한다. 검수용 패치·가짜 점수를 사용자의 실제 프로필에 넣지 않는다. ## 검증 경계 `engine-check.json`은 정산·진도·재분류의 사본 실험, `browser-check.json`은 격리 Chrome의 실제 페이지 조작·자동 저장 API 모의 결과다. 스크린샷은 실제 렌더링을 확인한 것이며 물리 휴대폰 검수를 뜻하지 않는다. Windows WAV 생성과 브라우저 재생은 실제 사람의 발음·청취 품질 확인과 구별한다. 실제 폴더 권한 UI·물리 휴대폰·실제 학생 효과는 별도 확인이다. 최종 판정과 남은 지적은 공식 수행 기록을 따른다.