<!-- FILE: _St/Auto8700/ai_read.md | ROLE: Auto8700 현재 기준 -->

# Auto8700 현재 기준 — 실행 코드 v286

## v286 exact CDP target 강제 종료
- POST `/api/cdp/ig/close_target`은 `target_id`를 필수로 받고 browser-level `Target.closeTarget`으로 정확한 page target 하나만 닫는다.
- expected URL이 오류·blank·redirect로 달라져도 exact targetId가 일치하면 종료를 계속하고 `url_mismatch`를 진단값으로 남긴다.
- 종료 요청 실패 또는 target 잔존 시 한 번 재시도하고 `/json` target 목록에서 제거 여부를 확인한다.
- 대상이 이미 없으면 `already_closed=true` 성공으로 처리한다.
- 기능 로그는 `[CDP탭종료][TC-01][체크시작/예외추적]`, `[TC-02][체크완료/체크실패]`로 남긴다.
- 일반 Chrome이나 전체 CDP Chrome 프로세스를 종료하지 않는다.
- 정적·단위 테스트는 OK이며 실제 오류/검은 탭 종료는 `[검증대기]`다.

- v281은 `/api/cdp/ig/install_lifecycle_preload`에서 YELLOW bootstrap target을 exact URL로 찾고 `Page.addScriptToEvaluateOnNewDocument`→`Runtime.evaluate` 순서로 수명주기 코드를 설치한다.
- 기본 정책은 관리 탭의 unload 등록만 차단하며 beforeunload/pagehide/visibilitychange는 추적한다.
- 기능 로그는 `[CDP수명주기][CL-01~03][체크시작/체크완료/체크실패]`로 남긴다.

- Auto8700은 WS8771, Analyze8780, RTC8790_8791의 총괄 관리자다.
- 서비스 시작·감시·재시작은 `auto8700-manager-worker`가 담당한다.
- Auto8700 종료 시 WS8771·RTC8790_8791은 종료하고 Analyze8780·Chrome/CDP는 유지한다.
- 전체 Tk UI는 main thread에서 생성·실행한다.
- Analyze8780 `/api/health`는 manager 기동 확인 시 1회만 호출한다.
- CDP 정상 판정은 8700 `/json/version`만으로 끝내지 않는다. Instagram page target과 `webSocketDebuggerUrl`, `Runtime.evaluate` 응답을 확인한다.
- Auto8700 `자동실행`과 `CDP모드 실행`은 전용 `D:\cdp-data-dir` Chrome을 실행하거나 기존 정상 Instagram 탭을 앞으로 표시한다.
- Instagram 탭 생성은 PUT `/json/new`를 우선하고 실패 시 browser `Target.createTarget`을 사용한다.
- 8700 포트는 열렸지만 Instagram Runtime이 없으면 `CDP:PORT`·`CDP 복구`로 표시한다.
- 복구 시 일반 Chrome은 종료하지 않고 Auto8700 전용 CDP user-data-dir 프로세스만 종료·재실행한다.
