글에 넣을 자료가 많아지면 어떤 파일을 확인했고 지금 어디에서 사용하는지 찾을 수 있어야 한다. 이름에 최종이라고 붙여도 내용의 승인이나 공개 조건이 자동으로 생기지는 않는다. 나는 이번 미디어 서재에서 업로드 상태와 검토, 현재 원고의 참조를 따로 기록하는 이유를 정리했다.

준비 상태와 내용 검토는 다른 질문이다

파일 조각을 받아 객체를 완성하는 일은 전달 가능한 자료를 만드는 과정이다. 그 내용에 고객 이름과 비공개 정보가 남아 있는지, 사용할 수 있는 자료인지 읽는 일은 다른 확인이다. 현재 API도 준비가 끝난 자료에 검토 근거를 기록하고 그 상태를 별도로 보존한다. 업로드 성공을 내용 승인으로 부르지 않는다.

공개 전에는 이미지의 실제 글자와 설명, 영상과 PDF에 들어 있는 내용도 살펴야 한다. 해시와 형식 검사는 선택한 바이트와 형식을 맞추는 근거이며 자동 익명화나 권리 승인 도구는 아니다. 이번에 공개한 로고 예제는 새 익명 파일을 직접 확인해 올렸고 원래 고객의 자산은 옮기지 않았다. 검토의 대상과 범위도 파일과 함께 남겼다.

검토 상태를 바꿀 때 현재 버전을 확인한다

여러 작업자가 같은 자료를 관리할 수 있으면 이전 상태를 기준으로 승인 값을 쓰는 실수를 막아야 한다. 현재 검토와 검토 회수 요청은 자료의 버전을 함께 확인한다. 요청 뒤 수정 기록의 버전도 바뀐다. 나는 지금 읽은 상태와 바꾸려는 상태를 연결하는 방식으로 관리하며 충돌을 새 번호만 가져와 덮어쓰는 신호로 사용하지 않는다.

이름이 같아도 다른 바이트를 선택했다면 이전 검토를 새 내용의 근거로 그대로 쓰기 어렵다. 현재 업로드 재개도 파일 조건을 비교해 다른 내용을 같은 기록으로 이어가지 않도록 한다. 자료의 확인 근거는 어떤 파일을 읽었는지와 이어져야 한다. 이름을 기억하는 것보다 현재 기록과 실제 파일 조건을 맞추는 편이 중요하다.

공개 읽기는 현재 발행된 글의 사용을 함께 본다

현재 공개 미디어 경로는 준비와 검토를 확인하고 발행된 원고의 현재 버전에서 사용되는지도 조회한다. 원고의 이전 개정에 파일이 있었다는 사실만으로 계속 공개하지 않는다. 그 SQL 조건을 이번에 로컬 메모리 데이터베이스에서 실행하고 새 공개 판정 모듈과 같은 결과가 나오는지 대조했다.

한 글을 내렸어도 다른 발행 글이 같은 파일을 사용하면 그 자료는 여전히 공개 대상일 수 있다. 공유 파일을 비공개로 바꾸려면 어느 현재 원고가 참조하는지 먼저 읽어야 한다. 새 예제에서는 한 글을 내린 상태와 다른 글의 현재 참조를 같이 놓아 결과를 확인했다. 단순한 파일별 공개 표시보다 관계를 읽는 이유다.

관리 접근과 짧은 미리보기 권한을 구별한다

아직 공개하지 않은 자료도 관리자는 확인할 수 있어야 한다. 현재 코드는 인증된 접근과 짧은 서명 미리보기 주소를 일반 공개 읽기와 별도로 처리한다. 미리보기의 자료 식별자와 만료 조건을 확인하는 흐름이다. 원고 미리보기를 외부에 건네는 행동은 그 주소가 허용하는 자료 접근도 함께 생각해야 한다.

검토 회수는 일반 공개 경로의 조건을 바꾸지만 이미 유효한 미리보기 권한과 관리 인증을 모두 없애는 동작은 아니다. 현재 코드의 이 경계를 그대로 설명한다. 공개 주소에서 내려갔다고 이미 내려받은 사본까지 사라지지도 않는다. 어떤 접근 경로를 바꾸었는지와 남는 권한, 만료 시점은 따로 확인해야 한다.

자료 회수의 영향과 실제 확인 범위를 남긴다

자료가 일반 공개 조건을 잃으면 그 자료를 사용하는 글의 표시에도 영향이 생길 수 있다. 글을 내릴지, 자료를 교체할지, 다시 검토할지를 실제 참조를 읽은 뒤 정해야 한다. 원고를 내리는 기능은 공개 검토 조건이 달라져도 사용할 수 있게 해 두었다. 데이터를 지우는 작업과 현재 공개를 바꾸는 작업은 별도로 관리한다.

이번 로컬 SQL 일곱 조건과 새 모듈 검사는 현재 참조와 공유, 검토가 없는 상태를 확인했다. 운영 중인 공개 자료의 검토를 시험 삼아 회수하지 않았고 다른 사이트도 바꾸지 않았다. 나는 관리 근거를 공개할 때 이런 조건을 설명하되 실제로 실행하지 않은 전환을 수행한 경험으로 적지 않는다. 다음 작업자가 영향 범위를 다시 읽을 수 있게 남긴다.