사용 안내

촬영에서 AI 실사 변환까지 — 각 화면의 사용 방법과 크레딧 정책을 안내합니다.

스튜디오 /studio/

스튜디오 — 포즈·가구·조명·카메라 패널과 3D 씬
촬영 컷은 설정 스냅샷·원본과 함께 저장되어, AI 생성기의 포즈 레퍼런스와 프롬프트 소스가 됩니다. 공용 컷은 모든 사용자가 참조할 수 있습니다.

포즈 편집기 /posedoll/

포즈 편집기 — 프리셋 목록과 관절 기즈모

모션 · 컷씬 /motion/

모션 플레이어 — 걷기 모션 재생 화면

AI 생성기 /generator/

AI 생성기 — 컷 선택·프롬프트·생성 히스토리 3열 화면
크레딧 정책 — 가입(첫 로그인) 시 100c 지급 · AI 이미지 생성은 선택 모델에 설정된 크레딧 소모 · 잔액은 화면 우상단에 표시됩니다. 크레딧이 부족하면 생성이 제한되며, 관리자가 환경설정에서 추가 지급할 수 있습니다.

마이페이지 /mypage/

로그인 후 상단의 사용자 이름을 선택하면 내 콘텐츠와 크레딧을 관리하는 개인 작업실로 이동합니다.

메뉴주요 기능
내 작업실현재 잔액, 콘텐츠 수와 최근 생성 이미지, 최근 공지사항, 내 최근 문의와 답변 상태 요약
내 촬영컷검색·공개 범위 필터, 원본 미리보기, 이름·즐겨찾기·공개 범위 수정과 삭제
내 라이브러리분류·공개 범위 필터, 원본·대표 썸네일 확인, 이름·설명·분류 수정과 삭제
생성 결과생성 이미지·모델·프롬프트 확인, 메모·공개 범위 수정과 삭제
즐겨찾기내 항목과 공용 항목 중 저장한 촬영컷·라이브러리·생성 결과를 분류별로 조회하고 해제
공지사항관리자가 게시한 공지 목록·상세 확인과 첨부파일 다운로드
1:1 문의문의 작성·조회, 사용자 후속 답변, 처리 상태 확인, 미답변 문의 삭제와 종료·재문의
크레딧 내역현재 잔액과 누적 지급·사용량, 지급·이미지 생성 차감 원장 조회
마이페이지 REST API는 로그인 세션의 사용자 ID만 사용합니다. /api/mypage/{shots|library|generations|inquiries|notices|favorites}에서 권한에 맞는 항목만 처리하며, 공용 라이브러리 변경·삭제에는 기존 IP 제한이 적용됩니다.

관리자 콘솔 /admin/

관리자 로그인과 로컬·허용 IP 확인을 모두 통과한 경우에만 접근할 수 있는 독립 운영 화면입니다.

메뉴주요 기능
대시보드촬영컷·라이브러리·생성 기록·사용자 수, 공개 범위, 분류별 현황과 현재 관리자 IP 확인
촬영컷 관리전체 사용자 촬영컷 검색·소유자/공개 범위 필터, 원본 추가·교체, 이름·즐겨찾기·공개 범위 수정, 삭제, 촬영컷별 생성 이미지 수와 연결 결과 미리보기
라이브러리 관리모든 촬영 이미지 분류 조회, 원본·설명·공개 범위 수정, 자유 드래그 대표 썸네일 생성, 추가·삭제
생성 기록AI 생성 이미지·프롬프트·모델·관리 메모·공개 범위 조회·수정·삭제
문의 관리전체 사용자의 문의를 상태·분류·검색어로 조회하고 상세 대화에서 답변·상태 변경
공지사항 관리공지 작성·수정·게시·상단 고정·삭제와 공지당 최대 5개 첨부파일 업로드
사용자·크레딧활성 사용자와 잔액 조회, 크레딧 지급, 최근 원장 300건 조회
서비스 설정탭별 독립 저장. Google Gemini·OpenAI API 키, 네 가지 이미지 모델 활성화와 모델별 차감 크레딧, 카카오·Google OAuth 키와 Callback URL 관리
촬영컷 카드의 생성 건수를 확인하고 상세에서 연결된 생성 이미지를 선택하면 같은 모달이 생성 이미지 상세로 전환됩니다. 목록 API는 썸네일과 메타데이터만 반환하고, 편집할 항목을 열 때 단건 원본을 불러옵니다. 삭제는 확인 후 즉시 반영되므로 대상 ID와 소유자를 확인하세요.

관리자 REST 경로는 GET /api/admin/overview, 콘텐츠용 /api/admin/{shots|library|generations}, 게시판용 /api/admin/{inquiries|notices}입니다. 공지 첨부는 multipart/form-data로 업로드하며, 관리자 세션과 허용 IP를 모두 검사합니다.

문의·공지·즐겨찾기 REST API /api/mypage

기능주요 경로권한
1:1 문의/api/mypage/inquiries, /api/admin/inquiries사용자는 본인 문의만, 관리자는 전체 문의와 답변 처리
공지사항/api/mypage/notices, /api/admin/notices사용자는 게시 공지 조회, 관리자는 작성·수정·첨부 관리
즐겨찾기/api/mypage/favorites본인 항목 또는 현재 공용인 촬영컷·라이브러리·생성 결과
첨부 다운로드/api/notice-attachments/{id}로그인 사용자, 다운로드 응답으로만 원본 전송
공지 첨부는 공지당 최대 5개, 파일당 10MB입니다. PDF·이미지·텍스트·CSV·ZIP·DOCX·XLSX만 허용하며 실행 파일은 등록할 수 없습니다.

공용 이미지 라이브러리 REST API /api/public-library

모델, 의상, 악세사리, 배경과 그 밖의 촬영 레퍼런스 이미지를 공용 라이브러리로 조회·관리합니다.

메서드경로기능·권한
GET/api/public-library공용 목록 조회. 로그인 없이 가능하며 ?kind=background&limit=50&offset=0 필터를 지원합니다.
GET/api/public-library/{id}공용 항목 1건 조회
POST/api/public-library새 공용 항목 등록
PATCH/api/public-library/{id}항목의 분류·이름·캡션·이미지 변경
DELETE/api/public-library/{id}공용 항목 삭제
쓰기 요청(POST/PATCH/DELETE)은 로그인 세션과 IP 검사를 모두 통과해야 합니다. 127.0.0.1, ::1 또는 DB의 admin_ip_allowlist에 활성 상태로 등록된 정확한 IP만 허용합니다. 전달된 임의의 X-Forwarded-For는 신뢰하지 않으며, 운영 Cloudflare 주소는 서버 nginx가 복원한 클라이언트 IP를 사용합니다.

허용 분류: model, outfit, acc, background, prop, lighting, pose, style, other

# 조회 — 응답의 access.can_write로 현재 IP의 쓰기 가능 여부도 확인
curl 'https://studio.oootool.com/api/public-library?kind=background'

# 등록 — 먼저 로그인해 받은 HttpOnly 쿠키를 cookie.txt에 보관
curl -c cookie.txt -X POST 'https://studio.oootool.com/api/?action=login' \
  -H 'Content-Type: application/json' \
  --data '{"id":"관리자 또는 사용자 ID","password":"비밀번호"}'
curl -b cookie.txt -X POST 'https://studio.oootool.com/api/public-library' \
  -H 'Content-Type: application/json' \
  --data '{"id":"background-001","kind":"background","name":"회색 사이클로라마","caption":"중성 회색 스튜디오 배경","dataUrl":"data:image/jpeg;base64,...","thumb":"data:image/jpeg;base64,..."}'

# 변경 / 삭제
curl -b cookie.txt -X PATCH 'https://studio.oootool.com/api/public-library/background-001' \
  -H 'Content-Type: application/json' --data '{"caption":"부드러운 중성 회색 배경"}'
curl -b cookie.txt -X DELETE 'https://studio.oootool.com/api/public-library/background-001'

관리자 허용 IP는 DB 관리 권한으로 등록합니다.

INSERT INTO admin_ip_allowlist (ip_address, label, is_active)
VALUES ('203.0.113.10', '촬영 라이브러리 관리 PC', 1)
ON DUPLICATE KEY UPDATE label=VALUES(label), is_active=1;

로그인 · 계정

로그인 — 사용자/관리자 탭과 카카오·구글 소셜 로그인
구분방법비고
관리자admin / (비공개)허용된 PC(IP)에서만 로그인 가능
사용자user / user1234테스트 계정
카카오카카오로 로그인 버튼환경설정 등록 시 실제 OAuth, 미등록 시 데모 (첫 로그인 시 100c)
GoogleGoogle로 로그인 버튼데모 연동 (첫 로그인 시 100c)
인증·크레딧·개인 데이터와 공용 촬영 컷·라이브러리·생성 이미지는 MySQL에 저장됩니다. 공용 데이터는 다른 기기·브라우저에서도 조회·참조할 수 있습니다.