실제 제작 소스에서 찾은 질문을 독립 합성 코드로 다시 만들었다. 전체 구현과 실행 예제, 테스트를 함께 공개하며 원래 업체의 프로그램과 자료는 연결하지 않는다.
범위는 명시한 규칙의 결과다
estimate는 유한한 양의 면적과 basic·extended 규칙만 받는다. 합성 계수로 하한과 상한을 만들며 규칙 버전과 synthetic units를 남긴다. 실제 설치 가격과 절감액, 계약 견적을 가져오지 않았고 quoteConfirmed는 false다. 작은 숫자로 입력 조건에 따른 차이를 검산하는 모듈이다.
실제 업종에 연결하려면 승인된 계수와 유효 범위, 현장 확인 절차가 필요하다. 함수가 계산에 성공했다는 이유로 시장 가격이 맞는지 검증됐다고 읽으면 안 된다. 입력 상한도 이 독립 실험의 한도이며 산업 기준이 아니다.
맥락과 수신 설명을 함께 남긴다
handoff는 계산 결과를 다시 만들어 일치하는지 확인하고 recipient를 별도 값으로 붙인다. own과 listed는 모두 직접 제휴 전달 완료를 뜻하지 않는다. listed에는 제출 전에 수신 상대를 확인해야 한다는 설명이 있다. 개인 신원과 연락처를 받지 않고 submitted도 false다.
문구만으로 실제 수신 경로가 검증되지는 않는다. 이 코드는 네트워크를 호출하지 않으며 문의를 접수하지 않는다. 실제 제출을 붙이면 인증, 개인정보 처리와 전송 실패 확인이 별도로 필요하다. 준비한 데이터와 실제 도착한 메시지를 같은 완료로 쓰지 않는다.
초기 문구가 편집한 문장을 덮지 않게 한다
prefill은 현재 메모와 로컬 revision을 받고 다른 문장이 이미 있으면 conflict를 반환한다. 명시적 교체를 선택하면 새 문장으로 바뀐다. 오래된 번호는 거절한다. 기존 소스의 자동 문구를 그대로 복제하기보다 새 독립 예제에서 편집 보존 정책을 드러냈다.
아래 화면은 면적 계산, 합성 문장 편집, 보존하면서 이어 넣기와 명시적 교체를 실행한다. 잘못 재계산하면 이전 맥락도 없애 오래된 결과가 전달되지 않는다. 이 인라인 코어는 공개 파일과 같으며 실제 서버 저장과 동시 사용자 편집을 구현하지 않는다.
코드와 구현 살펴보기
독립 합성 전체 구현
export function estimate(area,kind){if(typeof area!=='number'||!Number.isFinite(area)||area<=0||area>1000)throw Error('Area must be positive and bounded');const rules={basic:[2,3],extended:[3,5]};if(!Object.hasOwn(rules,kind))throw Error('Unknown synthetic rule');const [low,high]=rules[kind];return{area,kind,low:area*low,high:area*high,unit:'synthetic units',quoteConfirmed:false,ruleVersion:'demo-v1'};}
export function recipient(mode){if(mode==='own')return{mode,receivingParty:'This demonstration operator',directPartnerDelivery:false};if(mode==='listed')return{mode,receivingParty:'Listed party must be confirmed before submission',directPartnerDelivery:false};throw Error('Unknown recipient');}
export function handoff(result,mode){const expected=estimate(result.area,result.kind);if(JSON.stringify(result)!==JSON.stringify(expected))throw Error('Changed calculation context');return{context:expected,recipient:recipient(mode),personalDataIncluded:false,submitted:false};}
export function prefill(current,incoming,expectedRevision,replace=false){if(!Number.isSafeInteger(current.revision)||current.revision<0||expectedRevision!==current.revision)throw Error('Stale local revision');if(typeof current.note!=='string'||current.note.length>400||typeof incoming!=='string'||incoming.length>400)throw Error('Bounded note required');if(current.note&¤t.note!==incoming&&!replace)return{...current,conflict:true};return{note:incoming,revision:current.revision+1,conflict:false};}편집 충돌 뒤에 값이 남는지 확인한다
합성 메모를 쓴 뒤 이어 넣기를 누르면 conflict가 참이고 기존 문장이 남는다. 명시적 교체를 누르면 번호가 증가하고 새 맥락이 들어간다. 잘못 재계산한 뒤에는 그 맥락을 다시 보낼 수 없다. 입력의 성공뿐 아니라 오래된 값이 따라가지 않는 순서를 확인했다.
이 반례는 실행 기록과 테스트로 다시 확인할 수 있다. 다른 업무에 적용할 때는 이름만 바꾸지 말고 입력의 의미와 실패 정책이 같은지 먼저 확인해야 한다. 작은 독립 함수는 운영 프로그램 전체를 대신하지 않는다.
공개 코드와 ZIP은 같은 검토 파일을 사용한다. 실제 업체의 자료를 가져오거나 외부 시스템을 실행하지 않은 상태에서도 핵심 판단을 확인할 수 있도록 만들었다. 새로운 연결을 추가하면 그 연결의 결과는 별도로 기록해야 한다.
직접 확인한 실행과 남겨 둔 경계
소스 폴더와 ZIP을 새로 푼 폴더에서 각각 17개 테스트가 통과했다. 실행 예제의 실제 반환값도 records.json으로 남겼다. 공개 페이지의 코드는 내려받기 구현과 대조할 수 있다. 과거 프로젝트의 완료 보고와 테스트 수치를 이번 실행의 증거로 가져오지 않았다.
아래 화면은 실제 인라인 코드로 합성 상태를 바꾼다. 이벤트 스크립트는 DOM 대역에서도 실행해 결과를 확인했다. 이 검수는 실제 브라우저의 렌더링과 물리적 기기 조작을 포함하지 않는다. 실서비스 통합의 결과는 별도 근거로 확인해야 한다.
내려받아 적용하기 전에
ZIP에는 전체 코어와 테스트, 실행기, 저장된 결과와 사용 안내가 있다. 라이브 예제는 두 언어 HTML도 포함한다. 수정과 재사용이 가능한 새 합성 코드이며 고객 원본 이미지, 실데이터와 계정 정보는 없다. 실제 프로그램을 실행하는 지시와 외부 전송도 넣지 않았다.
적용할 때는 먼저 단위와 입력 출처, 실패한 경우의 안내를 실제 업무에 맞춰 정해야 한다. 테스트 통과가 모든 입력 사실과 운영 권한을 보장하지는 않는다. 필요한 인증·저장·전송과 화면 검수는 작은 계약 바깥의 일로 남긴다. 나는 재사용할 코드와 함께 어떤 판단을 다시 해야 하는지도 읽을 수 있게 공개한다.