흩어진 상태
일정은 캘린더에, 사진은 드라이브에, 검수 의견은 메신저에, 게시 여부는 각 채널에 따로 있어 "이 콘텐츠가 지금 어디까지 왔는지"를 사람이 기억으로 이어 붙여야 합니다.
숙소·공간 콘텐츠팀이 촬영 일정 → 사진 업로드 → 보정·검수 → 채널 게시 네 단계를 한 화면에서 관리하고, 각 단계에서 AI·자동화가 도울 수 있는 지점을 함께 보여주는 내부용 웹 목업입니다. 채용 과제로 받은 주제를 기획부터 구현·배포·설명서까지 혼자 진행했습니다.
콘텐츠 한 건이 카드 한 장이 되어 여섯 단계를 순서대로 지나가고, 카드마다 지금 해야 할 일이 버튼 하나로 붙어 있습니다.
실제 데모 화면 대시보드 → 마감 지연 필터 → 촬영 일정 → 사진 업로드 → 보정·검수 → 채널 게시. 필수 컷이 빠지면 다음 단계로 못 넘어가고, 세 채널이 모두 완료돼야 카드가 완료로 이동합니다.
시간을 잡아먹는 건 각 단계의 작업이 아니라 단계와 단계 사이라고 봤습니다.
일정은 캘린더에, 사진은 드라이브에, 검수 의견은 메신저에, 게시 여부는 각 채널에 따로 있어 "이 콘텐츠가 지금 어디까지 왔는지"를 사람이 기억으로 이어 붙여야 합니다.
누가 무엇을 해야 다음 단계로 넘어가는지가 문서나 구두로만 존재해서, 담당자가 바뀌거나 자리를 비우면 흐름이 멈춥니다.
필수 컷이 빠졌거나 채널 게시가 실제와 다른 것을 검수나 게시 이후에야 알게 되어 재촬영·재작업이 생깁니다.
네 단계 업무를 여섯 개 상태로 나누고, 상태 전환 조건을 한 곳(transition())에서 강제합니다.
촬영일 · 담당자 · 마감 편집. 마감이 촬영일보다 앞서면 저장 불가
공간별 분류. 객실 · 욕실 · 외관 · 편의시설 필수 컷이 다 있어야 통과
사진별 수정 요청이 걸리면 여기로 되돌아옴
전후 비교 · AI 사전 검수. 수정 요청이 남아 있으면 승인 불가
자사 웹 · 인스타 · 블로그 완료 표시와 게시 URL 저장
세 채널이 모두 완료되면 자동 이동
숙소 하나가 카드 하나입니다. 카드를 열면 일정 · 사진 · 검수 · 게시가 탭으로 이어져 어느 화면에서든 같은 상세로 들어갑니다.
모든 카드에 지금 단계의 행동이 버튼으로 붙어 있고, 넘김 조건은 시스템이 확인합니다. 조건이 안 맞으면 무엇이 빠졌는지 알려 줍니다.
잘못 넘긴 카드는 사유를 적고 이전 단계로 돌릴 수 있고, 모든 전환이 작업 기록에 남습니다.
위 세 화면은 전체를 보는 사람용, 아래 네 화면은 단계별 실무자용입니다.
| 화면 | 하는 일 | 눈여겨볼 곳 |
|---|---|---|
| 대시보드 | 진행 중 · 이번 주 마감 · 마감 지연 · 완료 타일, 오늘의 촬영, 우선 확인할 콘텐츠 | AI가 지금 도울 수 있는 작업량을 실제 데이터에서 계산 |
| 전체 콘텐츠 보드 | 6단계 칸반. 타일 · 드롭다운 · 검색으로 필터 | 컬럼은 그대로 두고 카드만 걸러 병목 위치가 보임 |
| 수정사항 | 사진별 수정 요청이 걸린 콘텐츠만 모아 재검수 | 사이드바 숫자 = 남은 수정 요청 건수 |
| 01 촬영 일정 관리 | 촬영일 · 시간 · 담당자 · 마감 편집, 촬영 완료 처리 | 기간 · 담당자 필터 |
| 02 촬영 사진 업로드 | 원본 추가(긴 변 1600px 자동 축소), 공간 분류, 일괄 지정 | 분류 결과가 체크리스트에 반영되고 누락 후보 표시 |
| 03 보정·검수 | 전후 비교 슬라이더, 밝기·대비 미리보기, 사진별 수정 요청, AI 사전 검수 | 수정 요청이 남아 있으면 승인 버튼이 막힘 |
| 04 채널별 게시 | 채널별 규격 안내, 완료 표시, 게시 URL 저장, 판매 채널 등록본 검수 | 사진을 나중에 고치면 해당 채널에 재확인 표시 |
"무엇을 만들었나"보다 왜 그렇게 만들었는지가 이 과제에서 가장 신경 쓴 부분입니다.
단계 전환 규칙을 transition() 한 함수에 모았습니다. 화면마다 버튼은 다르지만 실제 전환은 전부 이 함수를 거치기 때문에, 필수 컷 네 종이 빠진 채로 보정을 시작하거나 수정 요청이 남은 콘텐츠를 승인하는 일이 어느 화면에서도 일어나지 않습니다.
막을 때는 그냥 막지 않고 무엇이 빠졌는지 보여 줍니다. "미확인: 객실 · 욕실"처럼요. 규칙이 한 곳에 있으니 테스트도 그 함수 하나를 상대로 씁니다 - 상태 전환 · 백업 호환 · 사진 검수 · AX 집계, Node 테스트 12개.

과제 요구는 "AX 관점의 개선 아이디어를 반영하라"였습니다. AI를 붙일 곳을 나열하는 대신, 모든 AI 항목을 자동 처리(사람이 안 봐도 되는 것), AI 제안(사람이 고르는 것), 사전 점검(사람이 확인할 것만 추려 주는 것) 세 종류로 나눠 화면에 표시했습니다. 승인 · 수정 요청 · 게시 확정은 어느 경우에도 담당자가 합니다.
목업 안에서도 실제로 동작하는 것(규칙 기반 - 동선 묶기, 담당자 충돌, 필수 컷 대조, URL 재확인)과 고정 예시로만 보여 주는 것(비전·언어 모델 - 공간 분류, 결함 검출, 캡션 초안)을 화면과 설명서에서 구분해 두었습니다. "이건 되는 척"이 아니라 "이건 아직 안 됨"이 보이는 쪽이 신뢰가 간다고 봤습니다.

채널 게시는 이 시스템 밖에서 일어납니다. "완료" 버튼만 두면 눌러 놓고 실제로는 안 올렸거나, 올린 뒤 사진을 고쳤는데 채널은 옛 사진 그대로인 상태를 잡을 수 없습니다. 그래서 채널마다 게시 URL을 저장하게 하고, 이후 사진에 수정 요청이 들어오면 그 채널에 "재확인 필요" 표시가 붙게 했습니다.
같은 이유로 사진별 수정 요청을 저장하면 콘텐츠는 보정 중으로 돌아가면서 채널 게시 표시가 초기화됩니다. 승인된 원본과 나가 있는 게시물이 다른 상태를 시스템이 모른 척하지 않게 하는 게 목적입니다.

과제 조건이 "서버 · DB · 로그인 불필요, 더미 데이터 목업"이었고 기간도 짧았습니다. 그래서 상태는 브라우저 localStorage에만 저장하고, 업로드한 사진도 긴 변 1600px로 줄여 브라우저에만 둡니다. 서버를 안 두는 대신 데이터 내보내기 · 불러오기(JSON)로 다른 PC나 브라우저에 그대로 옮길 수 있게 했고, 시크릿 창으로 열면 언제든 초기 상태로 돌아갑니다.
한계는 분명합니다 - 여러 사람이 같은 데이터를 보지 못합니다. 실제 도입이라면 사내 인증과 공용 저장소를 붙이는 게 첫 작업이고, 그다음 규칙 기반 자동화를 그대로 옮긴 뒤, 모델 연동은 공간 분류나 결함 검출 하나를 골라 파일럿으로 지표를 재면서 넓히는 순서를 설명서에 적었습니다.
6컬럼 칸반은 1100px 아래로 내려가면 컬럼이 한 개씩만 보이는 모드였는데, 그러면 병목이 어디인지 볼 수 없어서 보드의 존재 이유가 사라졌습니다. 전체 단계를 세로로 쌓고 빈 단계는 접히게 바꿨고, 상단에 단계 칩을 두어 특정 단계로 바로 이동할 수 있게 했습니다. 필터를 걸어도 컬럼 자체는 남아 있어서 "검수 대기에 1건만 남았다"가 한눈에 보입니다.

단계마다 "현재 업무 문제 → 개선 방식 → 이 목업에서의 범위 → 검증할 지표"를 짝지어 정리했습니다.
촬영 체크리스트 생성 · D-1 알림 · 필수 컷 대조 · 수정 메모 → 보정 지시서 · 채널 규격 변환 · 게시 URL 상태 점검
이미 있는 데이터만으로 되는 규칙 기반. 목업에서 실제로 동작하는 항목이 대부분 여기 있습니다.
동선 묶기 · 공간 자동 분류 · 유사 컷 대표 1장 · 보정 프리셋 · 캡션 · 해시태그 · 본문 초안 · 재촬영 시점
비전 · 언어 모델이 필요한 항목. 목업에서는 분류 UI와 규격표까지 동작하고 모델 결과는 고정 예시입니다.
흐림 · 노출 · 수평 검출 · 흔들림 컷 필터 · 등록본과 승인 원본 대조
검수자가 전부 눈으로 보는 대신 주의 항목만 봅니다. 최종 판단은 검수자가 합니다.
효과 수치는 아직 측정하지 않았습니다. 도입한다면 촬영 1건당 이동 시간, 재촬영 건수, 분류 소요 시간, 검수 1건당 시간, 채널당 게시 준비 시간, 게시 누락 건수를 파일럿 기간에 재어 보고 확장 여부를 정하는 것을 제안했습니다.
기획 · 구현 · 배포 · 설명서까지 한 사람이 끝냈고, 받는 쪽이 5분 안에 흐름을 따라 할 수 있게 만드는 데 집중했습니다.
정적 파일(dist/) 하나라 아무 정적 호스팅에 올릴 수 있습니다. 배포는 GitHub → Vercel 자동 배포에 개인 도메인을 붙였고, 설명서는 실제 화면 캡처 10장을 넣어 HTML · PDF 두 형식으로 함께 제출했습니다.
기능 목록이 아니라 "왜 이 흐름이어야 하는가"가 설명되는 목업을 만드는 게 목표였습니다.
네 단계 업무를 여섯 상태와 전환 규칙으로 옮겨, 화면이 달라도 같은 규칙이 적용되고 테스트할 수 있게 했습니다.
동작하는 것과 예시인 것, 규칙 기반과 모델 기반을 구분해 표시해서 "어디까지 진짜인가"를 받는 쪽이 판단할 수 있게 했습니다.
과제 기간 안에 배포된 체험판 · 설명서 · 테스트까지 갖춰 제출했습니다.
규칙 기반 → 모델 연동 → 채널 API 연동 3단계 도입 순서와 각 단계에서 잴 지표를 함께 제안했습니다.
받는 사람이 처음 열어도 5분 안에 전체 흐름을 파악하도록 설명서를 함께 만들었습니다.
제작 의도, 화면 구성, 단계별 사용법, AX 개선 아이디어 상세 표, 기술 구성과 실행 방법, 한계와 다음 단계까지 10쪽입니다. 화면 캡처는 전부 돌고 있는 체험판에서 찍었고, 숙소 · 사람 · 사진은 모두 가상 데이터입니다.
StayFlow 사용 설명서 전문 보기 제작 의도 · 화면별 사용법 · AX 아이디어 상세 · 10쪽 · 새 창 체험판 직접 열어 보기 로그인 없음 · 가상 데이터 · 입력한 내용은 내 브라우저에만 저장 코드 보기 (GitHub) Vite + React 19 + TypeScript · 상태 전환 규칙 app/projects.ts · 테스트 12개