# 완료·검증 기록 — 패키지 v239

## 이전 유지 완료

- v223: 마우스·원점·Heart 폐기, `IG_StYellow` 기준
- v224: SQLite v2·MySQL v45/v46 구조
- v225: IG→WS→Shared `MEDIA_SAVED` 연결
- v226: 메인 주입 `IG account` 표시

## v227 완료 항목

### Side 계정·순위 분리

- 테스트: `IG_StYellow/test_ext_module.js`
- 결과: OK
- 검증:
  - `IG account` 독립 라벨
  - `No000` 독립 라벨
  - Top 조건이 없으면 `No000` 숨김
  - 직접 다운로드 기존 토큰 유지

### SQLite v3·10분 repository

- 테스트: `Shared/test_shared_storage.py`
- 결과: OK
- 검증:
  - 기존 v1 DB에서 v3까지 추가 마이그레이션
  - 10분 내림 처리
  - 같은 버킷 UPSERT와 `sample_count`
  - 계정·게시물 페이지 조회
  - 최근 10분 증가량과 시간당 환산
  - 계정·게시물 soft-delete
  - DELETE sync_queue

### Analyze8780

- 테스트: `Analyze8780/test_analyze8780_module.py`
- 결과: OK
- 검증:
  - health
  - account list
  - account posts
  - 10분 통계
  - account DELETE
  - deleted account tombstone API
  - 임시 포트 HTTP 실행

### 삭제 계정 Side 제외

- 테스트: `IG_StYellow/test_ext_module.js`
- 결과: OK
- 검증:
  - `🗑️` prefix 인식
  - 삭제 항목 수집 목록 제외
  - 삭제 항목 카운팅 제외
  - Analyze8780 삭제 목록 polling 코드 존재

## 완료로 표시하지 않는 항목

- 실제 Windows Chrome Side 렌더링
- 실제 운영 SQLite 데이터 마이그레이션
- IG 실시간 observation 전송
- PHP/MySQL 10분 중앙 저장
- 대본 추출


## v228 완료 항목

### Analyze8780 자동 실행 설정

- 테스트: `Auto8700/test_auto8700_module.py`
- 결과: OK
- 검증: 서비스 등록, 자동 시작, 8780 포트, HTTP JSON health, bat catalog, Shared restart 연동

### Side 계정목록 명시 저장

- 테스트: `IG_StYellow/test_ext_module.js`
- 결과: OK
- 검증: `💾 저장`, dirty 표시, blur 자동 저장 제거, 삭제 polling 미저장 보호

### Analyze8780 실행 BAT

- 테스트: `Analyze8780/test_analyze8780_module.py`
- 결과: OK
- 검증: `py312` 실행 명령과 health version `2.3.8.228`


## v229 완료 항목

### 게시물 canonical URL

- 테스트: `Shared/test_shared_storage.py`, `WS8771/test_ws8771_module.py`, `Analyze8780/test_analyze8780_module.py`
- 결과: OK
- 검증:
  - `/explore/`, `/reels/`, 프로필, 홈, CDN URL의 post_url 저장 차단
  - shortcode 일치 `/reel/`, `/p/`, `/tv/` permalink 유지
  - 유효 링크가 없으면 영상 `/reel/`, 그 외 `/p/` 생성
  - 기존 잘못된 DB URL의 Analyze8780 조회 표시 교정
  - 기존 다운로드·MEDIA_SAVED·10분 repository 회귀 유지


## v230 완료 항목

### Chrome·Instagram 탭 유지

- 테스트: `Auto8700/test_auto8700_module.py`, `IG_StYellow/test_ext_module.js`
- 결과: OK
- 검증: Side·background 닫기 API 제거, Auto 종료 시 Chrome/CDP 유지, Chrome 종료 토큰 부재

### WS Instagram 저장창 Enter

- 테스트: `WS8771/test_ws8771_module.py`, `IG_StYellow/test_ext_module.js`
- 결과: OK
- 검증: 다운로드 전 arm await, prefix·shortcode·Instagram 파일명 판별, Enter 처리, 다른 Save As 제외

### Analyze8780 health 반복 제거

- 테스트: `Auto8700/test_auto8700_module.py`
- 결과: OK
- 검증: 동일 서비스 실행 중 상태 refresh 3회에도 `/api/health` 호출 1회, 이후 반복 HTTP·TCP health 없음

## v231 완료 항목

### 수집계정 username SQLite 동기화

- 테스트: `IG_StYellow/test_ext_module.js`, `Analyze8780/test_analyze8780_module.py`, `Shared/test_shared_storage.py`
- 결과: OK
- 검증:
  - 화면 owner username 기반 추가
  - Explore·Reels·게시물 URL 저장 거부
  - Analyze8780 GET/PUT API
  - SQLite `collection_account_queue` 순서·enabled·is_deleted 보존
  - localStorage 캐시 fallback

### WS Save As와 `_StDown` 저장 경로

- 테스트: `WS8771/test_ws8771_module.py`, `IG_StYellow/test_ext_module.js`
- 결과: OK
- 검증:
  - Save As 제목 부분 일치
  - Instagram prefix·shortcode·파일명 판별
  - 계정별 `_StDown/instagram` 경로 계산
  - 파일명 입력칸 경로 지정 후 Enter
  - 완료 파일 이동 fallback
  - 기존 MEDIA_SAVED·canonical URL 회귀 유지

### 완료로 표시하지 않는 항목

- 실제 Windows 저장창 입력·Enter
- 실제 Chrome 프로필 변경 후 SQLite 복원
- IG 실시간 10분 observation 전송
- PHP/MySQL 중앙 동기화


## v232 완료 유지 항목

### SQLite 저장 폴더·원본 파일 조회

- 테스트: `Shared/test_shared_storage.py`, `Analyze8780/test_analyze8780_module.py`
- 결과: OK
- 검증: SQLite v5 migration, `folder_name`, `file_name`, `relative_path`, Analyze API·UI 표시, 서버 sync 경로 비노출

### WS 진단 callback·canonical 회귀

- 테스트: `WS8771/test_ws8771_module.py`, `Shared/test_shared_storage.py`
- 결과: OK
- 검증: `save_dialog_state` 존재, 영상 저장 시 기존 Reel URL 유지

### 완료로 표시하지 않는 항목

- 실제 파일·Analyze8780 화면 확인


## v233 검증대기 기록

- v232 CDP 다운로드 경로는 정적 테스트는 통과했으나 실제 Chrome에서 적용되지 않았다. 완료 기준에서 제외하고 폐기 기록으로 이동했다.
- v233 WS 직접 다운로드 코드는 자동 회귀가 통과했지만 실제 Windows 파일 저장 로그 전까지 완료로 기록하지 않는다.


## v234 코드 검증

### Auto8700 main-thread UI·총괄 종료

- 테스트: `Auto8700/test_auto8700_module.py`
- 결과: OK
- 검증: UI main thread 실행, daemon UI thread 제거, X 종료 event, WS/Analyze/RTC 종료, Chrome/CDP 제외
- 실제 Windows 창 표시와 프로세스 종료는 검증대기


## v235 코드 검증

- Auto8700 주 모니터 위치 보정·단계별 HWND 로그 회귀 OK
- IG direct download 전체 msg/meta 전달 회귀 OK
- WS 중첩 finalize 완료 응답 해석 회귀 OK
- 메인 IG 계정·No·미디어 종류 별도 줄 회귀 OK
- 실제 Windows·Chrome 동작은 검증대기


## v236 문서 운영 기준 완료

### 기능 체크형 로그 기준

- 결과: 문서 반영 OK
- 반영 문서: `ai_read.md`, `ai_read_패치.md`, `ai_read_완료.md`, `ai_read_삭제.md`, `test_list.md`
- 완료 범위: 로그 상태, 중복 방지, 단계 진행 조건, 예외추적, 문서 연결 기준
- 주의: 실제 프로그램 소스의 로그 전환은 아직 수행하지 않았으며 기능별 별도 작업으로 진행한다.


## v237 코드 검증

- 자동 다운로드 background 사전 확인에 강제 WS probe 적용 코드 확인
- `AD-01~AD-07` 체크 ID와 한국어 상태 로그 코드 확인
- 동일 cycle 체크 로그 중복 방지 코드 확인
- WS8771 기능 체크 로그의 한국어 형식·중복 방지 회귀 확인
- 실제 Chrome 자동 다운로드와 실제 파일 생성은 검증대기


## v237 실제 Windows 로그 확인

### Auto8700 창·종료

- 실제 로그: 창 `VERIFY_OK`
- 실제 로그: WS8771·Analyze8780·RTC8790_8791 전체 종료
- 실제 로그: Chrome/CDP 유지
- 결과: OK

### 자동 직접 다운로드

- No001 `northbendescapes`: MP4·JPG·JSON·HTML 저장 OK
- No002 `allbeauty_addiction`: MP4·JPG·JSON·HTML 저장 OK
- 저장 위치: `_StDown/instagram/{계정}/{원본파일명}`
- 결과: OK
- 서버 `media_insert` HTTP 500은 로컬 다운로드 완료와 분리된 실패 항목으로 유지한다.

## v238 프로젝트 진행로그 코드 검증

- 테스트: `WS8771/test_ws8771_module.py`
- 결과: 10 passed / OK
- 검증:
  - 프로젝트 진행로그 별도 파일명
  - 같은 체크 중복 방지
  - 실패 시 기존 상세로그 검색 표식
  - 상세로그 경로·검색키워드 연결
  - 실패 발췌로그 생성
- 실제 Windows 파일 생성은 검증대기다.

## v238 프로젝트 진행로그 실제 Windows 확인

- `ws_project_progress_log_*` 생성 확인
- 실패 시 상세 실행로그 전체 경로와 `*** 상세로그 ***` 검색키워드 연결 확인
- `ws_failure_log_*` 실패 발췌 생성 확인
- `media_insert` HTTP 500을 로컬 저장과 분리한 비차단 실패 기록 확인
- AD-03 중간 실패의 복구완료와 AD-06·AD-07 로컬 성공 판정은 후속 수정 필요

## v239 Main UI 코드 검증

- 테스트: `IG_StYellow/test_ext_module.js`, `IG_StYellow/test_ext_main_ui.js`
- 결과: OK
- JavaScript syntax: OK
- 전체 Python 회귀: 44 passed / OK
- 검증 범위: 진단 상시영역 숨김, CDP 옆 진단 토글, 상태 미러링, Main rank map 복원, Side 날짜·통계 설정 연동, 현재 선택 강조
- 실제 Chrome 렌더링은 검증대기

