촬영에서 AI 실사 변환까지 — 각 화면의 사용 방법과 크레딧 정책을 안내합니다.
/admin/ 콘솔로 이동합니다. 생성기 내부의 기존 환경설정은 서비스 설정과 사용자·크레딧 화면으로 포팅되었습니다.로그인 후 상단의 사용자 이름을 선택하면 내 콘텐츠와 크레딧을 관리하는 개인 작업실로 이동합니다.
| 메뉴 | 주요 기능 |
|---|---|
| 내 작업실 | 현재 잔액, 콘텐츠 수와 최근 생성 이미지, 최근 공지사항, 내 최근 문의와 답변 상태 요약 |
| 내 촬영컷 | 검색·공개 범위 필터, 원본 미리보기, 이름·즐겨찾기·공개 범위 수정과 삭제 |
| 내 라이브러리 | 분류·공개 범위 필터, 원본·대표 썸네일 확인, 이름·설명·분류 수정과 삭제 |
| 생성 결과 | 생성 이미지·모델·프롬프트 확인, 메모·공개 범위 수정과 삭제 |
| 즐겨찾기 | 내 항목과 공용 항목 중 저장한 촬영컷·라이브러리·생성 결과를 분류별로 조회하고 해제 |
| 공지사항 | 관리자가 게시한 공지 목록·상세 확인과 첨부파일 다운로드 |
| 1:1 문의 | 문의 작성·조회, 사용자 후속 답변, 처리 상태 확인, 미답변 문의 삭제와 종료·재문의 |
| 크레딧 내역 | 현재 잔액과 누적 지급·사용량, 지급·이미지 생성 차감 원장 조회 |
/api/mypage/{shots|library|generations|inquiries|notices|favorites}에서 권한에 맞는 항목만 처리하며, 공용 라이브러리 변경·삭제에는 기존 IP 제한이 적용됩니다.관리자 로그인과 로컬·허용 IP 확인을 모두 통과한 경우에만 접근할 수 있는 독립 운영 화면입니다.
| 메뉴 | 주요 기능 |
|---|---|
| 대시보드 | 촬영컷·라이브러리·생성 기록·사용자 수, 공개 범위, 분류별 현황과 현재 관리자 IP 확인 |
| 촬영컷 관리 | 전체 사용자 촬영컷 검색·소유자/공개 범위 필터, 원본 추가·교체, 이름·즐겨찾기·공개 범위 수정, 삭제, 촬영컷별 생성 이미지 수와 연결 결과 미리보기 |
| 라이브러리 관리 | 모든 촬영 이미지 분류 조회, 원본·설명·공개 범위 수정, 자유 드래그 대표 썸네일 생성, 추가·삭제 |
| 생성 기록 | AI 생성 이미지·프롬프트·모델·관리 메모·공개 범위 조회·수정·삭제 |
| 문의 관리 | 전체 사용자의 문의를 상태·분류·검색어로 조회하고 상세 대화에서 답변·상태 변경 |
| 공지사항 관리 | 공지 작성·수정·게시·상단 고정·삭제와 공지당 최대 5개 첨부파일 업로드 |
| 사용자·크레딧 | 활성 사용자와 잔액 조회, 크레딧 지급, 최근 원장 300건 조회 |
| 서비스 설정 | 탭별 독립 저장. Google Gemini·OpenAI API 키, 네 가지 이미지 모델 활성화와 모델별 차감 크레딧, 카카오·Google OAuth 키와 Callback URL 관리 |
관리자 REST 경로는 GET /api/admin/overview, 콘텐츠용 /api/admin/{shots|library|generations}, 게시판용 /api/admin/{inquiries|notices}입니다. 공지 첨부는 multipart/form-data로 업로드하며, 관리자 세션과 허용 IP를 모두 검사합니다.
| 기능 | 주요 경로 | 권한 |
|---|---|---|
| 1:1 문의 | /api/mypage/inquiries, /api/admin/inquiries | 사용자는 본인 문의만, 관리자는 전체 문의와 답변 처리 |
| 공지사항 | /api/mypage/notices, /api/admin/notices | 사용자는 게시 공지 조회, 관리자는 작성·수정·첨부 관리 |
| 즐겨찾기 | /api/mypage/favorites | 본인 항목 또는 현재 공용인 촬영컷·라이브러리·생성 결과 |
| 첨부 다운로드 | /api/notice-attachments/{id} | 로그인 사용자, 다운로드 응답으로만 원본 전송 |
모델, 의상, 악세사리, 배경과 그 밖의 촬영 레퍼런스 이미지를 공용 라이브러리로 조회·관리합니다.
| 메서드 | 경로 | 기능·권한 |
|---|---|---|
| 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} | 공용 항목 삭제 |
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) |
| Google로 로그인 버튼 | 데모 연동 (첫 로그인 시 100c) |