- 업체 계정: '내 업체 실적' 메뉴만 보인다 (기간별 클릭·신청·구매, 나눠 줄 링크, 가린 이름의 신청·구매 목록).
임시 비밀번호면 닫을 수 없는 비밀번호 변경 창을 먼저 띄운다 (대신 로그아웃 가능)
- 최고관리자: 업체 링크 → 업체 선택 → '계정 관리'에서 만들기·사용/중지·비밀번호 초기화.
임시 비밀번호는 한 번만 보여주고 바깥 클릭·Esc 로 닫히지 않는다. 복사해도 알림에 비밀번호를 띄우지 않는다
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
파란 강조색·푸른 회색 테마를 사이트와 같은 블랙(#141414)·골드(#f5b727)로 바꾼다
(값은 신청 완료 위젯 imweb-free-apply.html 과 같다).
골드는 흰 배경 위 글자로는 대비가 부족해 채우는 색(버튼·막대·칩·배지)으로만 쓰고
그 위 글자는 #1a1200, 흰 배경 위 링크·선택 표시·포커스는 진한 골드(#8a5d00)로 나눴다.
주의 색은 골드와 헷갈리지 않게 주황 쪽으로 옮겼다.
로그인·사이드바의 ₩ 로고를 지우고 사이드바 이름을 골드로 표시한다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Header Code '구매 때 유입 전송': /shop_payment_complete 에서 order_no·유입·업체 클릭 ID 를
POST /api/order-inflows 로 한 번 보낸다 (같은 탭 새로고침 때는 다시 보내지 않는다)
- 결제 페이지(/shop_payment*)에서는 리퍼러를 유입으로 기록하지 않는다 (v1.3) —
결제창에서 돌아올 때 pay.kakao.com 이 '카카오 소셜', pay.naver.com 이 '네이버 검색'
유입으로 잡혀 구매 때 유입을 가릴 수 있었다
- 관리자 화면: 유입 기준을 '신청·구매 때 유입'으로, 구매 행·상세 패널에 구매 때 유입,
업체 실적 상세의 비회원 구매는 주문자 이름으로 보여준다
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
광고로 가입한 회원이 업체 링크로 다시 와서 신청해도, 보관 중인 첫 경로(광고)가
남아 신청 때 유입이 광고로 잡혔다. 업체 칸(업체 실적)은 그 업체라 한 줄 안에서
유입과 업체가 어긋났다.
업체 단축 링크가 붙인 UTM(utm_medium=partner)으로 들어오면 첫 경로를 그 업체로
덮어쓴다. 여러 업체를 거치면 마지막 업체 — 업체 실적의 마지막 클릭 규칙과 같다.
화면의 유입 기준은 그대로 하나만 둔다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
유료 구매는 업체 링크로 귀속된 것만 남아 누가 구매했는지 볼 수 없었다.
주문 동기화가 결제된 아임웹 주문을 회원·비회원 모두 purchases 에 남기고
(서버 기동 후 첫 실행 1년, 이후 60일), 관리자 조회는 신청과 구매를 합쳐
보여주는 /admin/activities 로 옮겼다. 예전 /admin/applications 조회는 없앴다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
운영에 필요한 것은 업체 링크로 들어와 누가 신청·구매했는지이고, 신청 직전 유입은
쓰지 않는다. 기준이 둘(직전·최초)이라 화면만 복잡해져 신청 때 유입은 한 가지만 보여준다.
- 신청 유입 집계 기준: 신청 직전 · 신청 때 최초 · 가입 경로 → 신청 때 유입 · 가입 경로
- 신청자 표·상세 패널: 신청 때 유입을 한 줄로 (최초/직전 구분 제거)
- 개요의 신청 유입 상위도 신청 때 유입 기준
- 회원 상세의 가입 경로에서 '최종 유입' 줄 제거
백엔드는 그대로 둔다 (최종 유입은 저장만 하고 화면에 쓰지 않는다)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
이동 주소 줄의 .mgm-url(inline-block, vertical-align: bottom)이 .mgm-cell-sub 의
display:block 을 덮어써, 이동 주소가 복사 버튼 옆에 붙고 글꼴·버튼 여백 차이로 높이가 어긋났다.
1줄(링크 + 복사, 가운데 정렬) / 2줄(이동 주소, 길면 말줄임) 구조로 나눠 왼쪽 업체·상품 줄과 맞춘다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
실제 오픈카톡방 입장은 카카오가 알려주지 않아 추적할 수 없고, 집계하는 값은
신청 완료 화면의 오픈카톡 버튼을 처음 누른 시각(kakao_clicked_at)이다.
'입장률'로 표시하면 실제 입장으로 오해하므로 문구를 사실대로 바꾸고 안내를 붙인다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 화면이 기능을 덧붙이며 복잡해져(회원 표 15열, 업체 화면에 폼·표·설명이 모두 펼쳐짐,
브라우저 기본 prompt/confirm) 보기 어렵고, 신청을 업체 기준으로 볼 방법이 없었다.
- 메뉴를 개요 / 운영(신청 내역·업체 링크·회원) / 설정(연동 관리)으로 묶음
- 개요: 오늘·7일 신청, 7일 업체 링크 신청, 7일 가입 지표 + 신청 유입·업체 실적 상위·최근 신청
- 신청 내역: 상품별 ↔ 업체별 전환 — 요약 표의 행을 누르면 목록과 유입 집계를 그 항목으로 좁힘,
신청자 표에 업체 열 추가, 행을 누르면 상세 패널(신청·유입·회원·가입 경로)
- 업체 링크: 왼쪽 업체 목록 + 오른쪽 링크 표, 실적 지표, 링크 발급·수정은 대화상자,
사용/중지 스위치, 링크 실적은 상세 패널, 집계 기준은 접는 도움말
- 회원: 표를 7열로 줄이고 유입경로 필터는 접어 둠, 행을 누르면 상세 패널
- 토스트 알림·대화상자·상세 패널 공통 컴포넌트, 연락처 하이픈 표시, 휴대폰 화면 정리
- API: GET /api/admin/applications/groups (상품별·업체별 신청 수·오픈카톡 입장 수),
신청 목록·유입 집계에 partnerId 필터(업체 ID 또는 none), 신청 응답에 데려온 업체(partner)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
업체에 우리 백엔드 도메인(moneyguide.wandergo.net)이 아니라 사이트 주소를 주기 위해서다.
또 업체 링크로 온 방문이 UTM 이 없어 direct 로 분류되면서, 이전에 남은 유입(예: 개발자센터)이
신청 때 유입으로 잡히는 문제가 있었다.
- 업체에 줄 링크: https://www.moneyguider.co.kr/go?c={코드}
imweb-header-top.html 맨 위의 입구 블록이 페이지를 그리기 전에 백엔드 /r/{코드} 로 넘긴다
(입구 페이지에서는 UTM 스크립트가 기록하지 않는다). 아임웹에 'go' 페이지가 필요하다
- 기존 백엔드 링크(/r/{코드})는 그대로 동작한다
- 단축 링크 리다이렉트에 업체 UTM 자동 부착 — utm_source=업체 이름, utm_medium=partner,
utm_campaign=링크 코드 (이동 주소에 관리자가 넣은 UTM 이 있으면 그대로 둔다)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
가입 경로와 신청(수강) 유입을 구분해 보기 위해서다. 기존 신청 유입은 신청 시점
브라우저의 '최초' 유입(2일 보관)이라, 그 사이 다른 경로로 다시 와서 신청하면
신청을 일으킨 경로가 가려졌다.
- member_applications 에 최종 유입(inflow_last_*) 저장 — 없으면 최초 유입으로 채움 (기존 행도 동일)
- 신청 완료 위젯이 MG_UTM.peek().last 를 lastInflow 로 함께 보냄
- GET /api/admin/applications/inflow-stats: 신청 때 최종·최초 / 가입 경로(가입 때 기록만) 기준 집계
- 신청 목록에 inflowBasis·inflowField·inflowValue 필터
- 관리자 화면 신청 내역: '신청 유입 집계' 카드(기준·항목 전환, 막대 클릭으로 목록 필터),
신청 때 유입 칸에 최종 유입 표시 + 최초가 다르면 함께 표시
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- imweb-header-top.html·imweb-header.html: 아임웹에 실제로 들어가 있는 Header Code 원본을 저장소에 둔다
- 업체 링크 추적을 imweb-header-top.html 의 UTM 스크립트 아래로 옮기고 partner-ref.html 은 삭제
(UTM 스크립트처럼 localStorage + .moneyguider.co.kr 쿠키에 저장 — www ↔ apex 이동·인앱브라우저 대비)
- 신청 완료 위젯: MG_UTM.peek() 는 객체라 문자열 검사에 걸려 유입정보가 빠지고 있었다 — peek().value 를 보낸다
- 단축 링크 리다이렉트에 Referrer-Policy strict-origin-when-cross-origin
(helmet 기본 no-referrer 때문에 업체가 링크를 올린 곳이 지워져 유입원이 direct 로 잡혔다)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 관리자 화면 '업체 링크' 메뉴: 업체 추가, 링크 발급·복사·중지, 기간별 클릭·신청·구매,
링크별 실적 회원 목록, 상품 불러오기·구매 집계 새로고침
- partner-ref.html (Header Code): 클릭 ID 를 30일 보관하고 로그인 회원과 잇는다
- imweb-free-apply.html: 신청 기록(클릭 ID 포함)과 오픈카톡 클릭 기록 전송 추가
- README 에 귀속 규칙·한계·처음 켤 때 순서 정리
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
운영 백엔드 도메인은 moneyguide.wandergo.net 인데 관리자 화면 API_BASE 와 문서가
moneyguider.wandergo.net 을 가리켜 로그인 요청이 TLS 단계에서 거절되었다
(ERR_SSL_UNRECOGNIZED_NAME_ALERT). 아임웹 사이트 주소 moneyguider.co.kr 은 그대로 둔다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
아임웹 관리자 전용 페이지의 코드 위젯에 붙여 쓰는 단일 HTML 화면이다.
개요·회원 목록·신청 내역·연동 관리 메뉴로 구성하고, 회원 그룹·신청 상품은
항상 펼쳐 둔 칩으로 거른다. 로컬 확인용 정적 서버와 설치·운영 안내를 함께 둔다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>