Use visible NAS upload storage and reconcile missing files

This commit is contained in:
2026-10-13 15:54:27 +09:00
parent 50e54bc4c5
commit 9e0f493228
26 changed files with 1075 additions and 119 deletions

View File

@@ -137,3 +137,12 @@
- 내 기기 설정의 발견 허용 스위치를 제거했다. 이전 버전에서 발견을 꺼둔 세션도 재접속 시 켜지며 기기 ID·저장한 이름을 유지하는지 검증했다. 기존 서버의 접근 제어·방 격리와 발견 차단 API는 유지한다.
- 전체 빌드·타입 검사와 API 테스트 80개 통과. 계정 보관함·반응형 레이아웃·익명 파일/링크 전송·클립보드 텍스트·위치 자동 발견 브라우저 검증 5종을 통과했다. 실제 계정 메일은 테스트 메일러로 검증하며 외부 Resend 발송은 수행하지 않았다.
- 파일 원본·조각·DB의 영구 볼륨 위치, 다운로드 실패·사이트 이탈, 마지막 유효 참조가 끝난 뒤 원본 정리와 관리자 접근 범위를 구현 코드로 확인해 deploy.md에 기록했다. 파일 보관 정책·DB 구조·YAML·환경변수는 변경하지 않았다. NAS 원격 배포는 수행하지 않았다.
## 2026-10-13 공유 폴더 저장·수동 삭제 대비와 안내 정리
- 파일을 프로젝트의 `uploads` 바인드 마운트에 저장하며 Git·Docker 빌드에서 제외한다. NAS 로그인 사용자의 UID/GID로 앱을 실행하고 소유자 전용 저장 권한을 준비한다. DB 볼륨에는 Compose 라벨과 nocopy를 적용해 처음 만든 빈 볼륨의 소유권을 유지한다. 실행 중인 프로젝트의 권한 변경과 이전 업로드 볼륨을 연결한 상태의 전환은 설정 스크립트에서 거절한다.
- 사용자 요청대로 기존 NAS 테스트 자료를 복사하지 않는 최초 초기화 절차를 deploy.md 7-1에 기록했다. `.env`는 유지하며 설정 스크립트 자체는 데이터를 삭제하지 않는다. 초기화 명령은 NAS에서 사용자가 실행해야 하고 이후 코드 업데이트에서는 반복하지 않는다.
- 수동 삭제 검증 8개를 추가해 API 총 88개를 통과했다. 조회·개인 용량·다운로드·1분 정리 작업으로 사라진 원본을 감지하며 공유된 모든 항목의 만료·용량 회수·정상 파일/링크 및 페이지 유지·소켓 알림·수락 대기 취소를 확인했다. 멱등 트랜잭션 실패/롤백 후에도 정리를 유지하고 다운로드 직전 삭제는 404, 권한 오류는 기록을 유지한 503으로 처리한다.
- 계정 브라우저 검증에서 NAS 저장소에 해당하는 실제 서버 원본을 삭제한 뒤 다운로드 전 안내·양쪽 보관함과 사용량 정리·다른 기기의 열린 전송 선택 해제·전송 버튼 비활성화를 확인했다. 기존 저장·메모·삭제/복원·수락 후 자동 열기/다운로드·로그아웃 권한 격리는 유지한다.
- 오류 토스트의 좌우 여백·텍스트/아이콘 중앙 정렬·44px 닫기 버튼·5초 자동 닫힘, 모바일 네트워크 실패의 한국어 안내와 수동 닫힘을 실제 Chromium에서 확인했다. 링크 수신 안내도 5초 뒤 닫히고 새 전송 모달을 가리지 않는다. 이메일 변경 버튼은 숨기고 받은 항목/임시 저장 탭 순서와 보관 만료 날짜 문구를 정리했다.
- 전체 빌드·타입 검사, 계정·반응형 레이아웃·익명 파일/링크·클립보드 텍스트 브라우저 검증을 통과했다. 운영 Docker 이미지 빌드, 기본 UID와 다른 NAS UID/GID를 사용하는 실제 격리 Compose 시작/health·영구 DB·호스트 바인드 마운트·공개 호스트 포트 없음, 재시작 뒤 파일/텍스트/세션 보존과 8MiB 미완료 조각 이어 보내기·SQLite integrity·호스트 파일 삭제를 확인했다. 실제 NAS·파일 관리자·실물 Safari의 확인과 재배포는 수행하지 않았다.