# yyy_find 현재 기준서

## 현재 버전
- 산출물 버전: v1
- 기준 경로: `/var/www/html/y`
- 기준 파일 묶음: `yyy_cmd관련모두_20260712_08.zip` 위에 `yyy_find사용전체_20260712_08.zip`을 덮어쓴 통합 구조
- `manifest.json`은 원본 구조에 없으므로 추가하지 않음

## 절대 원칙
- `ZIP 검색`을 체크하지 않으면 기존 일반 파일 검색·개별수정·일괄수정 흐름을 유지한다.
- ZIP 내부 파일은 실제 파일 경로가 아니므로 수정·비교·복구 대상에 넣지 않는다.
- ZIP 열기·읽기 실패를 성공처럼 처리하지 않고 화면에 오류 또는 처리 상태로 표시한다.
- ZIP을 임시 폴더에 압축 해제하지 않고 PHP `ZipArchive`로 직접 읽는다.
- 검색 폼과 상단 제목은 `PHP_SELF` 기준으로 현재 파일에 재진입한다.

## ZIP 검색 동작
- `ZIP 검색` 체크 시 검색 경로 아래의 `*.zip`만 수집한다.
- ZIP 원본 경로에는 기존 다운로드 아이콘을 유지한다.
- ZIP 원본 아래에 일치한 내부 파일 경로와 검색 주변 줄을 계층형으로 표시한다.
- 내부 파일은 `내부 읽기 전용`으로 표시한다.
- 내부 항목 최대 읽기 크기는 8MB이며, NUL 문자가 있는 바이너리 항목은 검색에서 제외한다.

## 기존 옵션 적용 기준
- `path`: 실제 ZIP 파일을 찾을 시작 경로
- `exdir`: 실제 ZIP 탐색 폴더와 ZIP 내부 경로에 모두 적용
- `ext`: ZIP 내부 파일 확장자에 적용 (`all` 포함)
- `fileLike`: ZIP 내부 파일 basename 포함 조건
- `eXn`: ZIP 내부 파일 basename 제외 패턴
- `eXt`: ZIP 내부 파일 제외 확장자
- `find`, `caps`, `w`, `is_multiline`, `mLen`, `debug`: ZIP 내부 내용 검색에 적용

## ZIP 검색 시 비활성 기능
- Diff비교
- dev비교
- 일괄수정
- 개별수정
- rollback
- 백업안함
- find2File

위 항목은 체크 즉시 회색·취소선 처리하고 입력 자체를 disabled 한다. 서버에서도 ZIP 모드의 저장·개별수정·일괄수정을 거부한다.

## 주요 파일 역할
- `yyy_find.php`: 기존 파일 검색 및 ZIP 내부 읽기 전용 검색 통합
- `yyy_func.php`: 기존 일반 파일 검색·백업·치환 함수
- `yyy_url_fav.php`: 상단 URL 즐겨찾기
- `yyy_host_link.php`: 원본 ZIP 다운로드 링크 생성

## 현재 남은 문제
- 실제 운영 서버에 PHP `ZipArchive` 확장이 설치되어 있어야 한다.
- ZIP 내부 파일 개별 다운로드·추출·직접 수정은 구현하지 않았다.
- 중첩 ZIP 내부 재귀 검색은 하지 않는다.

## 테스트 완료 상태
- 전체 PHP 파일 문법 검사 통과
- ZIP 내부 확장자·파일명·제외 파일명·제외 폴더 필터 테스트 통과
- 대소문자·워드 단위·여러 줄 검색 테스트 통과
- ZIP 원본 다운로드 링크 및 내부 계층 결과 렌더링 테스트 통과
- 일반 파일 검색 모드 회귀 테스트 통과
- 테스트 환경 PHP에는 ZipArchive가 없어 실제 압축 라이브러리 대신 동일 API 테스트 대역으로 결과 렌더링을 검증함
