[현장 업무 앱 만들기] 3편
안녕하세요! AiApp을 만드는 엠바스의 신입 개발자입니다.
1편에서 업무 앱은 매일 열어야 하고 쓸수록 데이터가 쌓인다고 적었습니다. 화면이 나오고 로그인까지 붙었지만 그 문장의 뒷부분, 그러니까 데이터가 쌓이는 쪽은 아직이었습니다. 이번 편의 목표가 그것입니다. 코드는 한 줄도 쓰지 않는 것과 개발 용어 없이 채팅으로만 진행하는 것, 두 조건도 그대로 갑니다.
쓰면서 찾은 문제로 첫 요청
앱을 계속 써 보면서 모인 문제는 세 가지입니다. 화물을 등록할 때 선적계획명을 매번 글자로 치는데, 오타가 한 글자만 나도 그 화물을 나중에 못 찾습니다. 우리 일은 선적계획 단위로 돌아가는데 목록에는 그 구분이 없고, 새로고침을 하면 등록한 것이 사라지는 것 같았습니다.
지난 편처럼 계획 모드를 켜고 이 문제들을 업무 이야기 그대로 적었습니다. 화물은 전부 어느 선적계획 건인지가 붙어 다닌다, 같은 화물관리번호라도 계획이 다르면 다른 건이다, 계획은 미리 등록해 두고 거기서 골라 쓰게 해달라, 목록도 계획을 먼저 고르고 그 안의 화물만 보게 해달라, 그리고 등록한 목록은 계속 남아서 사무실 다른 사람 컴퓨터에서도 똑같이 보여야 한다.
적으면서 가장 마음에 걸렸던 줄은 따로 있습니다. 선적계획 하나에 배가 한 척만 있는 게 아니라 같은 계획에 배가 여러 척이고 항해번호도 여러 개라는 사실인데, 이걸 어떻게 만들어 달라는 말 없이 사실 한 줄만 적어 두고 어떻게 푸는지 보기로 했습니다.
계획서가 정리한 방향 고르기
계획서가 요청을 성공 기준 4가지로 정리했습니다
계획서 첫 문단은 제 요청을 그대로 알아들은 요약이었습니다. 선적계획을 매번 글자로 치는 칸이 아니라 미리 등록해 두고 골라 쓰는 업무 단위로 바꾸고, 화물 조회와 등록이 전부 고른 계획 안에서 이뤄지게 한다는 내용입니다. 오타 걱정은 "오타로 인한 유실이 구조적으로 불가능할 것"이라는 문장으로 계획서에 들어가 있었습니다.
이어서 제 요청이 성공 기준 4가지로 정리됩니다. 계획 목록에서만 고르게 할 것, 계획이 다르면 별개 건으로 볼 것, 계획을 고르기 전에는 화물이 보이지 않을 것, 새로고침을 해도 다른 컴퓨터에서 봐도 같은 목록일 것. 요구사항 정리를 제가 아니라 AI가 했습니다.
방향은 3개가 나란히 나왔고, 갈린 지점이 바로 그 한 줄입니다. 배와 항해번호를 얼마나 세분화할지에서 세 방향이 갈린다고 계획서가 스스로 밝히고 있었고, 그중에는 계획 아래에 항차라는 단위를 정식으로 두는 3단 구조까지 있었습니다. 제가 생각하지 못한 그림입니다. 말을 적게 했더니 선택지가 돌아왔습니다.
질문에 답하고 계획 확정하기
계획서 끝에는 이번에도 확인 질문이 3개 붙었습니다. 끝난 계획을 조회에서도 감출지, 현장 검수원도 계획을 직접 고르게 할지, 엑셀로 한 번에 올릴 때 계획을 어떻게 정할지. 엑셀은 제가 아직 꺼내지도 않은 주제인데, 화면에 이미 있던 업로드 버튼과 새 구조가 만나는 지점을 먼저 찾아서 물어온 것입니다.
답을 적어 보냈습니다. 계획은 끝나는 날짜가 딱 정해진 게 아니라서 기간 대신 관리자가 직접 사용 여부를 표시하는 걸로, 현장도 일을 시작할 때 계획을 먼저 고르는 걸로, 엑셀은 올릴 때 고른 계획으로 다 들어가는 걸로. 계획서는 답을 반영해 다시 정리되면서, 계획은 더 이상 필터 값이 아니라 관리자와 현장이 공유하는 작업공간이 된다는 설명을 붙였습니다. 추천안으로 작업을 시작했습니다.
새로 생긴 화면 확인하기
구현이 끝나고 출시한 앱에 관리자로 들어가면 선적계획 관리 메뉴가 새로 보이고, 화면 상단에는 계획을 골라 끼우는 선택 칸이 늘 따라다닙니다.
등록 화면에는 기간 대신 사용 중 체크 하나만 있습니다
계획 등록 화면에는 제가 답한 그대로 기간 칸이 없습니다. 계획명과 메모, 사용 중 체크 하나. 안내문에는 사용 안 함으로 바꿔도 이미 등록된 화물과 검수 결과는 계속 조회할 수 있다고 적혀 있습니다. 채팅에 적은 요구가 문장 수준까지 그대로 화면에 내려온 셈입니다.
계획을 고르기 전에는 목록이 비어 있습니다
화물 목록과 대시보드는 계획을 고르기 전에는 비어 있고, 먼저 선적계획을 선택하라는 안내만 보입니다. 계획을 안 고르면 볼 게 없다고 적었던 문장이 있으면 좋은 검색 조건이 아니라 반드시 거치는 단계로 읽힌 것입니다.
구현 완료 메시지에는 이런 줄도 있었습니다. 화물과 검수 결과가 이제 서버에 저장되어 새로고침을 해도 사라지지 않고, 사무실 다른 컴퓨터에서도 같은 목록이 보인다는 것. 쓸수록 데이터가 쌓인다는 조건이 여기서부터 성립합니다.
쓰던 양식을 그대로 전달하기
다음은 등록입니다. 화물은 하나하나 손으로 넣지 않고 화주가 보내주는 엑셀을 그대로 올리는 게 우리 방식이라, 파일 첫 줄에 있는 칸 이름 21개를 통째로 채팅에 옮겼습니다. 순번, 선적계획명, 화물관리번호, 품명부터 선박명, 항해번호, 비고까지. 파일 속 선적계획명 칸은 만드는 직원이 보라고 적어둔 것이니 무시해 달라는 말과, 같은 파일을 실수로 두 번 올려도 같은 화물이 두 줄로 생기면 안 된다는 말을 붙였습니다.
반영 결과에서 눈에 띈 것은 선박명과 항해번호입니다. 열 이름을 나열했을 뿐인데 이 두 칸은 화물마다 다른 실제 값으로 저장되도록 만들어졌습니다. 배가 여러 척이라던 그 한 줄과 엑셀 열 목록이 만나면서, 설계를 입에 올리지 않고도 구조가 우리 업무에 맞춰진 것입니다.
몇 줄을 읽어 몇 건을 등록했는지 문장으로 알려줍니다
25건짜리 파일을 올리니 25건이 새로 들어왔다는 안내가 뜹니다. 같은 파일을 한 번 더 올리면 변경 사항이 없다고 알려주고, 값 몇 개를 수정한 파일을 올렸을 때는 신규 2건에 갱신 4건. 제가 파일에서 수정한 수와 정확히 같았습니다. 같은 파일을 다른 계획에 올리면 25건이 새로 들어갑니다. 같은 번호라도 계획이 다르면 다른 건이라는 요구가 등록에서도 지켜집니다.
바뀐 기록까지 남기기
데이터가 쌓이기 시작하면 다음에 오는 질문은 정해져 있습니다. "이거 원래 몇 개였지?" 숫자가 안 맞으면 서로 자기는 안 고쳤다고 하는 게 사무실 풍경이라, 화물마다 언제 누가 어느 칸을 무엇에서 무엇으로 바꿨는지 남겨 달라고 적었습니다. 엑셀로 바뀐 건지 사람이 직접 바꾼 건지 구분해 달라는 것과, 한번 남은 기록은 아무도 손대지 못해야 한다는 조건도 함께.
어느 칸이 어떻게 바뀌었는지 출처와 함께 남습니다
화물 상세 화면 아래에 변경 이력이 생겼습니다. 어느 칸이 무엇에서 무엇으로 바뀌었는지와 누가 언제 바꿨는지가 시간 역순으로 쌓이고, 항목마다 엑셀 업로드인지 직접 수정인지 출처 표시가 붙습니다. 엑셀로 바뀐 항목은 원본 파일의 몇 번째 줄이었는지까지 보입니다.
이력에서는 요청하는 방법도 하나 바꿔 봤습니다. 대량으로 수정하는 날이 오면 이력 줄 수가 크게 불어날 텐데 지금 방식이 그 규모에서도 괜찮은지, 바로 고치지 말고 알려만 달라고 물었습니다. 답은 선택지 3개로 왔고 각각 무엇을 잃는지까지 붙어 있었습니다. 한 번의 수정을 한 줄로 묶는 두 번째 방법을 고르니 기존 기록은 그대로 둔 채 새 방식이 적용됐고, 옛 기록도 새 기록도 한 화면에서 똑같이 읽힙니다.
커질 규모를 미리 알리기
앞으로 한 계획에 화물이 2,000건에서 3,000건까지 들어온다는 것도 미리 알렸습니다. 그 규모가 되어도 목록에서 다 보이고 검색하면 다 찾아져야 한다고 적으니, 목록은 50건씩 페이지로 넘겨 보는 방식이 되고 검색은 전체를 대상으로 하게 됐으며, 화면 위에는 총 몇 건인지가 항상 표시됩니다. 320건짜리 파일도 올려 봤습니다. 전부 들어간 것을 화면의 총 건수로 확인했습니다.
저장된 값 전부가 목록에 보이고 번호 칸은 왼쪽에 고정됩니다
저장된 값 전부를 목록에서 보고 싶다고 하니 방법은 AI가 골랐습니다. 칸을 줄이는 대신 가로로 스크롤하게 하고, 화물관리번호 칸은 어디까지 밀어도 왼쪽에 고정. 실수로 같은 번호를 손으로 등록하는 일까지 막아 달라는 요청에는 이미 등록된 번호라는 안내와 그 화물로 바로 가는 링크가 왔고, 업로드 결과 문장은 신규와 갱신과 변경 없음을 더하면 올린 줄 수와 딱 맞아떨어지게 정리됐습니다.
1편에서 화면을, 2편에서 규칙을 말로 옮겼고 이번에는 데이터 차례였습니다. 개발자라면 여러 용어로 부를 이 구조를 저는 업무 순서와 엑셀 양식과 사무실에서 오가는 말로만 전달했는데, 그것을 지켜야 할 기준으로 정리하고 화면과 저장 구조로 옮기는 일은 전부 AI가 했습니다.
여기까지가 이번 편입니다. 다음 편에서는 화물을 한 건씩 수정하고 삭제하는 부분과 그때 쌓이는 기록을 다뤄 보겠습니다.




