# sort 프로젝트 현재 운영 지침 — v263

## 1. 기준 구조

base_root는 항상 `mnt/d/_St`로 유지한다.
현재 역할과 테스트는 실제 ZIP에 존재하고 사용하는 모듈만 기준으로 한다.

- `Analyze8780`: 로컬 조회·분석 HTTP 서비스
- `Auto8700`: 현재 관리 서비스 실행·감시와 총괄 UI
- `IG_StYellow`: Instagram Main Injection·Side UI·자동/수동 수집 제어
- `RTC8790_8791`: 원격 화면·입력 지원
- `Shared`: 공통 저장소·SQLite/MySQL 스키마·공용 정책
- `WS8771`: 원본 미디어 직접 저장·JSON·HTML 보고서·서버 연결

## 2. 코딩 시작과 범위

사용자가 정확히 `코딩 시작`이라고 말하기 전에는 분석·설계·수정 후보·테스트 계획만 작성한다.
코딩 시작 뒤에는 최신 ZIP, `ai_read*`, `test_list.md`, 실제 소스를 순서대로 확인한다.
한 작업은 핵심 목표 하나를 기준으로 하되, 같은 폴더 또는 상위 폴더에서 기능적으로 직접 연관된 소스·테스트·버전·문서는 함께 처리한다.
관련 없는 폴더의 실행 소스와 UI는 임의로 변경하지 않는다.

## 3. 완료 기준

코드 반영만으로 완료하지 않는다.
`test_*` 파일 존재, 테스트 결과 OK, `test_list.md`, `ai_read_완료.md`, 필요한 버전 반영이 모두 있어야 완료 후보가 된다.
실제 Windows·Chrome·운영 서버 동작이 필요한 기능은 실제 로그가 없으면 `[코드반영]` 또는 `[검증대기]`로 둔다.
결과값은 OK, FAIL, SKIP, UNKNOWN만 사용하며 UNKNOWN을 성공으로 취급하지 않는다.

## 4. 문서 기준

- `ai_read.md`: 현재 정상 기준·구조·진행률·다음 작업
- `ai_read_패치.md`: 현재 작업·실패·예외추적·검증대기
- `ai_read_완료.md`: 실제 테스트와 실행 결과로 확인된 항목
- `ai_read_삭제.md`: 다시 사용하면 안 되는 로직과 회귀 금지
- `test_list.md`: 전체 테스트 ID·상태·결과·다음 작업

`ai_read.md`는 버전 일기가 아니라 현재 기준서로 유지한다.
진행률은 `완료 항목 수 / 전체 항목 수 × 100`으로 계산한다.

## 5. 로그 기준

상세 실행을 반복 누적하지 않고 기능별 체크 ID의 진행 위치를 남긴다.
허용 상태는 `[체크시작]`, `[체크완료]`, `[체크실패]`, `[예외추적]`, `[복구완료]`다.
같은 실행·기능·체크 ID·결과는 한 번만 기록하고 상태 또는 핵심 값이 바뀔 때만 다시 기록한다.
`blocking=true` 실패는 해당 실패에 의존하는 후속 단계만 중단한다.
`blocking=false` 실패는 독립 처리를 계속하고 실패 항목을 별도로 추적한다.
실패를 성공처럼 기록하거나 조용한 fallback으로 숨기지 않는다.

## 6. 버전·산출물

수정 모듈의 manifest/version_name과 화면 표시 버전, ZIP `_v숫자`를 일치시킨다.
최종 산출물은 전체 base_root를 포함한 프로젝트 ZIP 한 개만 제공한다.
캐시, `__pycache__`, `.pyc`는 최종 ZIP에서 제외한다.
삭제 대상 파일은 산출물 규칙상 필요할 때 0Byte로 포함하되, 이번 작업에서 불필요한 삭제 파일을 새로 만들지 않는다.

## 7. 코딩 후 검사

- Python compile
- JavaScript syntax
- 관련 `test_*`와 전체 회귀
- manifest/version_name·화면 버전
- `ai_read*`·`test_list.md`
- UI 정렬·버튼 상태·문구·기본 브라우저 동작
- base_root와 최종 ZIP 내부 구조
## 8. 자동실행·계정목록 현재 기준

자동실행은 `자동시작`, `중지`, `진행상태 리셋`으로 운영한다. 별도 재시작 버튼을 만들지 않는다.
중지는 진행상태를 보존하고, 다음 자동시작은 보존 상태가 있으면 이어서 실행한다.
일반 계정 저장은 화면 순서를 그대로 저장하고, 별도 정렬 버튼을 눌렀을 때만 정렬한다.
정렬로 순서가 바뀌면 위치 기반 진행상태를 초기화한다.
Explore·Reels의 현재계정추가는 썸네일에 주입된 계정명을 hover 시 전달받아 사용한다.

