AI를 새로 사거나 만드는 이야기가 아니다. 필요한 것은 이미 사내에 다 있고, 서로 연결되어 있지 않을 뿐이다. 해야 할 일을 다섯 가지로 정리했다.
사용자가 사진을 올리면 우리 서버가 그 사진에 대해 아는 것이 거의 없다. 사진마다 "무엇이 찍혔나"를 알려주는 정보가 함께 와야 하는데, 그 칸이 비어서 온다. 실제 운영 로그에서 사진 4만 장을 세어본 결과다.
이 상태에서 할 수 있는 일은 "들어온 순서대로 페이지에 끼워 넣기"뿐이다. 실제로 코드가 그렇게 동작한다.
중요한 것은 이게 기술이 없어서가 아니라는 점이다. 사진을 분석해 테마·나이·인물을 알려주는 서버가 이미 있고, 구독 포토북은 그것을 실제로 쓰고 있다. 일반 포토북만 그 길을 지나가지 않는다.
포토북을 자동으로 만드는 일을 쪼개면 여섯 단계다. 우리가 어디까지 하는지 대조했다.
4번만 하고 있고, 그마저 AI가 끼어들 자리가 아니다. 코드에서 판단이 일어나는 지점을 55개 세어 종류를 분류했더니 숫자 비교 38개, 좌표 계산 12개, 무작위 3개였다. "의미를 판단하는 것"은 0개였다.
요즘 AI가 잘하게 된 부분이 정확히 그 0개짜리 칸이다. 우리는 계산은 잘 하는데 이해를 안 하고 있다. 그래서 개선 방향은 "지금 하는 걸 AI로 바꾸기"가 아니라 "안 하고 있는 다섯 단계를 켜기"다.
필요한 재료를 조사했더니 전부 이미 사내에 있었다. 만들어놓고 연결하지 않은 상태다.
그래서 이 계획은 "AI에 투자하자"가 아니라 "이미 투자한 것을 잇자"는 이야기다. 다섯 가지 중 앞의 세 개는 새 장비도 외부 비용도 필요하지 않다.
다섯 가지에는 순서가 있고, 그 이유가 하나다. 1번을 안 하면 나머지가 전부 공중에 뜬다.
그래서 1번(보게 만들기)이 모든 것의 전제다. 그리고 3번(배우는 고리)은 1번을 기다리지 않고 지금 시작할 수 있다. 지금은 개선을 해도 좋아졌는지 알 방법이 없으므로, 재는 장치를 먼저 켜야 나머지 개선의 성과를 확인할 수 있다.
중요한 정정이 하나 있다. 이전 판에서 2번을 "이미 만들어진 묶기 기능을 켜기"로 적었는데, 확인해보니 그 기능은 휴대폰 전체 사진에서 이벤트를 나눌 때 쓰는 기준이었다. 사용자가 직접 골라 올린 사진은 대개 한 여행·한 행사라 그 기준으로는 나뉘지 않는다. 2번의 방향을 "이벤트 나누기"에서 "한 이벤트 안의 장면 흐름 읽기"로 바꿨고, 그래서 1번에 딸린 과제가 됐다.
구체적으로 무엇을 어떻게 해야 하는지는 「설계」 탭에 담았다.
이 계획의 전제라서 편집기·백엔드·이미지분석 코드를 직접 따라갔다. 결과는 업로드 시점에 이미 분석이 끝난다는 것이다. 추천 때 다시 분석할 필요가 없다.
| 1. 상품·디자인 선택 편집기 진입 시 디자인 코드가 이미 정해져 들어온다. AI 자동 모드는 방향(정방·가로·세로)만 보고 레이아웃 코드를 자동 결정한다 |
| 2. 사진 업로드 — 한 장씩 사진 한 장을 올릴 때마다 백엔드가 업로드와 이미지 분석을 함께 처리하고, 응답에 analysisInfo를 담아 편집기에 돌려준다 |
| 3. 전부 끝나면 추천 요청 편집기가 모아둔 분석 결과를 정리해 우리 서버로 한 번에 보낸다. 이 시점에 분석은 이미 완료된 상태다 |
| 4. 편집기에서 수정 → 저장 → 주문 |
그래서 이전 리포트에서 "추천 서버가 분석을 직접 부르자"고 쓴 대안은 취소한다. 지적대로 시간이 오래 걸리고, 무엇보다 필요가 없다. 분석은 이미 업로드 때 끝났고 문제는 그 결과가 우리에게 오는 길에서 새는 것이다.
그리고 새는 지점을 정확히 찾았다.
| 신호 | 분석 서버가 만드나 | 편집기가 꺼내나 | 결과 |
|---|---|---|---|
| 얼굴 위치·수 | 만든다 | 꺼낸다 | 도달 |
| 특징 해시 | 만든다 | 꺼낸다 | 도달 |
| 품질 점수 | 만든다 | 웹 경로만 꺼낸다 | 앱 0% |
| 음식 여부 | 만든다 | 웹 경로만 꺼낸다 | 앱 0% |
| 테마(여행·아기 등) | 안 만든다 | 꺼내는 코드 없음 | 전체 0% |
두 문제가 성격이 완전히 다르다. 품질·음식은 이미 만들어져 응답에 들어 있는데 편집기가 안 꺼내는 것이고, 테마는 애초에 만들지 않는 것이다. 그래서 앞의 것이 훨씬 싸다.
analysisInfo를 열어 품질·음식 값을 꺼내 따로 담아둔다. 반면 네이티브 앱 사진첩 경로는 백엔드 응답을 가공 없이 그대로 통과시킨다.
analysisInfo를 열어 품질·음식 값을 같은 자리에 담아주면 된다. 백엔드도 우리 서버도 바꿀 것이 없다.analysisInfo에 테마 결과를 그대로 담아 내려준다. 새 필드를 만드는 것이 아니라 기존 필드 안에 항목 하나가 늘어나는 것이다.analysisInfo에 이미지분석 서버가 주는 theme 결과를 추가로 담아주세요. 분석 서버 쪽 준비는 AI팀이 하고, 백엔드는 받은 값을 그대로 전달만 하면 됩니다. 스키마 변경 없이 기존 JSON 안에 항목이 하나 늘어납니다."sentiment(긍정·부정·중립·복합)와 needs_cs(CS 필요 여부)를 이미 뽑고 있다. 그런데 백엔드로 보내는 저장 요청에는 번역문 두 개만 담겨 있고 두 값이 빠져 있다. 로그와 슬랙 알림으로만 흘러가고 사라진다.
sentiment와 needsCs 두 필드를 추가해주세요. AI가 이미 판정하고 있는데 저장할 곳이 없어 버려집니다."