# 자료 취합 운영 기준 — 2026-09-13


## 2026-09-15 00:23 KST Costco 집중 재조사

| 국가 | 원천 | 가격·구성 | 장당 현지가 | 장당 원화 | 근거 |
|---|---|---|---|---|---|
| 캐나다 | [Costco](https://www.costco.ca/CompareProductsDisplay?partNumbers=4000316250) | CAD 99.99 / 24매 | CAD 4.1662 | 4,034.99원 | 로컬 화면·원문 수집 + 독립 검증 |
| 호주 | [Costco](https://www.costco.com.au/c/Biodance-Bio-Collagen-Real-Deep-Mask-24-Pack/p/1847817) | AUD 119.99 / 24매 | AUD 4.9996 | 4,803.05원 | 로컬 화면·원문 수집 + 독립 검증 |
| 미국 | [Costco](https://www.costco.com/CompareProductsDisplay?partNumbers=4000283885) | USD 72.99 / 24매 | USD 3.0412 | 4,083.29원 | GPT 공식 웹 원문 참고값 |

- 캐나다: 상세 페이지의 Online Price 회색 로딩 칸 대신 동일 상품 번호 4000316250의 공식 비교 페이지를 반복 수집 경로로 연결했다. 원래 상품 URL은 primary_product_url로 보존했다. Qwen 3.6이 브라우저 화면을 수집하고 Qwen 3.8이 가격·24매를 추출했으며 프론티어 독립 검증을 통과했다. 재고·배송지는 미확인이라 현재 권역 평균에서 제외한다. 검증된 표시가와 행사 관측 이력은 유지한다. 반복 수집 대상으로 복귀했다.
- 호주: 공식 24 Pack 상품 원천을 신규 등록했다. Qwen 3.8의 실제 브라우저 수집·추출과 프론티어 검증을 통과했다. 온라인 재고 있음·배송 포함 표시가이며 현재 권역 평균 대상이다.
- 미국: 공식 상세 페이지와 공식 비교 페이지 모두 로컬 브라우저에서 ERR_HTTP2_PROTOCOL_ERROR가 발생했다. HTTP/2 비활성화 호환성 점검도 시간 초과했다. GPT 웹 도구의 공식 비교 페이지 원문(today)에서 확보한 USD 72.99 / 24매는 참고값이며 평균·추세·DOP에서 제외한다. 회원 조건·재고·할인 행사는 미확인이다.
- 뉴질랜드: 공식 홈페이지·공개 상품 검색에서 해당 상품 가격을 확보하지 못했다. 미판매로 단정하거나 호주 판매가를 대입하지 않는다.

가격은 온라인 배송 포함 표시가다. 매장 Inline·Same-Day 가격과 혼합하지 않는다. 실제 캡처는 캐나다 9/15 00:24 KST, 호주 00:23 KST이며 환율 기준일은 9/14다. Costco용 로컬 읽기 규칙을 추가했고 관련 검증 19건이 통과했다.

보고서: `data/processed/promotions/costco-retry-20260915/report.json`.



## 2026-09-14 21:41 KST 수집 어려운 리테일 재시도

12개 국가·상품 원천을 로컬 비전 4모델로 재시도했다. 동남아 Shopee 제외는 유지했다. 아래는 이번 회차의 최신 결과이며, 이전 절의 집계는 각 당시 결과다.

| 국가 | 리테일 | 최신 자동 검증 상태 | 확인 내용 |
|---|---|---|---|
| US | Costco | capture_failed | 상품 페이지 탐색 오류; 가격 미확인 |
| CA | Costco | needs_review | 24매 구성 보임; 가격 없음·온라인 구매 불가 |
| GB | Boots | needs_review | 보안 접근 차단 화면; 상품·가격 없음 |
| DK | Matas | blocked | 로컬 access denied; 공식 웹 원문 참고값 DKK 59.95 / 1매 |
| CA | Shoppers Drug Mart | blocked | access denied; 가격 미확인 |
| AU | Lila Beauty | verified | AUD 6.30 / 1매·37% 할인; 동일 캡처 프론티어 재검증 완료 |
| KZ | Kaspi | needs_review | 4매 상품·복수 판매자 목록 보임; 도시·판매자 선택 미확정 |
| GB | Space NK | needs_review | 쿠키 거절·영국 배송국가 선택 성공; 배송 설정 저장 버튼 후보 보완 후 재시도; Space NK 영국 공식 페이지(판매자 Space NK), SKU# UK200064492의 BIODANCE Bio Collagen-Real Deep Mask가 £15.00, 통화 선택 GBP로 표시됨. 원문에 매수(1매/4매 등)나 34g 총 용량 표기가 없음. 스크린샷 사진에 여러 장이 겹쳐 보이지만 글로 된 근거가 아니어서 구성 수량 확인 불가 → matched=false. 취소선 정가 |
| AU | MYER | needs_review | AUD 37.50 / 4매 보임; 실제 판매자 미확인 |
| RS | dm | needs_review | RSD 499 보임; 매수 미확인·온라인 구매 불가 |
| SA | Life Pharmacy | needs_review | 사우디 URL이나 Dubai·AED 24.94 표시; 사우디 가격 미확인 |
| AU | Adore Beauty | blocked | 로컬 access denied; 공식 웹 원문 참고값 AUD 37.50 / 4매 |

Matas·Adore Beauty 웹 참고값은 실시간 검증가가 아니며 권역 평균·가격 추세·DOP에서 제외한다. Lila 재검토는 기존 캡처시각을 유지하며 새 관측일을 만들지 않는다.

Space NK의 실제 쿠키 거절 문구와 배송국가·통화 선택창을 로컬 후보에 반영했다. 배송 선택은 요청 국가·통화만 허용한다. 주 모델 사용 중에는 유휴 대체 모델을 즉시 배정한다. 관련 검증 21건 통과. 가중치 파인튜닝은 실행하지 않았다.

자동 조사 점검은 15분마다, 프론티어 접근 복구는 매시 25분에 최대 2개 원천, 정기 가격 수집은 07:10·19:10 KST다. 동일 차단 원천은 쿨다운을 적용하므로 매 15분 모두 재접속하지 않는다.

기계 판독 보고서: `data/processed/promotions/difficult-retailer-retry/20260914T124107Z/report.json`.


## 2026-09-14 전체 재조사

- 09:52 KST 시작. 등록 129곳 전체 대상(시작 당시 활성 37, 제외 92). `scripts/promotions.py cycle --force --include-disabled`로 제외된 원천도 이번 회차에 한해 다시 캡처한다. 기본 정기 수집의 제외 정책은 유지한다.
- 실행 로그: `data/processed/promotions/retry-20260914/cycle.log`. 완료 처리 서비스: `gdd-promotion-retry-finalize-20260914.service`. 기존 수집이 종료되면 미시도 원천과 수정된 올리브영 URL을 처리하고, 이번 실행의 최신 관측이 verified인 제외 원천만 복귀시킨다. 실패·웹 참고값은 복귀 근거로 쓰지 않는다.
- 완료 결과·이전 제외 상태: 같은 디렉터리의 `result.json`에 기록. 파일 생성 전에는 전체 조사 완료로 간주하지 않는다. 완료 시 사이트 배포를 실행하며 수집 도중에는 기존 15분 배포 타이머가 결과를 반영한다.
- 오스트리아 Douglas: 4매 구성. 개별 웹 열람 참고값은 패키지 EUR 25.99 / 장당 EUR 6.4975로 갱신했다. 웹 도구의 원문 시점은 today이며 실시간 캡처·현재 평균·DOP에는 넣지 않는다. 이전 참고값은 `douglas-reference-before.json`에 보존했다.
- 현지·원화 가격표의 큰 숫자는 1매 가격, 아래 숫자는 패키지 총액 / 매수로 통일했다. 매수 미확인 참고값은 장당 가격을 비운다. Douglas의 / 1 Stück와 4er Pack 충돌을 로컬·프론티어 지침 및 검증에서 처리한다.
- 올리브영 기존 오류 상품 URL을 A000000181343으로 교체. 여러 마스크 옵션의 시작가를 콜라겐 선택 가격으로 쓰지 않는다.

## 목적
Bio-Collagen Real Deep Mask 34g의 국가·채널별 표시가, 구성, 판매자, 프로모션을 원문 근거와 함께 축적한다. 가격·행사 추정, 검색 캐시의 실시간 가격 처리, 누락일 보간은 하지 않는다.

## 현재 상태
기존 89개 원천의 마지막 조사: 가격 확인 29, 접근 차단 30, 검토 필요 18, 캡처 실패 3, 첫 조사 대기 9. 이번 사용자 요청으로 미취합 60개를 즉시 재조사하고 온라인 전문몰·마켓플레이스 10개 원천을 추가했다. 완료 결과는 대시보드와 원천 CSV가 기준이다.

## 범위 및 실행 규칙
| 작업 | 실행 주체 | 성공 근거 | 실패 처리 |
|---|---|---|---|
| 국가별 상품 페이지 열기 | Playwright, 최대 6개 작업 | URL·응답·최종 호스트·시각 | 일시 탐색 오류 1회 재시도; CAPTCHA는 모델에 보내지 않음 |
| 화면·선택 옵션·원문 수집 | 브라우저 | PNG, visible.txt, model-source.txt, meta.json | PNG 실패라도 정상 상품 원문은 보존; 차단 본문은 가격으로 사용하지 않음 |
| 상품·가격·매수·판매자·행사 구조화 | Gemma 4 GPU, Qwen 3.6 GPU, Qwen 3.8 GPU, Qwen Flash Next | 로컬 JSON·모델·시도 기록 | 정상 경로별 1개 동시 요청, 최대 90초, 최대 2회, 다음 경로로 재배정 |
| 독립 검증 | 설정된 프론티어 모델 | 원문 인용·숫자·통화·매수·실판매자 일치 | 미확인 유지; 로컬 장애 시 프론티어 단독 검토 가능 |
| 공식 원문 개별 웹 열람 | GPT 수동 조사 | 원천 URL·열람 시각·캐시 수집 표기 | 참고 표에만 기록; 자동 수집 성공·현재 평균·DOP에 합산하지 않음 |
| 완전 차단 채널 | 원천 관리자 | 허용된 API/상품 피드/인증 세션 확보 필요 | 이번 재조사 실패 원천은 활성 집계에서 제외; 삭제하지 않음 |

로컬 모델·포트·노드는 agent-office/agent_config.py가 기준이며 여기서 새 모델 서버를 기동하거나 기존 작업을 종료하지 않는다. 매 실행 `/health`와 `/slots`를 확인한다. 모델 풀이 모두 비면 프론티어 검증 경로로 넘어간다. 모델 증설은 CAPTCHA 해결책이 아니다.

## 원천 적용 기준
- 기존 채널별 URL, 국가·통화, marketplace, extraction_hint, javascript_enabled, expand_product_details 설정을 적용한다.
- 브라우저에서 현재 가격과 선택 구성을 확보한 자료만 자동 관측 이력으로 쌓는다. 매수·통화·판매자를 못 확인하면 평균에 넣지 않는다.
- YesStyle·Stylevana·올리브영 글로벌은 직구 경로로 표시한다. 언어만 보고 국가를 정하지 않으며 관측 통화가 등록 국가와 다르면 검증에서 탈락한다.
- Shopee·Amazon·TikTok Shop·Zalando는 실제 판매자 및 선택 옵션을 확인한다. 검색 목록 최저가, 다른 상품 변형 가격, 혼합 세트는 단일 마스크 가격으로 처리하지 않는다.
- 1+1, N개 할인, 쿠폰, 회원 할인, 사은품은 각각 조건을 기록한다. 장바구니에서만 확정되는 조건은 미확인으로 둔다.
- 같은 수집 시각의 재검토는 새로운 조사로 세지 않는다. 이후 자동 운영은 서로 다른 정기 조사 구간에서 2회 연속 실패하면 비활성화한다. 제외 사유·마지막 조사 시각·원문·기존 가격 이력은 보존한다.
- 제외 원천의 복귀는 URL/접근 경로를 수정하고 재검증한 후 활성화한다. 제외로 표본 수가 줄어도 시장 전체 취합률이 올라갔다고 해석하지 않는다.

## 일정 및 완료 검증
가격 조사 매일 07:10·19:10 KST, 채널별 검증 완료 즉시 화면 갱신, 전체 반영 목표 시작 후 3시간. 이번 요청은 신규 원천의 다음 정기 시점 대기를 해제하고 즉시 조사한다. 타이머는 기존 gdd-promotions.timer를 사용한다.

검증 항목: 실제 수집 실행, 모델별 배정 기록, 슬롯 상한·장애 복귀, 연속 실패와 성공 후 실패 횟수 초기화, 제외 원천 표시, 가격 평균·최대·최소, 국가·리테일 필터, 공개 링크. 공개 링크는 조회 전용이며 등록 API를 외부에 노출하지 않는다.

설정: promotion_collection.yaml. 실행: `python3 scripts/promotions.py cycle --scheduled`. 결과: data/processed/promotions/local-pool.json 및 개별 관측 local_lane/local_attempts, 대시보드 수집 현황·제외 원천.

공식 API·상품 피드·인증 계정은 현재 연결하지 않았다. 개별 GPT 웹 열람은 자동 타이머에서 실행되는 서비스가 아니다. 이 두 경로를 구현 완료로 표시하지 않는다.

## 이번 실행 결과
기존 미취합 60개 재조사에서 5개 채널의 가격을 확보했다. 요청한 온라인 원천 10개를 추가 조사했다. 최종 등록 99개, 활성 34개(마지막 가격 검증 통과), 제외 65개. 활성 채널의 재고·현지 기준일·환율 여부에 따라 평균 집계 표본은 34개보다 적을 수 있다. 개별 웹 열람 참고 기록 8개는 별도 표에 보존했다.

Gemma 4, Qwen 3.6, Qwen 3.8, Qwen Flash Next 모두 실제 추출 요청을 처리했다. 프론티어는 동시 2개로 제한했다. 프론티어 장애는 채널 접근 실패가 아니므로 자동 제외 횟수에 넣지 않는다. 슬롯 제한·연속 실패·가격 계산·원천 목록·공개 화면 검증을 수행했다.


## 2026-09-13 사용자 비용 제약

Claude 종량 API 사용 금지. 기존 정기 판정은 API 키를 제거하고 claude.ai 구독 인증을 확인하는 CLI 경로만 사용한다. 개별 복구 경로에도 같은 인증 검사를 적용하며 인증 실패 시 API로 전환하지 않는다. 이번 추가 자료조사는 GPT 웹 도구로 수행했다. 개별 웹 참고값은 현재 캡처·DOP·권역 평균에서 제외하고, 매수가 불명확하면 장당 가격은 비워 둔다.

## 로컬 추출 검증 개선 · 2026-09-13

로컬 초안은 JSON 파싱 후 원문 인용·가격·매수·통화·판매자 검증을 통과해야 프론티어 참고 초안으로 전달한다. 실패 시 최대 2회, 직전 검증 오류를 포함하여 로컬 풀에서 다시 추출한다. 각 응답은 local-attempt-N.json으로 보존한다. 로컬 검증 통과는 최종 가격 검증을 뜻하지 않으며, 프론티어 검증은 유지한다.

`python3 scripts/evaluate_promotion_local.py`는 저장된 실제 리테일 원문을 로컬 모델로 다시 추출하고 기존 검증값과 비교한다. 신선한 가격 수집이나 파인튜닝이 아니다. 결과는 data/processed/promotions/local-evaluation/에 저장하며 현재 가격·DOP에 넣지 않는다. gdd-promotion-local-eval.timer는 매일 10:30·22:30 KST 실행한다. 모델 호출은 로컬만 사용한다.

### 로컬 평가 순환 범위 확대

2026-09-13: 고정 3개 채널 대신 검증 원문이 보존된 채널 중 최근 평가하지 않은 원천을 우선하고 권역을 분산해 회차당 6곳을 선택한다. 동시에 최대 2개 작업을 실행하고 모델별 슬롯 한도를 유지한다. 가격·통화·매수·기준가격 불일치와 재고·할인 상태 불일치를 별도 집계한다. 이전 프론티어 검증값과의 일치율이며 독립 정답셋 정확도가 아니다. 실패·불일치는 회차별 review-queue.json에 보존하고 자동 학습 정답으로 사용하지 않는다. latest.json은 회차 완료 시에만 교체한다. 중복 실행은 파일 잠금으로 막는다.


## 판매처별 로컬 추출 규칙 (2026-09-13)

`promotion_guidance.py`의 retailer-reading-v1을 로컬 추출에 적용합니다. dm의 가격 유지일과 할인 시작일, Notino의 주문 수량과 포장 매수·쿠폰가·과거 최저가, Sephora의 선택 규격·배송국가·재고 문구를 구분합니다. 마켓플레이스는 실제 선택 판매자와 상품 옵션을 확인합니다. 규칙에는 가격 정답을 넣지 않으며 기존 근거 검증과 프론티어 검토를 유지합니다. 각 local.json에 guidance_version을 기록합니다.

이번 변경은 모델 가중치 학습이 아닌 추출 지침 개선입니다. 과거 자료 재평가 결과는 새로운 가격 관측으로 취급하지 않습니다. 재고·행사 해석 불일치는 검토 대기열에 보관하며 자동 학습 정답으로 사용하지 않습니다. 로컬 재평가는 기존 10:30/22:30 KST 타이머로 지속합니다.

### Qwen 3.8 우선 운영 — 2026-09-13

- 다음 수집 프로세스부터 `primary_then_fallback` 적용: Qwen 3.8 27B → Qwen 3.6 35B-A3B → Gemma 4 26B-A4B. 기존 실행 중인 프로세스에는 소급 적용하지 않는다.
- 첫 요청은 Qwen 3.8 슬롯을 최대 90초 기다린다. 비정상 상태 또는 슬롯 대기 초과 시 다음 정상 모델로 이동한다. 요청·파싱·근거 검증 실패 시 해당 채널에서 이미 시도한 모델을 제외하고 재시도한다. 최대 3회.
- 세 모델 모두 동일한 캡처 이미지(뷰포트, 확보된 상세 화면 최대 3장)와 원문 텍스트로 가격·매수·프로모션 조건 전체를 추출한다. 브라우저 캡처는 기존 수집기가 수행한다. 모델의 자율 브라우저 조작은 비교 실험에만 적용되어 있다.
- 기존 근거 검증 및 프론티어 검토를 유지한다. 이미지에만 있고 원문 인용으로 검증되지 않는 값은 자동 확정하지 않는다. Claude API 호출을 추가하지 않는다.
- Gemma 12B 및 학습 타이머는 비활성 상태 유지. 이번 변경은 추론 입력과 배정 정책이며 가중치 파인튜닝이 아니다.
- 3개 채널 비교에서 Qwen 3.8이 조건부 행사 기록에 가장 적합했으나, 국가·채널 전체 정확도를 보장하는 결과는 아니다.

### 모델별 반복 평가·학습 자료 — 2026-09-13

- 매일 10:30·22:30 KST: 권역을 순환해 보관 자료 6개를 선정, Qwen 3.8 / Qwen 3.6 / Gemma 4가 각각 동일 자료를 처리한다(기본 18건, 동시 작업 2개). 모델별 한 번씩 평가하며 다른 모델의 답으로 대체하지 않는다. 확보된 이미지와 원문을 같이 입력한다.
- 가격·매수·통화·정상가·재고·행사·조건·판매자·멀티바이 차이를 기록한다. 조건 문장의 표현 차이도 검토 대상일 수 있으므로 불일치율을 오류율로 표시하지 않는다.
- `learning/model-curricula/<lane>/`에 승인된 학습/평가 자료와 모델별 검토 큐를 별도로 저장한다. 기존 승인 학습 자료 중 불일치 채널을 우선 배치한다. 미검증 답변으로 정답을 덮어쓰거나 평가 리테일 자료를 학습 분할로 옮기지 않는다. 현재 승인 라벨은 텍스트 근거 기준이다.
- 매일 11:00 KST 기존 학습 주기에서 세 모델의 모델별 개선 프롬프트 후보를 평가한다. 평가 12건 이상·정답률 3%p 이상 개선·기존 정답 퇴행 없음·근거 없는 가격/행사 없음 조건을 유지한다. 통과 전에는 후보가 운영에 적용되지 않는다.
- 실제 가중치 학습은 미실행. 승인 학습 건수·수집 일수·평가 건수가 기준에 부족하며, 현재 Kevin 모델 디렉터리에서 학습 원본 config.json이 확인되지 않았다. Gemma 12B 학습 및 재시도 타이머를 다시 켜지 않는다.

### 상시 조사·학습 대기열 강화 — 2026-09-14 18:38 KST

- `bash scripts/install_promotion_pulse.sh`: 보충 조사 15분 간격(최대 12채널), 원문 정답 감사 매시 10·40분(최대 30건), 모델별 예시 후보 연습 3시간 간격(:45), 가중치 후보 준비 상태 매시 05·20·35·50분 확인. 실행 중 같은 서비스는 중복 시작하지 않는다. 이는 케빈 장비의 systemd 반복 작업이며 ChatGPT Pulse 예약을 등록한 것은 아니다.
- 기존 정기 수집 07:10·19:10 KST, 보관 원문 모델 비교 10:30·22:30 KST, 외부 페이지 반영 15분 간격은 유지한다. 보충 조사는 미확보 채널 우선이며 일반 실패 2시간, 접근 차단 최소 24시간 및 기존 반복 차단 backoff를 적용한다. 조사 주기가 모든 채널의 15분 가격 갱신을 의미하지 않는다.
- 실패 시 Qwen 3.8 → Qwen 3.6 → Gemma 4를 순환해 동일 이미지 캡처·취합 작업을 재시험한다. 선호 모델이 연결되지 않으면 가용 모델을 사용하고 실제 사용 모델을 기록한다. 재사용 캡처는 모델 순환 횟수에 포함하지 않는다. 공개 쿠키/닫기 UI의 주요 언어 표현을 추가하고 로그인 인증 페이지는 중단한다(`browser-actions-v4`). 접근 차단을 해제한 것으로 취급하지 않는다.
- 새 캡처 후 정답 감사 서비스를 깨운다. 감사가 끝난 불변 학습/평가 분할로 연습을 수행하므로 이후 감사와 연습은 동시에 진행할 수 있다. 연습 예시를 순환하되 리테일러 분할·근거·가격 오류 0건·기존 정답 유지·3%p 개선 조건을 유지한다. 라벨 증가와 신규 판매가 증가는 별개다.
- `python scripts/install_promotion_weight_setup.py`: Kevin에 핀 고정된 공식 `Qwen/Qwen3.8-27B` BF16 학습 원본(약 55.6GB)과 별도 ROCm 학습 venv를 준비한다. 실패한 준비 작업은 매일 01:20 KST 재개한다. 이미 준비된 동일 revision은 다시 설치하지 않는다. 추론 GGUF를 학습 원본으로 사용하지 않는다.
- `promotion_pulse.yaml`의 가중치 후보 설정: 학습 100건·학습 리테일러 10개·관측 3일·별도 평가 12건, 원본/환경 준비를 충족하면 03:00–05:00 KST에 승인 텍스트 정답으로 Qwen 3.8 QLoRA 후보를 생성한다. 전체 근거가 토큰 예산에 들어가는 자료만 사용하며 필터 후에도 자료 기준을 검사한다. 이미지 행동 자체의 가중치 학습은 이 경로에 포함되지 않는다.
- 후보 실행은 보조 Gemma 4가 사용 중이 아닌지 확인한 뒤 Kevin의 한 GPU만 예약한다. 90분 제한과 `ExecStopPost` 복구로 보조 상주 모델을 재시작한다. Qwen 주력 모델은 계속 운영한다. Gemma 12B 및 이전 학습 타이머는 켜지 않는다. 후보를 운영에 자동 적용하지 않는다.
- 18:38 확인: 승인 76건(학습 49·평가 27), 감사 대기 122건, 보충 조사 12채널 진행 중. 가중치 학습 미실행, 원본 약 16GB 다운로드 중. 자동 작업도 실패할 수 있으며 최신 실제 결과를 `continuous-research/latest.json`, `learning/latest.json`, `learning/weight-candidate-latest.json`과 대시보드 수집/학습 기록에 표시한다.
- Claude 종량 API 사용 금지는 그대로 유지한다. 기존 인증된 구독 CLI 및 설정된 대체 감사 경로를 사용한다. 근거 없는 가격을 채우거나 실패 채널을 검증 성공으로 표기하지 않는다.

### 가격 빠른 확인·로컬 품질 — 2026-09-14 19:04 KST

- Ozon 공식 카테고리 검색 색인에서 Bio-Collagen 4매 2,074 RUB(매당 518.5 RUB)를 확보했다. 원문 약 2개월 전, 정확한 원문 시각/판매자/현재가/배송지 미확인이다. `listing-references.json`에 별도 카테고리 참고값으로 저장하고 같은 `price_data.listing_references`로 가격표·전체 CSV·현재 표 CSV를 표시한다. 현재 평균/상한/하한/추세/프로모션 일수에는 포함하지 않는다. 취합일 환율로 환산하며 원문 당시 환율로 표시하지 않는다.
- 원문 취합 시각 `retrieved_at`과 실제 관측 시각 `observed_at`은 별개이며 이 참고값의 관측 시각은 null이다. 등록 상품 채널에 카테고리 URL을 섞지 않는다. 카테고리 참고 건수는 채널 수와 별도로 표시한다. 리테일/국가/권역 필터는 참고 행에도 적용하고, 기준일 또는 검증/할인 필터에서는 제외한다.
- Ozon/Wildberries 실제 상품 상세 URL을 프론티어 구독 CLI로 각각 WebFetch·WebSearch 재확인했다. 둘 다 현재 가격/판매자 확보 불가. 실행 증거는 `data/raw/promotion-recovery/20260914T100023007708Z/trace.jsonl`, 판정은 `recovery/ru-ozon-candidate.json`, `recovery/ru-wildberries-candidate.json`이다. Wildberries 값을 임의로 만들거나 다른 판매처 가격으로 대체하지 않는다.
- 중복 보관 원문 재시험을 제거한 18사례/모델의 가격·매수·통화 재현: Qwen3.8 16/18, Qwen3.6 15/18, Gemma4 14/18. 기존 프론티어 검증값과의 재현이며 독립 정확도가 아니다. 실패를 분모에 포함한다. 멀티바이 재현은 각각 12/18, 11/18, 7/18이다. 조건 표현 차이도 불일치에 포함될 수 있다.
- 최근 승인된 별도 평가 12건의 전체 항목 정답(학습 전 기본 프롬프트): Qwen3.8 3/12, Qwen3.6 4/12, Gemma4 2/12. 개선 예시 후보는 각각 2/12, 2/12, 3/12이며 적용 기준 미통과로 모두 미적용이다. 자동 수집 전면 승인 가능한 품질로 표시하지 않는다.
- `gdd-promotion-quality-recheck.service`로 dm(DE), flaconi(DE), Well.ca(CA)에서 세 모델 각각 새 브라우저 캡처→추출 전체 작업을 다시 비교한다. 근거 검증 성공은 독립 가격 정확도 승인과 다르다. 완료된 후보는 기존 보충 조사 루프의 독립 검증 대상이다.

### 접근 차단 프론티어 후속 대기열 — 2026-09-14 19:09 KST

- `bash scripts/install_promotion_access_recovery_timer.sh`(상시 루프 설치에도 포함): 매시 25분 차단 후속 대기열을 확인하고 최대 2채널을 기존 구독 프론티어의 공식 URL WebFetch·WebSearch로 재확인한다. 공개 정상 수집 원천과 참고 가격을 찾으며, 사이트 차단을 해제한다고 가정하지 않는다. 미등록 우선 판매처는 발견 후보 URL 기준, 등록 원천은 마지막 blocked/capture_failed 기준으로 선정한다.
- 동일 원천에서 확인 완료한 unavailable/reference는 24시간 뒤, 조사 미완료 needs_review는 2시간 뒤 재확인 가능이다. 실제 시작은 대기열 순서와 작업 길이에 따라 달라진다. 현재 준비 대기열 36건이며 첫 실행도 시작했다. 로컬 조사와 프론티어 후속 작업은 서로 다른 잠금을 사용한다.
- `access-recovery/latest.json`에 대상·대기열·처리 완료 여부를 기록하고, `recovery/*.json` 및 불변 raw trace에 실제 열람/검색 수행 증거를 보존한다. 과거 확인의 요청 URL이 달라졌으면 현재 URL 차단 판정으로 재사용하지 않는다. 단순 프론티어 실행 오류를 자료수집불가로 표기하지 않는다.
- Wildberries/Ozon은 이번 프론티어 재확인에서 공식 상품 URL 열람·검색 모두 수행했지만 현재 가격/판매자를 확보하지 못했다. 원천 조사 표에 ‘현재 자료수집불가’·마지막 프론티어 확인·다음 재확인 가능 시점을 표시한다. 새 작업 실행 중에도 마지막 완료 확인을 유지한다. Ozon 카테고리의 과거 참고값은 별도로 보존한다.
- 이 세션의 GPT 개별 선행 조사와 장비의 자동 프론티어 작업은 구분한다. 자동 후속 작업은 기존 인증된 구독 CLI 경로이며 Claude 종량 API는 사용하지 않는다. GPT도 해당 사이트의 접속 차단을 통과하지 못한 사실을 그대로 표시한다. 로그인/파트너 API/공식 피드가 필요한 경우 해당 권한을 확보하기 전 성공 경로로 기록하지 않는다.


## 납품채널 입력 및 정기 원천 조사 — 2026-09-14

- 사용자 입력 원문: `data/inputs/delivery-retailers-20260914.txt`. 유효 입력 280행, 정리 대상 244개. Matas+Kicks는 두 판매처로 분리하고, 중복 표기는 원문 행 번호와 함께 보존한다. 국가·판매 방식이 다른 항목은 별도로 유지한다.
- 설정: `promotion_delivery_channels.yaml`. 사용자 명시 국가만 `country`로 저장한다. 일본 목록 문맥, Douglas DACH 등은 `market_candidates`라는 조사 범위이며 판매 국가 확정이 아니다. 약칭, 부정확한 번역, 일반 약국·도매 표기는 원문 근거 없이 특정 판매처로 바꾸지 않는다.
- Inline 2, 인가 사용자 전용 1, 예정 2, 도매 1은 공개 온라인 가격으로 대체하지 않는다. 일반 `프랑스 약국`은 상호 식별 대기다. 예정 Watsons는 운영 중 Watsons와 별도다.
- 신규 대상별 원천 조사: `gdd-promotion-delivery-discovery.timer`, KST 매시 02·17·32·47분, 최대 3대상. 완료한 미발견·후보는 24시간 후, 실행 오류는 2시간 후 재확인 대상. 실제 완료 시점은 대기열 및 모델 가용성에 따른다.
- 연구는 기존 구독 CLI 경로를 사용한다. 종량 Claude API를 사용하지 않는다. 다른 판매처, 국가 근거 없음, 제품·국가 원문 인용 불일치, 상품 변형, 상호 근거 없음은 등록하지 않는다. 원천 후보를 가격 확보 수로 집계하지 않는다.
- 공식 제품 원문 확인 후 등록된 채널은 다음 15분 단위 조사 시점부터 로컬 비전 수집 대상으로 연결한다. GPT가 선행 확인한 PURESEOUL·Skin Cupid·@cosme 3채널은 즉시 첫 로컬 조사를 요청했다. 제품·국가 확인 원문은 `data/raw/promotion-delivery-discovery/manual-20260914/`에 남긴다. 등록은 가격 검증 완료가 아니다.
- 대상별 진행 상태와 연결 가격은 `promotion-delivery-channels.json` / CSV에서 제공한다. 가격은 같은 빌드의 `price_data.latest_prices`를 그대로 연결하고 현지 패키지가·매당 가격·원화 환산가·환율일·확인 시각을 표시한다. 대상 수는 국가×등록 원천 수와 다른 단위다.
- 19:40 첫 3채널 로컬 실행은 모두 `NoLaneAvailable`. 기존 GPU SSH 주소 192.168.0.79는 기존에 신뢰한 Windows 호스트 키와 일치하며 `winmaster` 로그인에서 `kevin-server`로 확인됐다. Linux 호스트 키를 삭제하거나 바꿔서 접속하지 않았다.
- 정상 응답 중인 별도 EdgeXpert `qwen38_flash_next` 비전 모델(포트는 Agent Office 정규 설정을 사용)을 수집 fallback으로 추가하고 19:42 재실행했다. 기존 Qwen3.8 GPU → Qwen3.6 GPU → Gemma4 GPU의 우선순위를 유지한다. 기본 GPU 모델의 복구나 가중치 학습 완료를 의미하지 않는다.

- 19:44~19:48 실제 결과: Flash-Next가 3채널 화면을 캡처하고 가격을 추출했다. Skin Cupid GBP 3.95/1매, PURESEOUL GBP 4.90/1매는 프론티어 검증을 통과했다. @cosme의 로컬 출력과 프론티어 출력 모두 JPY 715/1매였으나 `単包 / 34g`에 숫자 1이 없어 매수 원문 검사가 거절했다.
- @cosme의 실제 선택 문맥 `バリエーション： 単包 / 34g`를 원문·이미지와 저장된 프론티어 판정으로 확인해 해당 상품 원천에만 `pack_option_rules`를 추가했다. 기존 로컬 원문 출력은 새 근거 규칙으로 재검증했고 기존 실패 기록을 `local-before-pack-option-rule.json`에 보존했다. 같은 캡처를 다시 프론티어 검증해 19:48 승인했다. 과거 가격이나 새로운 캡처 시각을 만들지 않았다.
- 가용 모델 슬롯 수에 따라 실제 browser_workers를 줄이고 모델 슬롯 대기 시간을 600초로 분리했다. 요청 처리 제한은 기존대로 유지한다. GPU 호스트가 복구되면 가용 슬롯 수에 따라 병렬 처리 수가 다시 늘어난다.
- 가격 화면의 원천 범위에 `납품채널` 필터를 추가했다. `promotions.html?scope=delivery`로 직접 접근한다. 가격·다운로드·권역 비교는 기존 공유 가격 스냅샷을 그대로 사용하고 `delivery_watchlist`라는 대상 연결 표시만 필터로 사용한다. 매장 Inline·인가 전용·예정·도매 항목은 온라인 가격 필터에 대입하지 않는다.
- 일본 주요 채널의 원문 상호를 조사 힌트에 추가했다: 로프트/ロフト, 핸즈/ハンズ, 빅카메라/ビックカメラ, 요도바시/ヨドバシ, 플라자/PLAZA, @cosme/アットコスメ. 조사 힌트만으로 리스팅·가격을 확인 처리하지 않는다. 공식 일본 전용 @cosme/BicCamera .com 원천 국가 근거 URL을 설정에 기록하고, 나머지 상품·상호·원문 인용 검사는 유지한다.

- 새 납품채널 조사에서 국가·상호 게이트를 통과한 후 HTTP 403/429/498 또는 반복 리다이렉트로 원문을 못 받은 상품 후보도 기존 프론티어 접근 재확인 대기열에 연결했다. 같은 국가·URL에 대한 실제 프론티어 열람과 검색이 모두 실패한 경우에만 해당 조사 후보를 현재 자료수집불가로 표시한다. 후보의 가격·원천을 등록된 확인 가격으로 취급하지 않는다.

- 후속 실시간 점검에서 기존 Linux 호스트 키가 다시 일치하고 `ssh kevin-gpu hostname`이 kevin-gpu로 응답했다. Qwen3.8·Qwen3.6·Gemma4 시스템 서비스와 /health가 모두 정상으로 돌아왔으며, Flash-Next까지 4개 비전 모델·4슬롯을 확인했다. 마지막 모델 상태 점검 시각과 가용 슬롯을 갱신했다. Windows로 응답한 것은 일시적인 상태였다.
- `gdd-promotion-delivery-model-check`에서 신규 3채널 × 4모델 = 12개 동일 브라우저·캡처·가격 추출 과제를 시작했다. 모델당 채널 순차 실행, 동시에 최대 2모델만 실행한다. 이 비교의 grounded는 원문 인용 검증이며 독립 정확도나 가중치 파인튜닝 완료를 뜻하지 않는다.
