# 미러모션 광고 운영 사용 안내

작성 기준: 2026년 11월 4일 / (주)코코에이치 / TAK5090

미러모션은 가로 357mm × 세로 103mm 거울 디스플레이용 서비스입니다. 왼쪽 두 칸은 스타일·상담·콘텐츠, 오른쪽 한 칸은 광고에 사용합니다. 이 안내는 광고 운영 확장 기능을 직원과 디자이너가 직접 확인하기 위한 자료입니다.

## 1. 어디에서 확인하나요?

- 이 PC의 시뮬레이터: `http://127.0.0.1:18791/simulator.html`
- 앱 화면: `http://127.0.0.1:18791/app/`
- 관리자: 앱에서 매장 관리자 계정으로 로그인한 뒤 **계정 → 관리자 → 미러모션 → 광고 운영**을 선택합니다.
- 점주 화면: **미러모션 → 점주 화면**에서 계약·정산·기기 상태를 확인합니다. 본사 운영자는 선택한 매장의 화면을 미리 볼 수 있고, 일반 점주 계정은 서버에서 자신의 매장 범위만 받습니다.

위 `127.0.0.1` 주소는 실행 중인 PC의 로컬 주소입니다. 다른 장소에서 접속하는 공개 주소 또는 배포 프로그램의 주소는 최신 배포 안내를 따릅니다. 이 문서에는 로그인 비밀번호나 인증키를 포함하지 않습니다.

## 2. 이번에 준비한 광고

Drive의 팁스3년차 광고 자료에서 받은 이미지 10개를 원본 형태로 등록하고, AMOS 소재를 바탕으로 보강 이미지 1개와 모션 MP4 1개를 추가했습니다. 12개 소재가 시험 캠페인에 연결됩니다. 이후 관리자에서 1080 × 936 규격 시안 1개를 실제 제작·저장하여 현재 소재 보관함은 13개입니다. 규격 시안은 저장된 추가 소재이며 기존 12개 캠페인의 편성을 바꾸지 않았습니다.

| 구분 | 소재 |
|---|---|
| 제공 이미지 10개 | BIENU 프레스티지, 더리셋한의원, 거송갈비찜, 브레인라이프, AMOS PROFESSIONAL, 범어황금피부과의원, 요아정 대구수성구청점, 메트로속내과의원, BIENU 겨울 케어, Eli&Co SPA |
| 보강 이미지 | AMOS 프리미엄 비주얼 PNG |
| 모션 소재 | AMOS 프리미엄 모션 MP4 |

시험 매장은 대구 수성·대구 달서·서울 강남·경기 분당 4곳입니다. 이 이름과 계약은 송출 동작을 확인하는 테스트 데이터이며 실제 매장 계약·광고 매출을 뜻하지 않습니다.

- 대구 한정 업체 광고는 대구 시험 매장에 편성했습니다. 서울·경기에서 대구 한정 광고가 나오지 않는지 확인할 수 있습니다.
- 전국 대상 브랜드 광고는 서울·경기 시험 매장에서도 확인할 수 있습니다.
- BIENU 프레스티지의 여성·20대, AMOS 보강 이미지의 여성·30대 조건은 **대상별 편성이 달라지는 것을 보기 위한 가정값**입니다. 광고주의 실제 승인 타깃이나 고객 분석 결과가 아닙니다.
- 원본 문구가 들어 있는 이미지 위에 제목·설명을 다시 겹쳐 표시하지 않습니다. 기본은 **전체 보이기(contain)**이며 가득 채우기를 선택하면 초점을 조절할 수 있습니다.

## 3. 광고 등록과 송출 순서

1. **소재 스튜디오 → 소재 업로드**에서 JPG·PNG·WebP·MP4를 등록합니다. 관리자 업로드 화면은 파일당 8MB 이하를 받습니다.
2. **캠페인 만들기**에서 광고주, 제목, 소재, 시작·종료일, 표시 시간, 송출 지역과 매장을 정합니다.
3. 성별·연령 조건을 설정합니다. 전체 대상 광고는 조건을 선택하지 않은 고객에게도 노출할 수 있습니다. 특정 성별·연령 광고는 해당 시험 조건이 일치할 때만 노출합니다.
4. **계약 → 계약 만들기**에서 실제 송출 대상 매장과 계약 시작일·개월 수를 지정합니다. 캠페인 기간과 지역 조건에 맞지 않는 계약이나 같은 광고·매장의 중복 기간은 서버가 차단합니다.
5. 계약 상태를 **테스트 송출**로 활성화합니다.
6. **송출 · OTA → 매장에 배포**에서 대상 매장과 캠페인을 선택하고 배포합니다.
7. 배포 이력뿐 아니라 각 기기의 **콘텐츠 버전·적용 상태·마지막 연결 시간**까지 확인합니다.

캠페인을 저장하거나 중지했다고 이미 내려간 배포본이 즉시 바뀌는 것은 아닙니다. 변경 후 대상 매장에 새 배포를 게시해야 합니다. 캠페인을 모두 해제한 빈 배포본을 게시하면 해당 매장의 광고 편성을 비울 수 있습니다. 배포 중인 항목을 삭제하거나 운영 조건을 바꾼 후에도 재배포 상태를 확인하세요.

### 지역 설정 예

| 광고 예 | 시·도 | 시·군·구 | 매장 |
|---|---|---|---|
| 범어황금피부과의원를 대구에 송출 | 대구 | 필요 시 수성구 등 | 전체 해당 지역 또는 지정 매장 |
| 강남 소재 병원을 강남에 송출 | 서울 | 강남구 | 강남구 계약 매장 |
| 전국 브랜드 캠페인 | 지역 미선택 | 미선택 | 전국 계약 매장 또는 개별 지정 |

시·도, 시·군·구, 지정 매장, 유효한 계약 기간, 고객 조건이 모두 맞아야 송출 대상이 됩니다. 지역 입력은 고객의 현재 위치를 추정하는 기능이 아니라 **미용실 설치 주소를 기준으로 한 설정**입니다.

## 4. 월 요금과 점주 배분

| 매장 지역 | 광고 1건·매장 1곳·1개월 | 점주 몫 20% | 플랫폼 몫 80% |
|---|---:|---:|---:|
| 서울·경기 | 18,000원 | 3,600원 | 14,400원 |
| 그 외 지역 | 12,000원 | 2,400원 | 9,600원 |

한 매장의 기기 대수마다 중복 청구하는 방식이 아닙니다. 계약 매장별·월별로 계산하며, 계약을 생성한 시점의 요금과 배분액을 저장합니다. 이후 매장 지역을 변경하더라도 이미 생성한 정산 금액을 소급해서 덮어쓰지 않습니다.

### 계약 기간

- 시작일을 포함하여 다음 달 같은 날짜의 전날까지 1개월입니다.
- 11월 1일 시작: 11월 1일~11월 30일.
- 10월 12일 시작: 10월 12일~11월 11일.
- 말일이 없는 달은 해당 월말을 기준으로 보정합니다. 여러 달 계약은 각 월의 기간을 따로 만듭니다.
- 모든 계약 날짜 판정은 한국 날짜(KST)를 기준으로 합니다.

현재 시험 정산 예정일은 **각 계약월 종료 다음 달 15일**입니다. 예를 들어 10월 12일~11월 11일 계약은 12월 15일을 정산 예정일로 표시합니다. 이는 이번 구현의 **제안 정책**이며 실제 광고 계약의 지급 조건이 확정된 것은 아닙니다. 공급가·부가세 포함 여부와 세금 처리는 별도 확정이 필요합니다.

### 정산 처리

1. 계약 생성 시 `정산 예정` 내역이 만들어집니다.
2. 활성화된 시험 계약의 금액과 기간을 확인한 뒤 `정산 확정`으로 바꿉니다.
3. 실제 입금 등 별도 확인 후 관리자가 내부 참조번호를 넣어 `지급 기록`을 남길 수 있습니다.
4. 매장별 기간·금액·예정일·상태는 CSV로 내려받을 수 있습니다.

**이 기능은 결제 승인이나 은행 송금을 실행하지 않습니다.** 현재 화면의 지급 기록은 시험용 장부입니다. 점주는 자신의 계약 기간, 배분 예정액, 확정·지급 기록과 기기 상태를 볼 수 있습니다.

## 5. 소개자료로 광고 문구와 규격 이미지 만들기

1. **소재 스튜디오**에서 회사·상품의 원본 이미지를 선택합니다.
2. 회사 소개를 직접 입력하거나 TXT·MD·PDF·DOCX 자료를 첨부합니다. 자료는 8MB 이하이며 추출된 텍스트를 화면에서 먼저 확인합니다.
3. **AI 문구 만들기**를 누르면 기존 미러모션 AI 연결을 사용하여 광고주·제목·설명·안내 문구의 초안을 만듭니다.
4. 자료에 없는 가격·할인·주소·전화·인증·의료 효능·치료 보장·순위·후기를 만들지 않도록 요청합니다. 생성 결과는 제공 자료와 대조하고 수정합니다.
5. 전체 보이기/가득 채우기, 가로·세로 초점, 문구를 조절한 뒤 **맞춤 이미지 저장**을 누릅니다.
6. 원본을 보존하면서 **1080 × 936 PNG**를 새 소재로 저장합니다. 선택 소재로 캠페인을 만들고 계약·매장 배포까지 이어갈 수 있습니다.

1080 × 936은 오른쪽 광고칸의 약 119:103 비율에 맞춘 제작 규격입니다. 실제 디스플레이 픽셀 수를 357mm × 103mm로 단정하지 않습니다. 앱은 최종 광고칸에 맞춰 표시합니다.

이미지로만 구성된 PDF는 문자 추출이 되지 않을 수 있으므로 문구를 직접 입력합니다. AI가 정해진 출력 형식을 따르지 않으면 원문을 표시하여 직접 반영하도록 안내합니다. 자동 맞춤 PNG 제작은 원본 이미지 배치·문구 합성 기능입니다. 장면 전체를 새로 생성하는 기능이나 임의 동영상 생성이 항상 실행된다고 설명하지 않습니다. 등록된 MP4는 동영상 소재로 재생합니다.

## 6. 매장별 콘텐츠 OTA

광고 콘텐츠 배포와 Windows 앱 실행파일 업데이트는 별개입니다.

1. 본사에서 매장별 캠페인을 게시하면 버전과 SHA-256을 포함한 배포본이 생성됩니다.
2. 기기는 해당 매장의 배포 정보를 조회하고 소재를 내려받습니다.
3. 파일 해시를 확인한 뒤 정상 배포본을 적용합니다.
4. 기기는 적용 버전·결과를 ACK와 상태 보고로 서버에 보냅니다.
5. 관리자는 게시됨, 다운로드·무결성 오류, 기기 적용 완료, 마지막 연결 시간을 구분해 확인합니다.

서버의 `배포됨`은 해당 기기에서 재생을 확인했다는 뜻이 아닙니다. 오프라인 장치는 새 광고를 즉시 받을 수 없습니다. 기기의 마지막 정상 콘텐츠 보관과 재연결 처리는 현장 네트워크 조건에서도 검증해야 합니다. 매장 변경·계약 종료 때 이전 매장이나 종료 광고가 계속 재생되지 않는지도 확인 항목입니다.

`기기 보고 노출`은 기기가 광고를 화면에 표시했다고 보고한 횟수와 시간입니다. 사람의 실제 시청 횟수, 방문자 수, 광고 효과, 성별·연령 추정 정확도 지표가 아닙니다.

## 7. 직원 검토 순서

| 순서 | 확인할 내용 | 기대 결과 |
|---|---|---|
| 1 | 시뮬레이터를 357:103으로 선택 | 왼쪽 서비스 두 칸·우측 광고 한 칸 유지 |
| 2 | 대구와 강남 시험 매장을 번갈아 선택 | 대구 한정 광고가 강남에서는 제외됨 |
| 3 | 전체, 여성·20대, 여성·30대 조건 비교 | 대상 조건에 맞는 광고 편성이 달라짐 |
| 4 | 제공 이미지와 모션 소재 재생 | 원본 문구·로고가 중복 오버레이 없이 표시됨 |
| 5 | 신규 소재 등록·캠페인 수정 | 저장 후 새 배포를 해야 기기에 반영됨 |
| 6 | 10월 12일 시작 1개월 계약 입력 | 종료 11월 11일, 지방 12,000원·점주 2,400원 |
| 7 | 서울·경기 매장 계약 입력 | 18,000원·점주 3,600원 |
| 8 | 점주 화면 및 일반 점주 계정 조회 | 자신의 매장 계약·정산·기기 정보만 확인 |
| 9 | 정산 예정→확정→지급 기록 | 참조번호가 남고 실제 송금은 실행되지 않음 |
| 10 | 매장별 배포 및 네트워크 끊김·재연결 | 게시/기기 적용/오류 상태가 구분됨 |
| 11 | 회사소개자료→AI 문구→PNG 저장 | 자료 내용에 근거한 편집 가능한 초안과 새 소재 |

실제 설치 매장의 장기간 송출, 광고주 최종 승인, 정산·세무 정책, 실제 결제·은행 송금, 상용 운영 SLA는 이번 시험 데이터와 개발 화면만으로 완료됐다고 판단하지 않습니다.

## 8. 구현과 자료 근거

- `server/seed-ad-preview.mjs`: 제공 소재·시험 매장·캠페인·월 계약 편성.
- `server/verification/ad-preview-seed.json`: 12개 캠페인, 4개 시험 매장, 초기 배포본 등록 기록.
- `server/ads-api.mjs`: 본사/점주 범위, 월 요금·20% 배분, 월별 계약·정산, 배포·기기 보고 API.
- `web/src/MotionAdConsole.tsx`, `motionAdConsole.css`: 운영자·점주 UI와 소재 제작 흐름.
- `web/src/MotionAdRail.tsx`, `motionAdPlayback.ts`: 우측 광고·시험 조건·콘텐츠 적용 흐름.
- `web/public/assets/advertisers/`: 제공·보강 PNG와 MP4 소재.

실제 배포 URL, 최종 실행파일 버전·해시, 브라우저 검증 결과는 해당 릴리스의 검증 기록과 배포 안내를 함께 확인합니다.
