# 현재 패치 상태 — 패키지 v240

## `[코드반영·검증대기]` IG Main UI 정리

- Main 우측 원점·상태 상시 패널을 숨기고 기존 상태 로딩은 유지한다.
- CDP 바로 옆 `18×18` 진단 토글 버튼과 작은 상태 패널을 추가한다.
- Main `No000`을 현재 rank map에서 복원해 계정 표시 갱신 후 사라지지 않게 한다.
- Main 날짜 색상과 조회수·좋아요·댓글·리포스트 하단 막대는 Side 표시 설정을 그대로 사용한다.
- Prev/Next 현재 게시물은 노란 테두리·랭킹 배경으로 표시한다.
- `IG_StYellow/test_ext_module.js`, `test_ext_main_ui.js`, JavaScript syntax OK.
- 실제 Chrome 화면은 검증대기다.


## `[코드반영·검증대기]` WS8771 프로젝트 진행로그

- 자동 다운로드 `AD-01~AD-07` 체크 결과를 별도 `ws_project_progress_log_*`에 기록한다.
- 프로젝트 진행로그만 보고 성공·실패·다음 단계 진행 가능 여부를 판단한다.
- `[체크실패]` 시 기존 `ws_run_log_*`에 `*** 상세로그 *** {검색키워드}` 구간을 기록한다.
- 프로젝트 진행로그에는 상세 실행로그 전체 경로, 검색키워드, 실패 발췌로그 경로를 기록한다.
- 실패 관련 항목만 `ws_failure_log_*`로 별도 보관한다.
- 같은 cycle·체크ID·상태·자산은 한 번만 기록한다.
- 중간 실패 후 같은 cycle의 `AD-06` 저장이 성공하면 이전 실패를 `[복구완료]`로 해제한다.
- 서버 `media_insert` 실패는 `AD-06-S01`로 분리하고 로컬 저장 성공과 구분한다.
- `AD-06-S01` 실패는 로컬 자동 다운로드를 중단시키지 않고 별도 추적한다.
- Python compile 및 `WS8771/test_ws8771_module.py` 10개 테스트 OK.

### 실제 Windows 확인 결과

- `ws_project_progress_log_*` 생성: OK
- 상세로그 전체 경로·검색키워드 연결: OK
- `ws_failure_log_*` 실패 발췌 생성: OK
- 서버 HTTP 500을 `AD-06-S01` 비차단 실패로 분리: OK
- AD-03 중간 실패 후 `[복구완료]`: 누락
- 실제 로컬 저장 성공의 AD-06·AD-07 최종 판정: 누락

## `[검증대기]` IG 화면 회귀

- 메인 화면의 `IG 계정`, `No000`, 미디어 종류가 별도 줄로 표시되는지 실제 Chrome 확인이 필요하다.
- Side 표시와 메인 표시가 서로 덮어쓰지 않는지 확인이 필요하다.

## `[예정]` 빈 source_scope 폴더 정리

- `_StDown/instagram/explore`처럼 계정명이 아닌 source_scope 빈 폴더가 생성되는 경로를 확인한다.
- 실제 계정명이 확정되기 전에는 계정 저장 폴더를 만들지 않도록 한다.

## `[코드반영·운영검증대기]` media_insert HTTP 500 진단·MySQL 호환

### 실제 로그 기준

- `media_exists`: 정상 (`ok=1`, `exists=0`)
- 로컬 다운로드: MP4 4개 + JPG 4개 = 총 8개 저장 OK
- JSON·MD5·HTML 보고서: OK
- `media_insert`: 8회 모두 HTTP 500

### v240 코드반영

- WS8771이 `urllib.error.HTTPError` 응답 body를 읽고 PHP JSON 오류를 보존한다.
- `http_status`, `error_stage`, `sql_error_code`, `message`, `table`, `missing_columns`를 실행로그·실패로그에 연결한다.
- PHP에 `mode=schema_check`를 추가한다.
- `media_insert`를 `schema_check`, `master_upsert`, `user_download_upsert`, `collect_event_upsert` 단계로 분리한다.
- PHP 최상위 `Exception`과 `Throwable`을 JSON 오류로 변환한다.
- API 실행 중 `yy_db_conn.php`가 `display_errors=1`로 HTML 오류를 섞지 않도록 한다.
- 비파괴 `yellow_schema_v46_compat.sql`을 추가한다.

### 검증 결과

- Python compile: OK
- PHP syntax: 3개 파일 OK
- `WS8771/test_ws8771_module.py`: 12 passed
- `/var/www/html/i/test_yellow_php_static.py`: 4 passed
- 실제 운영 MySQL `media_insert`: 검증대기

### 운영 다음 작업

1. `/var/www/html/i` 파일 배포
2. `mode=schema_check` 결과 확인
3. 누락 컬럼이 있으면 `yellow_schema_v46_compat.sql` 적용
4. 동일 shortcode의 video/image `media_insert` 재실행
5. HTTP 200, `ok=1`, `collect_event` 응답 확인
