From 677f717a800efe43316aa7f86b1d406ca80b1a6e Mon Sep 17 00:00:00 2001 From: hmmhmmhm Date: Thu, 8 Oct 2026 09:30:57 +0900 Subject: [PATCH 1/2] =?UTF-8?q?docs:=20=EC=84=B8=EB=B8=90=EC=9D=BC?= =?UTF-8?q?=EB=A0=88=EB=B8=90=20=EB=9F=B0=ED=83=80=EC=9E=84=20=EC=B0=A8?= =?UTF-8?q?=EB=8B=A8=20=EB=B3=B5=EA=B5=AC=20=EC=A0=88=EC=B0=A8=20=EA=B8=B0?= =?UTF-8?q?=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/seveneleven-stock-recovery-20261008.md | 22 ++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/docs/seveneleven-stock-recovery-20261008.md b/docs/seveneleven-stock-recovery-20261008.md index c11fcf88..7309e83e 100644 --- a/docs/seveneleven-stock-recovery-20261008.md +++ b/docs/seveneleven-stock-recovery-20261008.md @@ -34,4 +34,24 @@ CU·GS25·세븐일레븐 공통 중계 예산은 분당 69회, 일당 100,000 `tests/services/seveneleven/inventory-bounded.test.ts`는 직접·중계 단일 점포 호출, 거리순 제한, 0·미확인 구분, 개별 실패 보존, 직접·중계 429 중단을 검증합니다. -이 문서는 로컬 코드 복구를 기록하며 운영 배포나 운영 호출의 추가 성공을 주장하지 않습니다. + +## Mac 실행 런타임에 따른 403·502 + +같은 Mac, URL, 본문, 모바일 헤더로 비교했을 때 Node 24.15.0은 HTTP 403과 +Incapsula HTML을 반환했으며, Node 25.9.0은 HTTP 200 JSON을 반환했습니다. +설치된 중계 검증기에 정상 JSON을 넣으면 200이므로 이 장애는 응답 스키마 불일치가 +아니었습니다. 실행 버전에 따른 접근 차이는 확인했지만 TLS 지문 등 내부 차단 원인은 +확정하지 않았습니다. 원본 HTML은 정상 재고로 해석하지 않으며 중계의 502로 전달됩니다. + +복구 시 셸의 `node --version`만 확인하지 말고 LaunchAgent `ProgramArguments[0]`의 +실행 파일로 같은 요청을 확인합니다. 인증·원장·환경 파일을 보존하고 plist를 백업한 뒤, +검증된 실행 파일로 변경합니다. 운영은 Node 25.9.0으로 바꾼 뒤 공개 재고 응답에서 +`stockAvailable: true`, `stockError: null`을 확인했습니다. 이는 점검 시점의 결과이며 +향후에도 특정 버전이 항상 허용된다는 뜻은 아닙니다. + +변경 전 새 실행 파일로 중계 모듈을 로드해 호환성을 확인합니다. launchd는 `bootout` +후 기존 프로세스가 종료되기 전에 `bootstrap`하면 일시적으로 오류 5를 반환할 수 +있습니다. 종료 상태를 확인하고 재등록한 다음 건강 응답과 CU·GS25·세븐일레븐·CGV를 +확인합니다. 건강 응답 200만으로 외부 재고 성공을 판단하지 않습니다. 실행 파일이 +패키지 관리자 갱신으로 사라지지 않도록 경로와 버전을 운영 기록에 남깁니다. + From 7df20e06b7a3f8630ee2cf28a8d8b16ddadb15df Mon Sep 17 00:00:00 2001 From: hmmhmmhm Date: Thu, 8 Oct 2026 09:31:08 +0900 Subject: [PATCH 2/2] =?UTF-8?q?docs:=20=EB=B3=B5=EA=B5=AC=20=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=20=EB=81=9D=20=EB=B9=88=20=EC=A4=84=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/seveneleven-stock-recovery-20261008.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/seveneleven-stock-recovery-20261008.md b/docs/seveneleven-stock-recovery-20261008.md index 7309e83e..fdcc4ff2 100644 --- a/docs/seveneleven-stock-recovery-20261008.md +++ b/docs/seveneleven-stock-recovery-20261008.md @@ -54,4 +54,3 @@ Incapsula HTML을 반환했으며, Node 25.9.0은 HTTP 200 JSON을 반환했습 있습니다. 종료 상태를 확인하고 재등록한 다음 건강 응답과 CU·GS25·세븐일레븐·CGV를 확인합니다. 건강 응답 200만으로 외부 재고 성공을 판단하지 않습니다. 실행 파일이 패키지 관리자 갱신으로 사라지지 않도록 경로와 버전을 운영 기록에 남깁니다. -