<!-- FILE: _St/Auto8700/ai_read_패치.md | ROLE: Auto8700 현재 패치 -->

## v324 매 정시 자동업데이트 체크
- [코드반영] `st_update8700.py`: 공통 `update_check_once`, `hourly_update_check`, `seconds_until_next_hour` 추가.
- [코드반영] `auto_service8700_manager.py`: 정상 manager daemon `auto8700-hourly-update-watch` 1개, 다음 정시 예약 로그 `UP-H-00`.
- [코드반영] 정시 UPDATE 발견 시 기존 updater 예약 후 `hourly_auto_update` 정상 종료 요청. publisher/SAME/LOCAL_NEWER는 다운로드하지 않음.
- [코드반영] `test_auto8700_update_hourly_v324.py` 5개 추가; updater 관련 15 passed, 전체 pytest 157 passed.
- [검증대기] 실제 Windows 정시 체크 및 일반 사용자 새 build 적용.

## v320 시작 build 자동업데이트
- [코드반영] `st_update8700.py`, `st_update_apply.py`, `test_auto8700_update_v320.py`.
- [코드반영] UP-01~UP-08 체크형 로그, publisher skip, local-newer 역행 차단, SHA256/ZIP 검증.
- [코드반영] `test_auto8700_update_v320.py` 9개 포함 전체 pytest 151 passed.
- [검증대기] 실제 사용자 Windows에서 새 build 적용 후 Auto8700 재실행.

## v310 Auto8700 Tray icon
- [코드반영] Shared 공용 `ig_styellow_tray.ico`를 `WindowsTrayIcon(..., icon_path=TRAY_ICON_PATH)`로 사용.
- [검증대기] 실제 Windows notification area 프로젝트 아이콘 확인.

## v309 Auto8700 square/tray
- [코드반영] v309 포함 전체 pytest 125 passed, Auto/WS/Shared/Cache 타깃 76 passed.
- [코드반영] `_` 버튼을 34x34 보라색 `ㅁ` 최소창으로 변경.
- [코드반영] 기존 520px compact bar 표시 경로 제거.
- [코드반영] `.` Tray 버튼, hide/restore/poll 메서드 및 종료 시 tray cleanup 추가.
- [코드반영] Shared WindowsTrayIcon 공용 helper 연결.
- [검증대기] 실제 Windows Tray notification area 복원.

## v308 EXT install/path/reload
- [코드반영] `Extensions.getExtensions/loadUnpacked/uninstall` Browser CDP helper 추가.
- [코드반영] 현재 `_St/IG_StYellow` 경로와 설치 path가 다르면 재설치.
- [코드반영] 설치/경로 검증 후 reload 1회, Page reload, 버전 검증 후 CDP:O.
- [코드반영] test_auto8700_module.py 38 passed.
- [검증대기] 실제 Chrome Extensions experimental domain 지원 및 폴더 이동 재설치 확인.


## v307 CDP 최종 O + EXT 최초 refresh + 파일 변경 3초 안정화
- 상태: `[코드반영·실제 Windows 검증대기]`.
- CR-01: Instagram target 실제 `Runtime.evaluate("1+1") == 2` 확인.
- CR-02: manifest name `IG Sorter Yellow` target에 `chrome.runtime.reload()` 프로세스당 최초 1회.
- CR-03: 현재 Instagram `Page.reload` 1회 후 EXT/content version이 로컬 manifest와 일치해야 CDP:O.
- `/json/version` 응답·target 존재만으로 O를 만들지 않는다.
- `/status` cdp_ready는 현재 Runtime+EXT verified 상태로 계속 갱신한다.
- `DEFAULT_DEBOUNCE_SEC=3.0`; 같은 서비스 변경은 deadline만 갱신, 다른 서비스는 독립 worker로 병렬 예약한다.
- 정적/단위 검증: Auto8700 35 passed.
- 실제 완료 기준: CR-01~03 실제 로그 OK, X→O 후 manifest/content v307, 연속 저장은 마지막 저장 후 약 3초에 재실행 1회.

# Auto8700 패치 — v291

## v303 코드반영·검증대기
- 버전 동기화와 기존 CDP 증명 경로 보존.
- 실제 새로고침·URL 이동 후 즉시 O 복구와 실제 연결 종료 시 X 전환은 검증대기.


## v297 Cache8701 연결정보 API
- 상태: `[코드반영·실제 Windows 검증대기]`
- endpoint: `GET /api/cdp/connection`
- 반환: `cdp_host`, `cdp_port`, `cdp_alive`, `owner_target_id`, `owner_generation`, `owner_active`, Instagram `targets`.
- target 집합 또는 owner가 바뀔 때만 generation을 증가시키며 동일 상태 조회는 같은 generation을 유지한다.
- Cache8701에 탭 제어 명령을 위임하지 않는다.


- 현재 표시 중인 Instagram 게시물 JPG의 `currentSrc`와 CDP 응답 URL이 일치할 때만 이미 받은 response body를 저장한다.
- 재요청 다운로드는 하지 않는다. JPEG 완전성 검사 후 `_StDown` 저장 및 Shared DB 등록을 수행한다.
- 실제 Windows/Chrome 로그가 없어 상태는 `[검증대기]`다.

<!-- FILE: _St/Auto8700/ai_read_패치.md | ROLE: Auto8700 현재 작업·검증대기 -->

## v286 exact target close API
- 상태: `[검증대기]`
- 단일 목표: IG가 자동생성 시 저장한 exact CDP targetId를 받아 오류 상태와 관계없이 page target 하나를 강제 종료한다.
- endpoint: `POST /api/cdp/ig/close_target`.
- 입력: `target_id` 필수, `expected_url/reason` 진단용.
- 처리: exact target resolve→browser `Target.closeTarget`→제거 확인→실패 시 1회 재시도.
- URL mismatch는 오류 탭·검은 화면에서 흔할 수 있으므로 종료 차단 조건이 아니다.
- 테스트: 정상 exact target close, URL 변경 target close, route 존재, 로그 토큰. 전체 pytest 77 passed.
- 실제 완료 기준: Windows 오류 탭에서 TC-01→TC-02 완료와 target 목록 제거 확인.

# Auto8700 패치 상태 — v286

## v281 CDP lifecycle preload
- `[코드반영·실제 Windows 검증대기]`
- local bootstrap page `/cdp-bootstrap?token=...` 제공.
- exact CDP target 확인 후 새 문서 선삽입과 빈 문서 즉시 설치.
- unload 등록 차단, beforeunload/pagehide/visibilitychange source/stack 추적.
- Auto8700 단위 테스트 22 passed 포함 전체 pytest 74 passed.

상태: `[코드반영·실제 Windows 검증대기]`

- `자동실행` 클릭이 CDP Chrome을 실제로 준비한 뒤 IG 자동시작 요청을 전송하도록 변경
- `CDP모드 실행` 클릭 시 기존 정상 탭 bring-to-front 또는 전용 CDP Chrome 실행
- `/json/new` GET 실패 경로를 PUT으로 수정하고 `Target.createTarget` 보조 경로 추가
- 8700 포트만 열린 상태와 Instagram Runtime 정상 상태 분리
- stale 전용 CDP Chrome만 선택적으로 종료·재실행
- 설정 화면에 실행 결과 표시
- `test_auto8700_module.py` 정적·단위 회귀 OK

실제 확인: Windows에서 자동실행·CDP모드 실행 버튼, CDP:PORT 복구, 일반 Chrome 유지.

## v292 자동 섬네일 설정
- 전체 사용 기본 ON, Explorer OFF, 단일 게시물/계정 프로필/계정 릴스 ON.
- 실제 Windows 저장 동작은 검증대기.
