Jinyoung Hong

Journal of building things, business and life

웨딩 앱

  • Day 18 · 실행하기 (11)

    한글날이다. 남들 쉬는 날 나는 터미널 두 개 띄워 놓고 출근 ^^;
    오늘은 우월 2.0의 웨딩 계약서 OCR을 준비한 날이다. 그리고 진짜 많이 팠다.

    내 계약서가 정답지가 됐다

    어제 남은 일에 적어 둔 ‘내 계약서 사진 샘플 폴더에 넣기’부터 했다.
    스드메, 예복, 한복, 스냅, 그리고 제주 촬영 패키지까지.
    2년 전 결혼 준비하면서 받은 종이들이 이제 우월 분석 엔진의 시험지가 된다 ㅋㅋ

    방식은 이렇다.
    Claude가 사진을 읽고 정답지 초안을 만들면, 내가 한 줄씩 검수한다.
    나중에 엔진이 이 사진을 읽었을 때 정답지랑 얼마나 맞는지로 점수를 매기는 것.

    검수할 곳이 70군데가 넘었다.
    손글씨로 ‘125만’, ’12만5천’.. 연도 없이 ‘9/1’.. 예식일 칸에 ’10월’만 적혀 있는 계약서까지 ㅋㅋ
    그때는 아무렇지 않게 받았던 종이인데, 기계가 읽을 입장에서 보니 전부 난관이다.

    그리고 검수하다가 배운 것 하나.
    나는 실제 예식일을 아니까 연도를 다 채워 넣었는데, 그러면 안 되는 거였다.
    종이에 없는 값은 엔진도 알 수 없으니까, 채점은 ‘종이에 적힌 것’ 기준으로.
    내가 아는 진짜 값은 참고값으로 따로 두기로 했다.

    (그리고 제일 중요한 웨딩홀 계약서를 빼먹은 걸 저녁에야 알았다 ^^; 우월 시세의 핵심이 웨딩홀인데.. 부랴부랴 추가 완료)

    9건 중 0건

    검수하다가 꽤 큰 걸 발견했다.
    내 계약서 9건 중에 사업자등록번호가 적힌 게 하나도 없다.

    원래 계획은 사업자번호로 진짜 업체인지 확인하고, 통과하면 포인트를 주고 시세에 넣는 거였다.
    그런데 번호가 없으면 아무것도 안 돌아간다. 시세가 영영 ‘모으는 중’으로 남는 거다 ㅠㅠ

    그래서 기준을 보상 크기에 따라 나눴다.

    • 시세 데이터
      원본 사진이 있고 분석을 통과하면 반영. 이상한 값은 이상치 제외가 걸러 준다.
    • 작은 포인트
      같은 조건으로 바로 적립.
    • 큰 보상(마지막 포인트, 응모권)
      카드전표나 이체 내역처럼 돈이 실제로 나간 증빙이 있어야.

    실제 데이터를 넣어 보지 않았으면 출시하고 나서야 알았을 문제다.
    내 계약서 꺼내길 진짜 잘했다.

    계약서를 읽는 엔진도 정했다. 네이버 클라우드의 CLOVA OCR이랑 HyperCLOVA X.

    해외 AI랑 금액도 비교해 봤는데, 지금 규모에서는 어느 쪽이든 한 달에 몇만 원 차이도 안 났다.
    그럼 기준은 하나다. 계약서에는 이름, 전화번호, 주소가 다 들어 있으니까 국내에서 처리하는 쪽.
    개인정보 국외 이전 걱정이 통째로 사라진다. (어제 들은 개인정보 교육이 바로 써먹혔다 ^ㅅ^)

    엔진을 붙일 코드랑 평가 스크립트는 오늘 다 만들어 뒀다.
    내일 키만 넣으면 바로 점수가 나온다.

    운영 서버 보안 점검

    2.0 작업을 하다가 1.1.x 운영 서버에서 권한 확인이 빠진 곳들을 찾았다.
    2년 전의 내가 남겨 둔 숙제다 ^^;
    오늘 바로 막아서 운영에 배포했고, 기록을 확인해 보니 문제가 된 흔적은 없었다.
    API 문서도 바깥에서 안 보이게 닫았다. 남은 정리는 다음 배포에서 마저.

    새 기능 만드는 것보다 이런 게 훨씬 등골이 서늘하다..
    그래도 출시 전에 찾아서 다행이다.

    앱은 9단계, 마무리 중

    • iOS 첫 실행
      리브랜딩 시작하고 처음으로 아이폰 시뮬레이터에서 띄워 봤다. 한 번에 빌드 성공!
      (중간에 터미널이 ‘손쉬운 사용’ 권한을 달라고 해서 깜짝.. 이 Mac이 운영 서버라 거부했다 ㅋㅋ)
    • 알림 권한
      앱 켜자마자 묻던 걸, 온보딩 ‘시작하기’와 홈 첫 진입으로 옮겼다. 혜택 알림은 켜고 끌 때 날짜와 결과도 알려 준다.
    • 공지사항, 자주 묻는 질문
      처음 만든 화면을 보니 FAQ 답변이 상자 안에 상자 안에 상자.. 테두리가 세 겹이었다 ㅋㅋ
      공지랑 같은 목록 → 상세 구조로 바꾸고 테두리는 다 걷어냈다.
    공지사항 UI 전/후
    자주묻는질문 UI 전/후
    이벤트페이지 UI 전/후
    • 예식 정보 시트
      예전 D-day 관리 화면 대신 예식일, 시간, 지역, 하객 수를 한 시트에서.
    • 약관, 개인정보처리방침
      둘 다 웹뷰로 통일. 2.0 초안도 만들어 뒀다.
    • 이벤트
      2.0 오픈 기념 이벤트를 상시 추첨형으로 정했다. 경품은.. 출시할 때 공개! ^ㅁ^

    어제 NEXTMADE 회신 메일에 [대괄호]를 그대로 보냈다고 고백했는데.


    오늘 Claude Code한테도 {중괄호}를 안 채우고 그대로 보냈다. 세 번이나 ㅋㅋㅋ
    서버 세션에 보낼 걸 앱 세션에 보낸 것도 두 번.
    다행히 둘 다 알아서 멈추고 ‘이거 저한테 보내신 거 맞아요?’ 하고 물어봐 줬다.
    (규칙을 미리 정해 둔 보람이 있다.. 그리고 나는 보내기 전에 한 번 더 읽자 ^^;)

    출시일을 정했다

    원래는 다음 주에 내고 싶었다.
    그런데 남은 일을 펼쳐 놓고 보니 엔진 평가, 약관 공지, 배포 리허설, 심사까지 하루에 끝날 게 하나도 없었다.
    그래서 다다음 주로. 기능 빼고 서두르기보다, 다 넣고 2주 안에 내기로 했다.
    사용자를 모으려면 빨리 내는 게 중요하지만, 처음 보여 주는 2.0이 반쪽이면 안 되니까.

    남은 일

    • 내일
      이용약관 페이지 만들기, 개인정보처리방침 수정 (법률 검토만 남기기)
      문의 남기기 메일 발송 붙이기
      OCR 기술 결정 (네이버 키 발급 → 조합별 점수 비교, 웨딩홀 계약서 정답지 검수까지)
      배포 직전 수준까지 끝내기 (바로 테스트할 수 있게!)
      참가격 데이터는 회신 오기 전까지 테스트랑 팔로우업 (답 오면 바로 배포 할 수 있게.)
      개인정보처리방침 교육 만족도조사 남기기 (수료증 받아야지 ^^)
      NEXTMADE 기사 초안 확정 회신 보내기
    • 쓰고 보니 내일 할 일이 일곱 개다 ㅋㅋ 내일의 나, 미리 화이팅..

    • 다음 주
      운영 보안 2차 배포, 포인트 기준 변경 구현, 약관·방침 법률 상담, 약관 변경 공지, 배포 리허설
    • 다다음 주
      v2 서버 배포 → 앱 심사 → 출시!

    기다리는 것들

    • NEXTMADE 기사·영상 게시
    • 서울앵커사업단 실전창업 전투강좌 선정 결과
    • 참가격 이용 협의 답변
    • 애드센스 심사, 컴업 자율 매칭 답장
    • KAIT 교육 수료증 (15일, 만족도 조사 잊지 말기!)

    2년 전에 받은 종이 계약서 아홉 장이 오늘 우월의 기준을 바꿨다.
    머릿속으로 그린 서비스랑 진짜 데이터가 만나는 순간은 늘 이렇게 조금 아프고, 많이 고맙다.

    어제가 문 안에서 짐을 푼 날이었다면, 오늘은 그 짐을 실제 집에 맞춰 다시 정리한 날.
    오늘도 고생한 나, 굿밤~ ^ㅁ^

  • Day 17 · 실행하기 (10)

    오늘은 아침부터 반가운 알림으로 시작했다.
    iOS 심사 통과! ^ㅁ^
    어제 재심사 요청했던 우월 웨딩 앱 1.1.10이 드디어 스토어에 나갔다.

    드디어 로그인 문제에서 해방(?)

    어제 일지 마지막에 ‘제발 해방되길..’ 이라고 적었는데 진짜 하루 만에 통과됐다.
    1.1.8 때 심사팀이랑 10일 동안 핑퐁하던 거 생각하면 이번엔 거의 광속 ㅋㅋ
    앱 빌드는 그대로 두고 서버만 고쳤는데 그게 통한 걸 보면, 이번엔 원인을 제대로 잡은 것 같다.
    (그래도 Apple 로그인은 실제 사용자 로그로 계속 지켜볼 예정!)

    10월 계획 2주차에 적어둔 ‘버전 업그레이드 패치 배포’, 이번엔 진짜로 체크 ✅

    우월 웨딩 앱 1.1.10 iOS 심사 통과 화면

    NEXTMADE 초안 도착

    어젯밤 11시 반쯤 NEXTMADE에서 초안이 왔다.
    영상이랑 기사를 미리 볼 수 있는 링크였는데, 내 앱이 기사 제목으로 걸려 있는 걸 보니 괜히 두근두근..
    ‘우월, 계약서 사진 한 장으로 결혼 예산·일정 잡는 웨딩 월렛’
    (작고 소중한 내 앱이 기사 제목에 ^ㅅ^)

    처음엔 다 괜찮아 보여서 바로 ‘이대로 좋아요’를 누를 뻔했다.
    그런데 확인은 딱 한 번만 받는다고 해서, 한 줄씩 다시 읽어봤다.
    그랬더니 생각보다 고칠 게 나왔다.

    • 가격
      ‘가격 상세는 아직 공개되지 않았다’는 문장이 숨겨진 유료 요금제가 있는 것처럼 읽혔다. 유료 결제 없이 전부 무료라고 정정.
    • 공식 사이트
      랜딩페이지의 ‘비슷한 조건 비교’ 화면이 지금 되는 기능처럼 오해받지 않게 출시 예정 기능으로 정리.
    • 출처
      편집부 내부 메모가 출처에 그대로 남아 있었다 ㅋㅋ
    • 오타
      인용문에 ‘도운다는’.. 알고 보니 내 원문 오타였다 ^^;
    • Google Play 링크
      App Store 링크만 있어서 추가 요청.

    그리고 고백하자면..
    회신 메일에 나중에 채워 넣으려고 표시해 둔 [대괄호]를 그대로 보냈다 ^^;
    다행히 편집부에서 찰떡같이 알아듣고 다섯 개 전부 고쳐서 다시 올려줬다. (감사합니다 NEXTMADE..)

    기사랑 영상을 홈페이지, 회사소개서, IR 자료, 포트폴리오에도 써도 되는지 따로 물어봤는데 괜찮다는 답장도 받았다.
    이제 소개서에 넣을 한 줄이 생겼다 ^ㅁ^

    재밌는 건, Day 15에 제일 오래 붙잡고 있던 ‘아직 안 되는 건 무엇인가요?’ 답변이 기사에서 통째로 한 꼭지가 됐다는 것.
    되는 것과 안 되는 것을 솔직하게 나눠 쓰길 잘했다.

    1차도 안 들었는데 2차 교육

    오후에는 KAIT 개인정보 처리방침 작성 교육(2차, 온라인)을 들었다.
    신청하고 보니 ‘2차’라고 되어 있어서, 1차도 안 들었는데 괜찮나? 잠깐 걱정했는데
    심화 과정이 아니라 같은 교육을 회차로 여러 번 여는 거였다 ㅋㅋ
    (그거 고민하다가 12시 58분에 Zoom 들어간 건 비밀..)

    Day 14에 2년 전 방침이랑 대화하면서 처음부터 다시 써 본 게 있어서 그런지 더 귀에 잘 들어왔다.
    그리고 들으면서 계속 우월 2.0이 떠올랐다.
    계약서 원본 보관, 커플 간 원본 열람, 시세 통계 활용까지.. 2.0은 다루는 정보가 훨씬 많아진다.
    출시 전에 방침이랑 스토어 개인정보 항목도 한 번 더 손봐야겠다.
    (수료증은 만족도 조사 내면 15일에 온다고 한다. 잊지 말자!)

    만든 사람으로서 첫 홍보글

    다이렉트 카페에 우월 소개 글도 하나 올렸다. 소소하지만 첫 커뮤니티 홍보!
    처음엔 사용 후기처럼 써 볼까 했는데, 찾아보니 만든 사람이 사용자인 척하는 건 문제가 될 수 있는 거였다.
    그리고 생각해 보면 “결혼 준비하다 불편해서 개발자인 제가 직접 만들었어요”가 훨씬 진짜 이야기다.
    숨길 이유가 하나도 없었다 ^^

    우월 웨딩 앱 2.0, 오늘도 앱이랑 서버 동시에

    오늘도 터미널에 앱 세션, 서버 세션 두 개 띄워 놓고 Claude Code랑 달렸다.
    어제 1단계였던 서버가 오늘 3단계까지 왔다. (진짜 왜 이제 썼니 나..)

    운영 서버 (배포 완료)

    • 프로필 사진 깨짐 수정
      닉네임만 바꿔도 사진 주소가 겹쳐 저장되던 1.1.x 버그. 배포 후 내 계정 사진 재업로드로 복구하고 main 머지.
    • 탈퇴 회원 처리 수정
      탈퇴한 회원 2명에게 일정 푸시가 계속 가고 있었다 ㅠㅠ (죄송합니다..)
      탈퇴 후 토큰 갱신이랑 기존 토큰 사용까지 차단. 배포·머지 완료.

    서버 v2 (운영 미배포)

    • 1단계 마무리
      내 정보·닉네임 규칙, 지역 목록, 홈, 탈퇴(데이터 보존 + 토큰 삭제), 설정, 로그인 전 약관, 알림 설정에 예산·공지 추가.
    • 2단계 계약서 플로우 완료
      업로드 → 분석(개인정보 가림 단계 포함) → 저장 → 목록·상세·삭제까지 한 줄로 연결.
      1.1.x 테이블에도 같이 저장해서 버전이 섞인 커플도 호환되게 했고, 파트너 원본 열람, 연결 시 중복 계약 제외까지.
      분석 완료 푸시, 확인 필요 알림, v2 일정 알림 배치도 추가. 덤으로 MySQL 결과 컬럼 크기 버그도 잡았다.
    • 3단계 시세·진단 (증빙 제외) 완료
      드디어 우월의 핵심! 시세 표본·집계(이상치 제외, 범위 단계적 확장), 실계약 목록, 지역 평균 예산,
      그리고 진단. ‘비슷한 부부보다 얼마 높아요’를 판정 ±5%, 상태 5가지로 보여준다.
      사업자 진위 확인 + 포인트 원장, 이벤트(응모권·SNS 승인·룰렛), 관리자 API까지.

    그리고 깜짝 놀란 것 하나.
    로컬 설정이 운영 Redis를 가리키고 있었다 ^^;
    바로 로컬 기본값 정리하고, 로컬 스케줄러 끄고, 커밋 전에 테스트 확인하는 규칙도 추가했다. (아무 일 없어서 다행이다 진짜..)

    앱 (리브랜딩 v1.2)

    • 4~5단계
      마이페이지, 이벤트, 홈 완료. 서버 주소도 운영/로컬 환경 분리.
    • 6~7단계
      로그인 v2 전환, 온보딩 4단계, 대표 D-day 선택, 커플 초대·연결·해제.
      촬영 → 업로드 → 분석 → 정리 결과 → 저장, 계약서 목록·상세·수정·삭제, 직접 입력 보완까지.
    • 나머지 화면 v2 전환
      예산, 마이페이지, 알림 목록·설정, 포인트 내역, 사업자번호 입력.
    • 8단계
      시세, 조건 편집, 실계약, 진단, 홈 진단 카드, 예산 판정. 코드는 끝났고 로컬에서 실제 화면 확인만 남았다.

    오늘 내린 결정들

    • 1.1.x 데이터는 시세에 안 쓴다
      열어 보니 규모도 작고 계약금이랑 총액이 섞여 있었다. 아깝지만 기준을 만드는 서비스가 기준 없는 데이터를 쓸 순 없지..
    • 참가격 데이터 이용 문의
      지역별 통계가 진단에 쓸 만큼 좋다. 그런데 공공누리 표시가 없어서 국민신문고로 이용 협의 문의를 넣었다.
    • 계약서 원본용 비공개 버킷 새로 만들기
      기존 S3가 공개 버킷이었다 ^^; 오늘 교육 듣고 나니까 더 등골이 서늘..

    남은 일

    • 진행 중
      서버는 푸시 딥링크, 홈 일정 금액, 출시까지 남은 일 정리표 → S3 설정, 합성 계약서 생성기, 평가 스크립트
      앱은 시세 표본으로 8단계 실제 화면 확인
    • 직접 할 일
      오늘 저녁 내 계약서 사진 샘플 폴더에 넣기
      S3 비공개 버킷 + 새 IAM 키 생성
      CLOVA OCR, LLM API 키 발급
    • 출시 전 확정
      룰렛 경품·확률·해시태그, 협상 팁 문구, 개인정보처리방침·스토어 개인정보 항목, 각종 이미지 교체
    • 다음 큰 흐름
      분석 엔진 평가·확정 → 증빙 → iOS 확인 → 9단계 마무리 → v2 배포 리허설 → 서버 배포 → 앱 심사·출시
    우월 2.0 미리보기

    기다리는 것들

    • NEXTMADE 기사·영상 게시 (내일 마감 뒤)
    • 서울앵커사업단 실전창업 전투강좌 선정 결과
    • 참가격 이용 협의 답변
    • 애드센스 심사, 컴업 자율 매칭 답장

    1.1.10이 스토어에 나가고, 기사는 마지막 손질을 끝내고, 2.0은 시세랑 진단까지 왔다.
    2년 전에 만들고 싶었던 ‘가격의 기준’이 이제 진짜 코드로 돌아가기 시작했다.
    (로컬에서지만.. 그래도! ^^;)

    Day 15가 문 안으로 한 발 들어간 날이었다면, 오늘은 들어간 문 안에서 짐을 하나씩 푼 날.
    오늘도 고생한 나, 굿밤~ ^ㅁ^