# BLOCKQUANT staging 개인정보처리방침

문서 버전: `staging-privacy-2026-09-09-v10`
시행일: `2026-09-09`
개인정보처리자: `서제훈`

`서제훈`(이하 “운영자”)은 정보주체의 개인정보를 중요하게 여기며 개인정보 보호법 등 관계
법령을 준수한다. 이 방침은 BLOCKQUANT staging에서 어떤 정보를 왜, 얼마나 오래, 어디에서 처리하는지와
정보주체가 행사할 수 있는 권리를 설명한다.

## 1. 개인정보 처리 목적, 항목, 근거와 보유기간

운영자는 아래 목적에 필요한 최소 범위에서 개인정보를 처리한다. `계약 이행`은 개인정보 보호법
제15조제1항제4호, `정당한 이익`은 같은 항 제6호를 뜻한다. 법정 의무 또는 분쟁 보존이 적용되면 해당
근거와 기간 동안 접근을 제한하여 별도 보관할 수 있다.

아래 표의 `staging DB 종료`는 Render Dashboard의 만료 표시일만 지난 상태가 아니라 운영자가 실제 DB와
직접 만든 복구 사본의 삭제까지 확인한 시점을 뜻한다. 2026-08-28 재확인한 DB는 Free·Singapore이고
만료 표시는 `2026-09-25 23:29:05 KST`다. Render 공식 계약상 만료 뒤 14일 동안은 유료 전환만 가능하고
그 뒤 DB가 삭제되며, Free DB에는 Render 관리형 backup이 없다.
운영자 장치의 자동 복구 사본은 매일 `21:00 KST`에 예약하며 장치가 꺼져 있거나 로그아웃·네트워크 단절
상태면 cloud에서 대신 실행되지 않고 다음 로그인 뒤 실행 가능한 시점에 만든다.

| 구분 | 처리 항목 | 목적·근거 | 실제 보유·이용 기간 |
|---|---|---|---|
| 비회원 초안·로그인 연결 식별 | 무작위 비회원 UUID, 서명값 | 같은 브라우저의 초안·임시 초안·OAuth 왕복 연결, 로그인 전 응답 복구, 서비스 남용 방지 | `bq_anon` 쿠키는 최대 1년. 연결된 임시 초안·OAuth 시도는 각 행의 아래 보유기간을 따름 |
| 접속 남용 방지 | 접속 IP, User-Agent, 언어, 브라우저·플랫폼 힌트를 서버 메모리에서 결합한 HMAC 값, 1분 속도 제한용 IP HMAC | 자동화 남용·쿼터 우회·과도한 요청 차단·정당한 이익 | IP와 헤더 원문은 애플리케이션 DB에 저장하지 않음. 속도 제한의 판정 효력은 1분이며 만료 값은 다음 속도 제한 요청 또는 instance 종료 때 메모리에서 제거. 작업의 HMAC은 실패 작업은 제한 종료 뒤, 성공 작업은 최대 24시간 뒤 해당 작업 UUID에서 만든 무관한 값으로 교체 |
| 브라우저 초안 | 시장·종목·봉·조건 트리·손절, 튜토리얼 상태, 실행·임시저장·멱등 ID와 fingerprint | 새로고침 뒤 같은 브라우저에서 편집·작업 복구·계약 이행 | 최초 생성부터 24시간. 만료 뒤 다음 로드에서 제거되며 이용자가 브라우저 사이트 데이터를 직접 지울 수 있음 |
| 서버 임시 초안 | 비회원 UUID, 선택적 회원 UUID, 전략 트리, template 버전, 멱등·요청 hash, 생성·연결·만료 시각 | OAuth 왕복 중 전략 보존과 로그인 뒤 복구·계약 이행 | 비회원 2시간, 로그인 연결 뒤 24시간 동안 복구 가능. 만료 뒤 조회에서 제외되고 다음 임시저장 정리 또는 staging DB 종료 때 물리 삭제 |
| OAuth 시도·가입 마무리 | 단계(`authorization`/`legal_completion`), 공급자, OAuth state 또는 완료 cookie 원문의 SHA-256, 비회원·임시초안 ID, 로그인 유지 선택, authorization 단계의 Google PKCE verifier·nonce, callback 뒤 완료 단계의 공급자별 식별자·표시 이름·선택 이메일·이메일 확인 여부·신원 확인 시각 | 위조·재생 방지, 사용자가 시작한 로그인과 초안 연결, 기존 계정의 현재 문서 기록 판정과 신규 가입·변경 문서 확인 완료 | authorization은 시작부터 최대 10분이고 callback에서 1회 소비. 신규/stale 판정 뒤 legal_completion은 새 최대 10분이며 가입 마무리에서 1회 소비하므로 전체 흐름은 약 20분까지 가능. 새 로그인 시작·각 단계 만료 뒤 다음 로그인 정리 또는 staging DB 종료 때 물리 삭제 |
| 회원 계정·소셜 로그인 | 내부 회원 UUID, 공급자(`google`/`naver`), 공급자별 식별자, 표시 이름, 선택적으로 반환된 이메일, 이메일 확인 여부, 가입·최근 로그인 시각, 만 14세 이상 자가확인 시각, 분석 중지 시각 | 계정 생성·식별, 로그인, 전략 소유권·계약 이행, 최소 이용 연령 자가확인 기록과 처리정지 증명 | 계정 삭제 요청 또는 staging DB 종료 시까지. NAVER 이메일은 확인된 복구 이메일로 취급하지 않음 |
| 회원·비회원 연결 | 비회원 UUID, 분석 주체 HMAC, 내부 회원 UUID, 연결 시각 | 가입 전 초안·OAuth 시도와 회원 계정 연결, 기존 staging 시험 작업 복구, 계정 삭제 범위 확인·계약 이행 및 남용 방지 | 계정 삭제 요청 또는 staging DB 종료 시까지 |
| 로그인 세션 | 세션 token·CSRF 값의 SHA-256, 회원 UUID, 공급자·공급자 식별자, 생성·만료 시각 | 로그인 유지, 요청 위조 방지·계약 이행 및 보안 | 로그인 유지 끔: 서버 24시간·브라우저 session cookie. 켬: 최대 30일. 로그아웃 때 현재 세션 삭제; 만료 행은 조회에서 제외되고 후속 정리 또는 staging DB 종료 때 삭제 |
| 약관 동의·방침 확인 | 회원 UUID, 문서 ID·버전, 동의 또는 확인 시각·기록 시각 | 계약 성립·제시 문서 증명·계약 이행 및 분쟁 대응 | 계정 유지 중. 삭제 요청 시 법적 분쟁·보존 의무가 없으면 계정과 함께 삭제 |
| 저장 전략 | 회원 UUID, 전략 ID·제목·기존 평면 또는 version 2 블록 트리(현재 화면·서버에서 version 2로 정규화), revision·상태, template 버전, 원본 임시초안·멱등·요청 hash, 생성 시각 | 이용자가 확정한 전략 저장·복구·무결성·계약 이행 | 삭제 요청, 계정 삭제 또는 staging DB 종료 중 먼저 도래한 때까지 |
| 백테스트 작업·결과 | 내부 회원 UUID(새 실행의 필수 소유자), 접수 브라우저의 비회원 UUID, 기존 staging 시험 행의 선택적 회원 연결, 작업·멱등·요청·계산 hash, package와 전략 snapshot, 상태·시각·오류·차감 여부, 결과 schema·계산·데이터 version, 거래·자산곡선·성과 결과와 결과 hash | 로그인 회원의 계산 접수, 상태 복구, 결과 표시, 계정 기준 성공 1회 차감, 계산 재현·계약 이행 | 삭제 요청 또는 staging DB 종료 시까지. 계정 무료 횟수 판정에는 성공·예약 작업을 최근 24시간 동안 사용 |
| 운영자 복구 사본 | 위 서버 처리 정보와 PostgreSQL 구조를 포함한 전체 DB custom dump | DB 장애·무료 DB 교체 때 계정·전략·결과를 복구하기 위한 계약 이행·정당한 이익 | 국내 운영자 Windows 장치에 최근 성공본 최대 7개. 새 성공본 뒤 오래된 사본을 순환 삭제하고 실패한 임시 파일은 즉시, 강제 종료 때 남은 임시 파일은 다음 성공 실행에서 삭제. 계정 삭제 뒤 검증된 새 성공본을 만든 다음 그보다 오래된 사본을 모두 파기하며, staging DB 종료 때 전부 삭제 |
| 가명 제품 이용 이벤트 | 현재 실제 서버 수집 중단. 과거 staging test 행의 HMAC 가명 주체, 익명 session UUID, event UUID·이름·발생·수신 시각, 유입 구분, `free` plan, 앱 version, 선택적 백테스트 작업 ID | 현재 신규 수집 목적·근거 없음. migration `006`에서 DB 신규 쓰기를 금지한 뒤 기존 행 전량 파기, 처리정지 재확인만 수행 | 기존 행은 migration `006` 적용 때 전량 삭제. 재수집 전 별도 동의, production 90일 자동 삭제와 DB 금지 제약을 해제하는 새 migration 필요 |
| AI 전략 초안·결과 분석 작업 | 회원 UUID, 작업 ID·멱등 키, 요청 문장의 SHA-256 해시, 공급자·모델 이름, 공급자 요청 ID, 예약·확정 크레딧, 생성된 블록 수와 블록 초안 또는 구조화 분석 답변·근거·원본 실행/결과 ID와 hash, 상태·시각 | 회원이 요청한 자연어 전략 초안 생성·기존 결과 설명, 크레딧 예약·차감과 중복 차감 방지·계약 이행 | 임시 초안·분석 답변·근거는 아래 24시간 규칙. 원장은 삭제 요청, 계정 삭제 또는 staging DB 종료 중 먼저 도래한 때까지 |
| 애플리케이션·호스팅 로그 | 서버가 기록한 오류 메시지, 배포·instance·시각 등 runtime log, 호스팅 과정에서 처리되는 접속·요청 보안 metadata | 장애 진단, 보안, 서비스 운영·정당한 이익 | 현재 Render Dashboard runtime log explorer는 최대 7일 보관. 그 밖의 공급자 보안 metadata는 Render DPA·개인정보 정책과 위탁계약에 따른 기간 |

공개 기능에서 인터넷에 공개되는 처리 항목은 다음과 같다. 로그인하지 않은 사람을 포함한 누구나 열람할 수 있다.

| 구분 | 처리 항목 | 목적·근거 | 공개 대상·범위 | 보유·삭제 |
|---|---|---|---|---|
| 공개 회원 프로필 | 서버가 무작위로 생성한 회원 UUID(공개 프로필 경로 값과 응답 `profile_id`로도 사용), 사용자가 직접 저장한 닉네임·소개, 수정 시각. 중립 기본 아바타는 서비스 그림이며 사용자 이미지를 저장하지 않음 | 사용자가 명시적으로 요청한 공개 프로필 제공·계약 이행 | 인터넷 이용자 누구나에게 무작위 회원 UUID인 공개 경로 값·`profile_id`, 닉네임·소개·중립 기본 아바타를 공개. OAuth 이름·이메일·사진은 공개 항목이 아님 | 서비스 화면에서는 닉네임·소개를 정정할 수 있지만 닉네임을 비우거나 프로필 자체를 삭제하는 화면·API는 제공하지 않음. 프로필 삭제와 화면에서 처리할 수 없는 정정·삭제는 공개 연락처로 요청하며, 운영자가 요청에 따라 삭제하거나 계정 삭제 또는 staging DB 종료 시 삭제·차단 |
| 공개 백테스트 결과 | 내부 소유 회원 UUID, 정확한 `backtest_result_id`, 공개 제목·상태·변경 시각·AI 생성 여부, official 결과의 총수익률·최대 낙폭·승률·거래 횟수·시장·종목·봉 간격·기간·생성일·자산 곡선·수수료·슬리피지 비용·데이터 버전 | 결과 소유자가 명시적으로 요청한 공개 결과 제공·계약 이행 | `official`이고 현재 공개 상태인 동안 인터넷 이용자 누구나에게 앞의 허용 항목만 공개. 전략 JSON·블록·조건·지표 값·위험관리 파라미터와 OAuth 정보는 공개하지 않음 | 기본 비공개. 소유자가 비공개로 바꾸면 공개 열람을 즉시 차단하고 결과는 비공개로 보유. 계정 삭제 또는 staging DB 종료 중 먼저 도래한 때 결과와 공개 상태 삭제 |

공개 프로필과 결과는 사용자의 명시적 저장·공개 요청을 근거로 표시한다. Google·NAVER가 보낸 이름·이메일·사진은 사용자 확인 없이
공개 프로필에 복사하지 않는다.

AI 요청 전문과 모델 응답 전문을 별도 원문 필드나 애플리케이션 로그에 저장하지 않는다.
결과 분석은 구조화한 요약·사실·추정·한계·후속 질문과 전달 근거, 원본 실행·결과 식별자와 결과 해시를 임시 작업에 보관한다.
이 분석 답변과 근거에도 다음 24시간 보관·조회 차단·삭제 규칙을 동일하게 적용한다.
다만 전달한 블록·해석·가정·미지원 요구 요약에는 입력 내용의 일부가 포함될 수 있다. 이 임시 초안과
확인 기록은 작업 생성부터 24시간 동안 복구할 수 있고, 만료 뒤 응답에서 제외하며 다음 조회 또는
매일 실행하는 정리 작업에서 삭제한다. 서버 중단 중에는 다음 기동 때 정리한다. 회원이 편집기에
적용해 저장한 블록은 위 `저장 전략`의 보유기간을 따른다.
선택적으로 제출한 초안 평가의 별점(1~5점)과 이유(최대 500자)는 품질 개선과 회원의 평가 기록 확인을
위해 같은 작업에 계정 삭제 또는 staging DB 종료까지 보관한다. 평가하지 않아도 기능을 사용할 수 있다.
작업 원장에는 요청 지문·모델·공급자 요청 ID·사용량·가격과 환율·예약 및 차감 크레딧·정산 근거·블록 수를
멱등 처리와 사용량 확인을 위해 계정 삭제 또는 staging DB 종료까지 유지한다. 이 기록만으로 원문 복원이
불가능하다고 보장하지 않으며, 요청 입력란에 개인정보나 인증정보를 적지 않도록 안내한다.

현재 애플리케이션은 주민등록번호, 결제정보, 거래소 API Secret, Google·NAVER 비밀번호, 공급자 access
token·refresh token·ID token을 DB·브라우저 저장소에 보관하지 않는다. OAuth token은 공급자 응답 검증과
프로필 조회에 필요한 동안 서버 메모리에서만 처리한다. Google에서 기능에 쓰지 않는 access·refresh token이
함께 반환되면 신원 확인 뒤 계정을 만들기 전에 Google revoke endpoint로 폐기하며, 실패하면 로그인을
완료하지 않는다.

Google 로그인에서는 `openid`, `email`, `profile` 범위로 Google 앱별 식별자(`sub`), 표시 이름, 이메일과
이메일 확인 여부를 받을 수 있다. NAVER 로그인에서는 앱별 `id`, 별명 또는 이름, 선택적으로 반환된 이메일을
받는다. 이용자가 공급자 화면에서 이메일·이름 제공을 거부하면 해당 값은 없을 수 있다.

## 2. 수집 방법

운영자는 다음 경로로 정보를 처리한다.

1. 이용자가 서비스에서 전략을 편집·저장·실행하거나 약관에 동의할 때
2. 브라우저가 필수 cookie와 localStorage를 저장하거나 서버에 요청할 때
3. 이용자가 Google 또는 NAVER 로그인 화면에서 정보 제공에 동의하여 공급자가 OAuth callback과 프로필
   API로 정보를 보낼 때
4. 회원이 공개된다는 안내를 확인하고 닉네임·소개를 직접 저장하거나, 소유한 official 백테스트 결과를 공개·비공개로 변경할 때
5. 서버가 백테스트 상태·결과와 허용된 공개 프로필·결과 화면을 생성할 때. 제품 이벤트는 현재 수집하지 않으며 향후 별도 동의 뒤 켜는
   경우에만 허용 목록으로 생성

전략 입력란에는 본인이나 타인의 개인정보, 인증정보 또는 금융정보를 입력하지 않아야 한다.

## 3. 개인정보의 제3자 제공

운영자는 현재 개인정보를 판매하지 않으며 독립된 제3자에게 광고·마케팅 목적으로 제공하지 않는다.
법령에 특별한 규정이 있거나 적법한 절차에 따른 수사·감독기관 요청이 있는 경우에만 관계 법령이 허용하는
범위에서 제공할 수 있다.

사용자가 직접 저장한 공개 프로필과 소유자가 명시적으로 공개한 official 백테스트 결과의 허용 항목은 상단 표와 같이 로그인 여부와 관계없이 인터넷
이용자 누구나에게 공개된다. 이는 광고·마케팅을 위한 판매·제공이 아니다. 화면에서는 닉네임·소개 정정과 결과 비공개 전환을 할 수 있다. 닉네임을
비우거나 프로필 자체를 삭제하는 화면·API는 제공하지 않으므로 프로필 삭제, 화면에서 처리할 수 없는 정정·삭제와 계정 삭제는 아래 공개 연락처로 요청한다.

Google과 NAVER는 이용자의 선택과 각 공급자 동의 화면에 따라 계정 정보를 BLOCKQUANT에 제공하는 로그인
공급자다. BLOCKQUANT가 이용자의 전략·결과를 Google 또는 NAVER에 제공하지 않는다. 이용자가 공급자
사이트를 이용하는 과정의 개인정보 처리는 각 공급자의 방침도 적용된다.

## 4. 처리위탁과 개인정보의 국외 이전

서비스의 웹 서버와 PostgreSQL은 Render에 위탁하여 싱가포르 region에서 운영한다. 운영자는 장애·DB 교체
복구만을 위해 싱가포르 DB의 사본을 국내 운영자 Windows 장치에 내려받는다. 이 사본은 서비스를 대신하는
국내 서버가 아니므로 국외 이전을 원하지 않으면 서비스를 이용하지 않거나 아래 권리 행사 창구로 삭제를
요청할 수 있고, 이 경우 BLOCKQUANT 계정·서버 저장·백테스트 기능을 제공할 수 없다.

| 항목 | 내용 |
|---|---|
| 이전받는 자·연락처 | Render Services, Inc. / `privacy@render.com` |
| 이전 국가 | 싱가포르(선택한 웹·DB 주 region), 미국(Render DPA상 주요 처리 및 서비스 제공에 필요한 이전과 현재 공개된 AWS·Google Cloud Platform·Cloudflare·ClickHouse 재수탁자의 소재 국가). 2026-08-28 확인한 staging 계정에는 별도 Datadog·외부 log stream이 설정되어 있지 않음 |
| 이전 항목 | 위 표의 서버 처리 정보, 공개 프로필·결과 공개 상태, 애플리케이션·호스팅 로그와 접속 보안 metadata. 브라우저에만 남은 localStorage 원문은 제외 |
| 이전 목적 | 웹 호스팅, PostgreSQL 저장, 네트워크·보안, 배포, 장애 진단과 로그 제공 |
| 이전 시기·방법 | 이용자가 서비스에 접속·저장·실행·로그인·프로필 저장·결과 공개 변경을 할 때 통신망을 통해 전송하고 선택 region 서버·DB에 저장 |
| 이전 근거 | 계정·전략·백테스트 등 서비스 필수 처리는 개인정보 보호법 제28조의8제1항제3호의 계약 체결·이행에 필요한 처리위탁·보관 및 이 방침 공개. 선택적 제품 분석은 별도 동의가 없으므로 현재 수집하지 않음 |
| 보유·이용 기간 | 각 정보의 위 보유기간. Dashboard runtime log explorer는 최대 7일. 위탁 종료·삭제 요청 뒤에는 Render DPA와 삭제 정책에 따라 삭제 |
| 거부 방법·효과 | 서비스를 이용하지 않거나 `BLOCKQUANT99@gmail.com`으로 삭제 요청. 국외 호스팅이 필수이므로 거부 시 서버 기능과 회원 계정을 제공할 수 없음 |

Render는 주요 처리 작업이 미국에서 이루어지고 서비스 제공에 미국 이전이 필요하다고 DPA에 밝히며,
AWS, Google Cloud Platform, Cloudflare, ClickHouse를 미국 소재 재수탁자로 공개한다. 공개 목록의 법인
소재지는 각 기술의 실제 저장 region과 다를 수 있으므로, 현재 확인된 서비스 처리 국가는 선택 region인
싱가포르와 Render DPA가 명시한 미국으로 고지한다. 공식 목록이나 계정의 처리 경로가 바뀌면 서비스에
영향을 주는 국가·수탁자 변경을 이 방침에 반영한다.

### AI 전략 초안 생성·결과 분석(OpenAI, 미국) — 별도 동의 사항

회원이 자연어로 적은 요청을 전략 블록 초안으로 바꾸거나, 선택한 백테스트 결과를 설명하기 위해 요청과 아래 자료를 OpenAI의 API로 전송한다. 이
이전은 **AI 전략 초안·결과 분석 기능에만 필요한 별도 동의 사항**이며, 서비스의 다른 기능을 이용하기 위한 조건이
아니다. 동의하지 않아도 계정·전략 편집·백테스트·저장을 포함한 나머지 기능을 모두 이용할 수 있고, AI
전략 초안·결과 분석 기능만 제공되지 않는다. 동의는 AI 기능에 처음 들어갈 때 다른 동의와 분리해 받는다. 이전 버전 동의만으로 결과를 전송하지 않는다.

| 항목 | 내용 |
|---|---|
| 이전받는 자·연락처 | OpenAI OpCo, LLC (1455 Third Street, San Francisco, California 94158, United States) / `privacy@openai.com` |
| 이전 국가 | 미국 |
| 이전 항목 | 회원이 AI 입력란에 직접 적은 전략 요청 문장(최대 4,000자), 현재 전략의 블록·설정값·조건 그룹·연결과 편집 단계, 선택한 시장·종목·봉·증거금 방식·레버리지, 블록 목록·응답 형식 지시문. 서비스가 회원 UUID·이메일·이름·프로필·결제정보·거래소 API 키를 추가하지 않는다. 회원이 요청 문장에 직접 적은 개인정보는 함께 전송될 수 있으므로 입력하지 않아야 한다 |
| 결과 분석의 추가 이전 항목 | 회원의 분석 질문(최대 4,000자), 선택 결과의 시장·종목·봉·기간·계산/데이터 버전·누락 구간 수, 전략/벤치마크 요약 성과·비용·거래 수, 계산 가정의 조건 설명·수수료율·슬리피지·규모·펀딩 설명, 첫 거래 최대 10건의 시각·종목·수량·진입/청산 가격·종료 이유·손익·비용. 전체 자산곡선·시세·외부 뉴스, 다른 전략·결과와 계정 식별자는 추가하지 않음 |
| 이전 목적 | 회원이 적은 요청 문장을 서비스가 지원하는 전략 블록 초안으로 변환하거나 회원이 선택한 기존 백테스트 결과를 설명 |
| 이전 시기·방법 | 회원이 AI 입력란에서 `전송`을 눌러 요청을 보내는 시점에, 암호화된 통신(HTTPS)으로 OpenAI API에 전송. 결과를 열거나 분석 입력창을 여는 것만으로는 전송하지 않음 |
| 이용 모델 | 등록 목록은 `openai:gpt-5.6-sol,gpt-6-astra,gpt-5.6-terra,gpt-5.6-luna`이며 회원이 요청마다 고른 하나를 사용 |
| 이전받는 자의 보유·이용 기간 | OpenAI는 남용 감시 목적으로 API 요청·응답 기록을 최대 30일 보관한 뒤 삭제하며, 법령이 더 긴 보관을 요구하는 경우에만 그 기간을 따른다. API로 전송한 내용은 OpenAI 모델의 학습에 사용되지 않는다 |
| 이전 근거 | 개인정보 보호법 제28조의8제1항제1호의 정보주체 별도 동의 |
| 거부 방법·효과 | AI 기능 진입 화면에서 동의하지 않으면 된다. 동의한 뒤에도 같은 화면의 `AI 이용 동의 거두기`로 언제든 철회할 수 있고, `BLOCKQUANT99@gmail.com`으로 요청할 수도 있다. 거부·철회해도 다른 기능은 그대로 이용할 수 있고 AI 전략 초안·결과 분석 기능만 제공되지 않는다 |

운영자는 회원이 적은 요청 문장을 자신의 DB에 저장하지 않으므로, 전송한 문장의 삭제는 위 OpenAI 보유기간에
따라 이루어진다. 서비스에 남는 기록의 삭제는 아래 `8. 정보주체의 권리와 행사 방법`을 따른다. 방침에 적은
공급자·모델과 실제로 호출하는 공급자·모델이 다르면 서버가 AI 기능을 열지 않도록 구성한다.

## 5. cookie와 브라우저 저장소

| 이름 | 위치·수명 | 목적 |
|---|---|---|
| `bq_anon` | HttpOnly·SameSite=Lax·HTTPS Secure cookie, 최대 1년 | 같은 브라우저의 초안·임시 초안·OAuth 연결과 남용 방지 보조 |
| `bq_analytics` | 현재 미발급. 향후 별도 동의 뒤 발급하는 경우 HttpOnly·SameSite=Lax·HTTPS Secure, 24시간 | 같은 브라우저의 짧은 이용 흐름을 가명으로 연결 |
| `bq_analytics_optout` | 분석 중지 요청 때 HttpOnly·SameSite=Lax·HTTPS Secure, 최대 1년 | 후속 선택적 분석 요청을 차단 |
| `__Host-bq_auth_finish` | HttpOnly·SameSite=Lax·Secure cookie, callback 뒤 최대 10분 | callback에서 확인한 신원을 browser에 노출하지 않고 같은 가입 마무리 요청과 연결. 완료·만료·새 로그인 시작 때 폐기 |
| `__Host-bq_session` | HttpOnly·SameSite=Lax·Secure cookie, 브라우저 session 또는 로그인 유지 선택 시 최대 30일 | 회원 로그인 유지 |
| `blockquant.tutorial-draft.v1` | 브라우저 localStorage, 최초 생성부터 24시간 | 전략·튜토리얼·진행 작업·멱등 복구 |

이 cookie와 저장소는 맞춤 광고나 다른 사이트 추적에 사용하지 않는다. 이용자는 브라우저 설정에서 cookie와
사이트 데이터를 지울 수 있다. `bq_anon`이나 `__Host-bq_auth_finish`를 지우면 로그인 전 초안·임시
초안·OAuth 시도 또는 진행 중 가입 마무리의 자동 연결과 기존 staging 시험 작업의 복구가 어려워지고,
session cookie를 지우면 로그아웃되며, localStorage를 지우면 아직 서버에 저장하지 않은 초안을 복구할 수
없다. cookie를 다시 허용하고 요청하면 서비스가 기능에 필요한 새 비회원 ID를 발급할 수 있다.

## 6. 가명 제품 분석

현재 실제 서버는 선택적 제품 분석을 수집하지 않는다. 별도 동의 없이 Render Singapore로 가명 이벤트를
이전하지 않기 위한 fail-closed 결정이다. 근거 없이 남은 과거 staging test 행은 migration `006`에서
DB 신규 쓰기를 먼저 금지한 뒤 전량 파기한다. 아래 허용 목록은 향후 별도 동의 계약을 설계할 때의 기술적
상한일 뿐, 현재 수집 목록이 아니다.

- 화면: `landing_viewed`, `tutorial_started`, `tutorial_completed`, `save_clicked`
- 서버 확정: `backtest_started`, `backtest_succeeded`, `backtest_failed`, `signup_started`,
  `signup_completed`, `strategy_saved`

`signup_started`와 `signup_completed`는 신규 BLOCKQUANT 계정을 만드는 흐름에만 해당한다. 현재 기록이
완전한 기존 회원의 로그인이나 바뀐 문서만 확인하는 기존 회원에게 가입 이벤트를 남기지 않는다.

분석 행에는 전략 JSON·블록 값·프롬프트·게시물 본문·IP·User-Agent 원문·이메일·공급자 식별자·인증 token을
넣지 않는다. 장기 비회원 UUID를 HMAC 처리한 가명 주체와 24시간 session으로 같은 브라우저의 사건 순서만
연결하고, 가입 때 기존 가명 주체를 회원 UUID와 별도 1회 연결할 수 있다. 이 정보는 서비스 이용 흐름과
오류를 개선하기 위한 통계에만 사용하며 광고 프로필이나 자동화된 투자 결정에 사용하지 않는다.

이용자는 내정보의 `분석 중지 및 기존 이벤트 삭제`를 누르거나 `BLOCKQUANT99@gmail.com`으로 처리정지를
요청할 수 있다. 화면 동작은 후속 수집을 막고 같은 브라우저와 로그인 계정에 연결 가능한 원시 이벤트를
삭제한다. 별도 동의 흐름이 생기기 전에는 다시 켜는 화면을 제공하지 않는다.

## 7. 파기 절차와 방법

1. 보유기간이 끝나거나 처리 목적이 달성되면 법령상 보존 사유가 없는 개인정보를 지체 없이 파기한다.
2. 현재 임시 초안·OAuth 시도·session은 만료 즉시 서비스 조회에서 제외하고 후속 정리에서 DB 행을
   삭제한다. staging 전체 DB는 운영 종료 때 삭제한다.
3. 전자적 파일과 DB 행은 복구가 어렵도록 삭제하거나 식별자와 연결을 제거한다. HMAC 남용 방지 값은
   제한 종료 뒤 해당 작업 UUID에서 만든 무관한 값으로 교체한다.
4. 브라우저 초안과 cookie는 만료 또는 이용자의 사이트 데이터 삭제로 제거된다.
5. 운영자 복구 사본은 최근 성공본 최대 7개만 두고 새 성공본 뒤 오래된 사본을 삭제한다. 실패한 임시
   파일은 즉시, 전원 종료 등으로 남은 임시 파일은 다음 성공 실행에서 삭제한다. Render runtime log는
   공급자의 순환·삭제 정책에 따라 만료시킨다.
6. 계정 삭제 때는 검증된 삭제 후 사본을 만든 다음 그보다 오래된 운영자 복구 사본을 모두 삭제한다.
7. 법령상 보존할 정보는 서비스 이용 데이터와 분리하고 보존 목적 외에는 사용하지 않는다.
8. 계정 삭제는 계정에 연결된 공개 프로필, 결과 공개 상태, 백테스트 작업·결과를 같은 transaction에서 삭제하여 공개 프로필·목록·상세 경로에서
   열람할 수 없게 한다.

## 8. 정보주체의 권리와 행사 방법

정보주체는 자신의 개인정보에 대해 열람, 전송 요구가 적용되는 경우의 전송, 정정·삭제, 처리정지, 동의
철회와 자동화된 결정에 대한 권리를 관계 법령에 따라 행사할 수 있다. 현재 서비스는 이용자에게 법적 또는
중대한 효과를 주는 자동화된 의사결정을 하지 않는다.

- 접수: `BLOCKQUANT99@gmail.com`, `서울특별시 광진구 자양로 5길 33 605호`, `010-4725-4819`
- 회원: 로그인 공급자와 계정 식별에 필요한 정보를 함께 제시
- 비회원: 가능한 경우 같은 브라우저에서 요청하고 임시 초안 ID 또는 브라우저 초안 정보를 제시
- 대리인: 위임 관계와 본인 확인에 필요한 최소 서류 제시

운영자는 요청자를 안전하게 확인한다. 열람·정정삭제·처리정지 결과는 요청일부터 10일 안에 알리고,
동의 철회와 법정 예외가 없는 실제 처리정지·파기는 지체 없이 수행한다. 전부 또는 일부를 거절하면 법정
사유와 이의 제기 방법을 함께 알린다. 정정·삭제 요청 중인 개인정보는 확인이 끝날 때까지 해당 목적의
이용·제공을 제한한다. Google·NAVER 계정 자체의 정보 수정·연결 해제는 각 공급자에서도 별도로 해야 한다.

회원은 서비스 화면에서 직접 저장한 닉네임·소개를 정정하고, 소유한 공개 결과를 비공개로 바꾸어 결과의 후속 공개를 즉시 중단할 수 있다. 닉네임을 비우거나
프로필 자체를 삭제하는 화면·API는 제공하지 않는다. 프로필 삭제, 화면에서 처리할 수 없는 정정·삭제·처리정지와 계정 삭제는 위 접수처로 요청할 수 있다.

## 9. 안전성 확보 조치

운영자는 현재 서비스 범위에서 다음 조치를 적용한다.

1. OAuth `state` 10분·1회 사용, Google PKCE S256·nonce 검증, 공급자 token 비저장과 미사용 Google
   access·refresh token revoke
2. session·CSRF 원문 대신 SHA-256 저장, cookie의 HttpOnly·SameSite=Lax·HTTPS Secure 속성
3. 전략 JSON의 크기·노드·허용 키 검증과 민감정보 열쇠 차단
4. 전략 저장·백테스트의 멱등 키, 소유권 검사, 늦은 응답과 중복 차감 차단
5. 선택적 제품 분석 기본 중단, 과거 test 행의 HMAC 가명·허용 목록·처리정지 삭제
6. 비밀값을 Git에 저장하지 않고 Render 환경변수로 분리
7. 데이터베이스를 같은 Render region의 사설망에 두고 외부 IP 접근 목록을 평소 비움. 복구 사본을 만들
   때만 현재 운영자 IP 하나의 `/32` 또는 `/128`을 임시 허용하고 성공·실패 뒤 다시 비움
8. 운영자 복구 사본은 저장소·cloud 동기화 밖에 두고 Windows 파일 접근권한을 현재 사용자와 SYSTEM으로
   제한함. 사본 자체는 별도로 암호화하지 않음
9. Render·데이터베이스 접근자를 필요한 최소 인원으로 제한하고 접근자가 바뀔 때 재점검
10. 공개 프로필·결과 응답은 명시한 허용 항목만 생성하고, 결과 목록·상세를 읽을 때마다 현재 공개 상태와 소유권을 서버에서 확인하여 비공개 결과를 차단

## 10. 아동의 개인정보

회원 기능은 만 14세 이상만 대상으로 하고 공급자 계정을 확인한 신규 이용자의 가입 마무리에서 이를
체크박스로 자가확인한다. 기존 회원의 재로그인에서는 같은 연령 확인을 반복하거나 기존 시각을 갱신하지
않는다. 비회원 편집과 계산 없는 실행 전 정보 확인에는 연령 정보를 받지 않는다. 만 14세 미만을 위한
회원가입 법정대리인 동의·확인 절차는 제공하지 않는다.
Google·NAVER 프로필은 실명·본인·나이 확인 자료로 사용하지 않으며, 만 14세 이상 표시는 이용자의
자가진술이다.
연령 요건을 충족하지 않은 회원을 알게 되면 필요한 최소 확인 뒤 계정과 연결 개인정보를 삭제하며 관련
문의는 `BLOCKQUANT99@gmail.com`으로 접수한다.

## 11. 개인정보 보호책임자와 피해구제

- 개인정보처리자: `서제훈`
- 개인정보 보호책임자: `서제훈`
- 이메일: `BLOCKQUANT99@gmail.com`
- 전화: `010-4725-4819`
- 주소: `서울특별시 광진구 자양로 5길 33 605호`

정보주체는 운영자의 처리 결과에 이의가 있거나 개인정보 침해에 관한 상담이 필요하면 다음 기관에 문의할
수 있다.

- 개인정보침해신고센터: 국번 없이 118, `https://privacy.kisa.or.kr`
- 개인정보분쟁조정위원회: 1833-6972, `https://www.kopico.go.kr`
- 개인정보보호위원회: `https://www.pipc.go.kr`

## 12. 방침의 변경

운영자는 이 방침의 내용, 버전과 시행일을 서비스에서 계속 확인할 수 있게 한다. 정보주체의 권리에 중대한
영향을 주는 변경은 시행 전 또는 시행 즉시 눈에 띄게 알리고, 그 밖의 변경은 원칙적으로 7일 전에 알린다.
처리 목적·항목·제3자 제공·국외 이전 등 별도 동의가 필요한 사항을 바꾸는 경우에는 법령에 따라 새 동의를
받는다. 현재 staging은 두 공개 문서 version 중 하나가 바뀌면 기존 BLOCKQUANT session을 끝내고 다음
공급자 callback 뒤 해당 계정에 현재 기록이 없는 문서만 다시 받는다. 바뀌지 않은 문서와 연령 확인은
반복하거나 기존 확인 시각을 갱신하지 않는다.

## 13. 변경 이력

| 버전 | 시행일 | 주요 변경 |
|---|---|---|
| `staging-privacy-2026-09-09-v10` | `2026-09-09` | 요청한 백테스트 결과 분석의 전송 항목·목적·전송 시점과 구조화 답변·근거의 24시간 보관 추가. 기존 동의만으로 새 결과 전송 금지 |
| `staging-privacy-2026-09-08-v9` | `2026-09-08` | 실제 등록 모델 목록에 맞춰 GPT-6 Astra를 포함한 네 모델을 명시. 공개 AI 활성화는 별도 검증 뒤 진행 |
| `staging-privacy-2026-09-08-v8` | `2026-09-08` | AI 전략 초안 생성을 위한 OpenAI(미국) 국외 이전과 별도 동의, 이용 모델·실제 전송 항목, 임시 AI 초안 24시간과 정산 원장 보유기간 반영 |
| `staging-privacy-2026-09-02-v6` | `2026-09-02` | Render Free DB 장애·교체에 대비한 국내 운영자 장치의 자동 복구 사본, 최근 성공본 7개 보유·접근 제한·계정 삭제 반영 |
| `staging-privacy-2026-09-01-v5` | `2026-09-01` | 사용자가 직접 저장한 닉네임·소개·중립 기본 아바타의 공개 프로필, 소유자가 명시적으로 공개한 official 백테스트 결과의 공개 범위·철회·계정 삭제 반영 |
| `staging-privacy-2026-08-31-v4` | `2026-08-31` | 실제 Render 로그 보존기간과 분석 비수집 상태를 확정하고 미래 확인 문구 제거 |
| `staging-privacy-2026-08-29-v3` | `2026-08-29` | provider-first 로그인, callback 뒤 최대 10분 가입 마무리 임시 신원·cookie, 신규/current·문서 변경별 확인 범위 반영 |
| `staging-privacy-2026-08-29-v2` | `2026-08-29` | 비회원은 편집·계산 없는 실행 전 확인까지, 실제 백테스트와 무료 횟수는 로그인 계정 기준으로 정정 |
| `staging-privacy-2026-08-28-v1` | `2026-08-28` | 최초 staging 공개안 |

---