원화를 올렸는데 검수할 그림이 없었습니다
이모티콘 원화 업로드는 성공했지만 항목 번호가 저장되지 않아 검수에서 빠졌습니다. 파일 이름으로 연결 대상을 미리 보여주고, 이미 올린 그림도 다시 연결할 수 있게 고쳤습니다.
들어가며
이모티콘 제작 도구에서 PNG를 올리면 “1장을 올렸습니다.”가 나왔습니다. 바로 다음 단계로 넘어가면 “민 것이 없습니다 — 항목에 원화를 먼저 올려 주세요.”라고 했고요. 2026년 9월 1일에 이 두 메시지 사이를 따라갔습니다.
파일은 저장됐지만 항목 번호가 없었습니다
파일이 없는 것은 아니었습니다. 업로드한 원화는 저장소에 남아 있었습니다. 검수 쪽은 이모티콘의 각 항목에 연결된 그림만 고르고 있었습니다.
assets.filter(one => one.item_id === itemId)
그런데 업로드 화면에서 itemId를 보내지 않았습니다. 저장하는 쪽에는 항목 번호가 없을 때 시리즈에만 그림을 붙이는 경로가 있었고, 모든 업로드가 그쪽으로 들어갔습니다. 화면에서 “개별 PNG”를 골라도 연결 대상이 생기는 것은 아니었습니다.
만들어 둔 데이터로는 지나갔던 경로
그전에는 /seed로 넣은 데이터로 흐름을 확인했습니다. 그 데이터에는 항목과 원화의 관계가 들어 있었습니다. 사람이 화면에서 파일을 올리는 경로에는 같은 관계를 만드는 처리가 빠져 있었습니다.
작업 단계별로 무엇을 읽고 무엇을 쓰는지 적다가, 원화를 올리는 단계가 item_id를 가진 데이터를 만들지 않는다는 것을 찾았습니다. 업로드는 파일을 저장했고 검수는 연결된 파일을 찾았습니다. 둘 사이에 필요한 값 하나가 없었습니다.
올리기 전에 연결할 항목 보여주기
연결 대상을 업로드 전에 보이게 바꿨습니다. 01-좋은 아침.png처럼 번호와 구분자가 있는 이름은 1번 항목으로 연결하고, 01좋은아침.png처럼 애매한 이름은 추측하지 않게 했습니다. 이름을 읽는 함수도 한곳으로 모았습니다.
미리보기에는 “28/32”처럼 연결 가능한 수를 표시했습니다. 맞지 않는 파일은 시리즈 원화로 남는다는 것을 올리기 전에 알 수 있습니다. 항목 카드에서 직접 올리면 해당 항목에 붙고, 이미 올린 원화도 파일을 다시 전송하지 않고 연결 대상을 바꿀 수 있게 했습니다.
마치며
이렇게 연결 값을 다루는 코드는 바꿨지만, 그날은 로그인한 화면에서 업로드부터 검수까지 한 바퀴를 돌려 보지는 못했습니다. 이 확인은 일지에 남겨 뒀습니다.