16bd2cb92a
- 모노레포 구조 (Turborepo + pnpm): @relink/domain, @relink/shared, @relink/infrastructure, @relink/database, @relink/web - 도메인 레이어: 매장(store), 매칭(matching), 업체(vendor), 보조금(subsidy), 계약/에스크로(contract) TDD 완료 (158 단위 테스트) - 서비스 레이어: 전 도메인 서비스 함수 + 통합 테스트 (58 테스트) - 프론트엔드: Next.js 15 App Router, 13개 페이지 (사용자 6 + 관리자 7) - 인프라: PostgreSQL 16 + PostGIS, Prisma ORM, Docker Compose, AuditLog + OutboxEvent 패턴 - .env 파일 포함 (로컬 개발 기본값만 포함, 실제 시크릿 없음) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
501 lines
28 KiB
Markdown
501 lines
28 KiB
Markdown
# 폐업 정보 공개 정책서
|
|
|
|
> Re:Link MVP — 정보 공개 기준 및 역할별 열람 권한 정책
|
|
> 문서 버전: v1.0.0
|
|
> 최초 작성: 2026-03-07
|
|
> 적용 범위: Phase 1 MVP 전체, Phase 2 데이터 구조 준비 포함
|
|
> DRI: 대표 (정책), CTO (기술 구현)
|
|
|
|
---
|
|
|
|
## 목차
|
|
|
|
1. [정보 공개 등급 체계](#1-정보-공개-등급-체계)
|
|
2. [역할별 열람 범위 매트릭스](#2-역할별-열람-범위-매트릭스)
|
|
3. [데이터 항목별 공개 등급 분류](#3-데이터-항목별-공개-등급-분류)
|
|
4. [공개 시점 규칙](#4-공개-시점-규칙)
|
|
5. [동의 체계](#5-동의-체계)
|
|
6. [열람 이력 기록](#6-열람-이력-기록)
|
|
7. [API 응답 필터링 원칙](#7-api-응답-필터링-원칙)
|
|
8. [개인정보보호법 준수](#8-개인정보보호법-준수)
|
|
|
|
---
|
|
|
|
## 1. 정보 공개 등급 체계
|
|
|
|
Re:Link는 폐업자의 민감한 정보를 보호하면서 거래 목적에 맞는 정보만 단계적으로 공개하는 4단계 등급 체계를 운영한다. 폐업 등록 즉시 모든 정보가 공개되지 않으며, 매칭 진행 상황과 역할에 따라 정보 접근이 제한적으로 확대된다.
|
|
|
|
### 1-1. 등급 정의
|
|
|
|
| 등급 | 코드 | 열람 대상 | 목적 |
|
|
|------|------|-----------|------|
|
|
| 공개 요약 | `PUBLIC_SUMMARY` | 인증 여부 무관, 접근 가능한 모든 사용자 | 매장 탐색 및 관심 유도 |
|
|
| 제한 공개 | `RESTRICTED` | 역할 인증이 완료된 플랫폼 회원 | 매칭 의사결정을 위한 상세 정보 제공 |
|
|
| 매칭 전용 | `MATCHED_ONLY` | 매칭 수락이 완료된 당사자 양측 | 실제 거래 진행에 필요한 연락 및 계약 정보 |
|
|
| 내부 전용 | `INTERNAL` | 운영자 및 시스템 자동 처리 | 감사, 컴플라이언스, 내부 운영 |
|
|
|
|
### 1-2. 등급별 상세 기준
|
|
|
|
#### PUBLIC_SUMMARY — 공개 요약
|
|
|
|
누구나 볼 수 있는 비식별화된 요약 정보다. 상세 주소 대신 지역 클러스터 단위(예: 역삼·선릉권)를 표시하며, 임대 금액 대신 범위(예: 보증금 1억~2억대)만 표시한다.
|
|
|
|
- 포함: 지역 클러스터, 업종 분류, 전용면적 범위, 대표 사진 1장, 폐업 예정 시기 범위(월 단위), 시설 키워드(예: 주방 있음, 덕트 있음)
|
|
- 제외: 정확한 주소, 동호수, 연락처, 정확한 임대 금액, 폐업 사유, 소유자 개인정보
|
|
|
|
#### RESTRICTED — 제한 공개
|
|
|
|
역할 인증이 완료된 플랫폼 회원에게 공개하는 상세 정보다. 거래 의향을 판단할 수 있는 수준의 정보를 제공하되, 직접 연락은 불가능하다.
|
|
|
|
- 포함: 시설 상세(전용면적 정확값, 좌석 수, 설비 목록, 층수, 주차), 임대 조건 개요(보증금·월세·권리금 정확값, 잔여 임대기간), 내부 사진 전체, 폐업 예정일(일 단위), 폐업 사유 유형(경영악화/임대만료/이전 등 분류 수준), 인수 가능일
|
|
- 제외: 상세 주소(동호수), 소유자 연락처, 임대인 정보, 사업자등록 번호
|
|
|
|
#### MATCHED_ONLY — 매칭 전용
|
|
|
|
매칭 요청이 수락되어 계약 절차가 시작된 당사자 양측에게만 공개하는 정보다. 이 단계부터 직접 연락과 현장 방문이 가능하다.
|
|
|
|
- 포함: 상세 주소(동호수 포함), 소유자 연락처(전화, 이메일), 임대인 정보(운영자 중개 시), 사업자등록번호(계약 목적), 추가 현장 사진 및 도면, 임대차 계약서 사본(운영자 검토 후 제공)
|
|
- 제외: 정부 지원금 수령 정보, 세금 관련 내부 메모, 타 매칭 이력
|
|
|
|
#### INTERNAL — 내부 전용
|
|
|
|
운영자와 시스템만 접근 가능한 정보다. 외부에 절대 노출되어서는 안 되며, 접근 시마다 감사 로그가 생성된다.
|
|
|
|
- 포함: 운영자 내부 메모, 반려 사유 상세, 검토 히스토리, 개인정보 원본(주민등록번호 등), 정부 지원금 수령 내역 및 금액, 세금계산서 정보, 분쟁 처리 내부 기록, 시스템 감사 로그 전체, 법적 처리 관련 서류
|
|
|
|
---
|
|
|
|
## 2. 역할별 열람 범위 매트릭스
|
|
|
|
아래 매트릭스는 각 사용자 역할이 각 공개 등급 정보를 열람할 수 있는지를 나타낸다. O는 열람 가능, X는 열람 불가, C는 조건부 열람(별도 조건 명시)을 의미한다.
|
|
|
|
| 역할 | PUBLIC_SUMMARY | RESTRICTED | MATCHED_ONLY | INTERNAL |
|
|
|------|:--------------:|:----------:|:------------:|:--------:|
|
|
| 비인증 방문자 | O | X | X | X |
|
|
| CLOSING_OWNER (본인 매장) | O | O | O | X |
|
|
| CLOSING_OWNER (타인 매장) | O | X | X | X |
|
|
| FOUNDER (창업자) | O | O | C¹ | X |
|
|
| VENDOR_MANAGER (철거/인테리어) | O | C² | C³ | X |
|
|
| OPS_MANAGER | O | O | O | O |
|
|
| SUBSIDY_OPERATOR | O | O | C⁴ | C⁵ |
|
|
| TRUST_OPERATOR | O | O | O | C⁶ |
|
|
| FINANCE_OPERATOR | O | O | C⁷ | C⁸ |
|
|
| SUPER_ADMIN | O | O | O | O |
|
|
|
|
**조건 주석**
|
|
|
|
- C¹: 창업자(FOUNDER)가 해당 매장에 대해 매칭 요청을 보내고 폐업자가 수락한 경우에만 열람 가능
|
|
- C²: 역할 인증(업체 인증)이 완료된 VENDOR_MANAGER만 열람 가능. 미인증 업체는 PUBLIC_SUMMARY만 접근
|
|
- C³: VENDOR_MANAGER는 철거 또는 인테리어 견적 요청이 매칭 수락된 경우에만 열람 가능. 단, 연락처는 운영자 중개 방식으로만 제공
|
|
- C⁴: SUBSIDY_OPERATOR는 해당 매장의 지원금 케이스가 할당된 경우에만 MATCHED_ONLY 열람 가능
|
|
- C⁵: SUBSIDY_OPERATOR는 지원금 관련 정보(INTERNAL 중 지원금 항목)만 열람 가능. 일반 내부 메모와 분쟁 기록은 접근 불가
|
|
- C⁶: TRUST_OPERATOR는 분쟁·계약·검수 처리 목적의 INTERNAL 항목만 열람 가능. 재무 정보는 접근 불가
|
|
- C⁷: FINANCE_OPERATOR는 결제·정산 관련 MATCHED_ONLY 정보(사업자등록번호, 계좌 정보)만 열람 가능
|
|
- C⁸: FINANCE_OPERATOR는 세금계산서, 에스크로 거래 내역, 정산 로그만 열람 가능. 분쟁·감사 로그 전체는 접근 불가
|
|
|
|
---
|
|
|
|
## 3. 데이터 항목별 공개 등급 분류
|
|
|
|
### 3-1. 매장 기본 정보
|
|
|
|
| 항목 | 공개 등급 | 비고 |
|
|
|------|----------|------|
|
|
| 매장 제목 (상호 제외) | PUBLIC_SUMMARY | "역삼동 1층 카페" 형식, 상호명은 제외 |
|
|
| 업종 분류 (대분류) | PUBLIC_SUMMARY | F&B, 소매업 등 |
|
|
| 업종 분류 (중·세분류) | RESTRICTED | 커피전문점, 한식당 등 |
|
|
| 지역 클러스터 | PUBLIC_SUMMARY | 구·상권 단위, 동 단위 이상은 RESTRICTED |
|
|
| 정확한 주소 (동·번지) | RESTRICTED | |
|
|
| 상세 주소 (호수·층·동) | MATCHED_ONLY | |
|
|
| 상호명 | MATCHED_ONLY | 계약 및 권리금 협상 목적 |
|
|
| 사업자등록번호 | MATCHED_ONLY | 계약 목적으로만 제공 |
|
|
| 매장 등록 날짜 | RESTRICTED | |
|
|
|
|
### 3-2. 시설 정보
|
|
|
|
| 항목 | 공개 등급 | 비고 |
|
|
|------|----------|------|
|
|
| 전용면적 (범위, 10평 단위) | PUBLIC_SUMMARY | 예: 30~40평대 |
|
|
| 전용면적 (정확값, ㎡·평) | RESTRICTED | |
|
|
| 건물 층수 | RESTRICTED | |
|
|
| 주차 가능 여부 | PUBLIC_SUMMARY | |
|
|
| 주차 대수 | RESTRICTED | |
|
|
| 좌석 수 (범위) | PUBLIC_SUMMARY | |
|
|
| 좌석 수 (정확값) | RESTRICTED | |
|
|
| 주방 설비 유무 | PUBLIC_SUMMARY | 유/무만 표시 |
|
|
| 주방 설비 상세 | RESTRICTED | 장비 목록, 상태 |
|
|
| 전기 용량 | RESTRICTED | |
|
|
| 가스 공급 여부 | PUBLIC_SUMMARY | |
|
|
| 가스 용량 및 종류 | RESTRICTED | |
|
|
| 배수 설비 | RESTRICTED | |
|
|
| 덕트 설비 | PUBLIC_SUMMARY | 유/무만 표시 |
|
|
| 덕트 상세 스펙 | RESTRICTED | |
|
|
| 냉난방 설비 | RESTRICTED | |
|
|
| 기타 설비 목록 | RESTRICTED | |
|
|
|
|
### 3-3. 임대 정보
|
|
|
|
| 항목 | 공개 등급 | 비고 |
|
|
|------|----------|------|
|
|
| 보증금 (억 단위 범위) | PUBLIC_SUMMARY | 예: 1억~2억대 |
|
|
| 보증금 (정확값) | RESTRICTED | |
|
|
| 월세 (만 단위 범위) | PUBLIC_SUMMARY | 예: 200~300만 원대 |
|
|
| 월세 (정확값) | RESTRICTED | |
|
|
| 관리비 유무 | PUBLIC_SUMMARY | |
|
|
| 관리비 정확값 | RESTRICTED | |
|
|
| 권리금 존재 여부 | PUBLIC_SUMMARY | 유/무만 표시 |
|
|
| 권리금 정확값 | RESTRICTED | |
|
|
| 잔여 임대기간 (개월 단위 범위) | PUBLIC_SUMMARY | 예: 6~12개월 |
|
|
| 잔여 임대기간 (정확값) | RESTRICTED | |
|
|
| 임대차 계약 만료일 | RESTRICTED | |
|
|
| 임대인 정보 (성명, 연락처) | MATCHED_ONLY | 운영자 중개 방식으로만 제공 |
|
|
| 임대차 계약서 사본 | MATCHED_ONLY | 운영자 검토 후 제공 |
|
|
|
|
### 3-4. 사진
|
|
|
|
| 항목 | 공개 등급 | 비고 |
|
|
|------|----------|------|
|
|
| 대표 사진 (외관) 1장 | PUBLIC_SUMMARY | 주소 특정 불가한 앵글로 운영자 검수 |
|
|
| 대표 사진 (내부 전경) 1장 | PUBLIC_SUMMARY | |
|
|
| 내부 전체 사진 | RESTRICTED | |
|
|
| 주방 설비 사진 | RESTRICTED | |
|
|
| 외관 전체 사진 (간판 포함) | RESTRICTED | 상호 노출 포함 가능 |
|
|
| 도면 및 평면도 | RESTRICTED | |
|
|
| 설비 상세 사진 | RESTRICTED | |
|
|
| 현장 추가 사진 (매칭 후 요청) | MATCHED_ONLY | |
|
|
|
|
> 사진 분류 시 `StorePhoto.visibilityScope` 필드를 기준으로 서버에서 필터링하며, 사진 업로드 단계에서 폐업자가 카테고리를 지정하고 운영자가 최종 검수한다.
|
|
|
|
### 3-5. 폐업 관련 정보
|
|
|
|
| 항목 | 공개 등급 | 비고 |
|
|
|------|----------|------|
|
|
| 폐업 예정 시기 (월 단위) | PUBLIC_SUMMARY | |
|
|
| 폐업 예정일 (일 단위) | RESTRICTED | |
|
|
| 인수 가능일 | RESTRICTED | |
|
|
| 철거 예정일 | RESTRICTED | |
|
|
| 폐업 사유 유형 (경영악화/임대만료/이전 등) | RESTRICTED | 세부 사유는 INTERNAL |
|
|
| 폐업 사유 상세 서술 | INTERNAL | |
|
|
| 폐업 확인서 등 공문서 | INTERNAL | |
|
|
|
|
### 3-6. 정부 지원금 관련 정보
|
|
|
|
모든 정부 지원금 관련 정보는 INTERNAL 등급이며, SUBSIDY_OPERATOR 이상의 운영자만 접근 가능하다.
|
|
|
|
| 항목 | 공개 등급 | 비고 |
|
|
|------|----------|------|
|
|
| 지원금 신청 자격 여부 | INTERNAL | |
|
|
| 신청 대상 지원금 목록 | INTERNAL | |
|
|
| 제출 서류 및 상태 | INTERNAL | |
|
|
| 지원금 수령 금액 및 내역 | INTERNAL | |
|
|
| 운영자 검토 메모 | INTERNAL | |
|
|
|
|
> 폐업자에게는 지원금 신청 과정에서 본인의 케이스 상태(체크리스트 완료 여부, 운영자 검토 결과)는 별도 지원금 전용 화면에서 확인 가능하다. 이 화면은 공개 등급 체계와 별도로 동작하는 개인화 뷰이며, 타인에게 노출되지 않는다.
|
|
|
|
### 3-7. 연락처 및 개인정보
|
|
|
|
| 항목 | 공개 등급 | 비고 |
|
|
|------|----------|------|
|
|
| 전화번호 | MATCHED_ONLY | 운영자 중개 방식 우선 권장 |
|
|
| 이메일 | MATCHED_ONLY | |
|
|
| 성명 | MATCHED_ONLY | 계약 목적으로만 제공 |
|
|
| 주민등록번호 / 생년월일 | INTERNAL | 본인확인 목적, 암호화 저장 |
|
|
| 계좌번호 | INTERNAL | 정산 목적, 암호화 저장 |
|
|
|
|
---
|
|
|
|
## 4. 공개 시점 규칙
|
|
|
|
매장의 `publicationStatus`와 `reviewStatus`의 조합에 따라 공개 범위가 결정된다. 공개 상태의 전환은 운영자 또는 시스템이 `AuditLog`와 함께 기록한다.
|
|
|
|
### 4-1. 상태별 공개 범위
|
|
|
|
| 매장 상태 | 공개 범위 | 접근 가능 역할 |
|
|
|-----------|----------|----------------|
|
|
| `DRAFT` | 공개 없음 | 본인(CLOSING_OWNER) + 운영자 |
|
|
| `SUBMITTED` | 공개 없음 | 본인(CLOSING_OWNER) + 운영자 |
|
|
| `REVIEWING` | 공개 없음 | 본인(CLOSING_OWNER) + 운영자 |
|
|
| `APPROVED` + `PUBLISHED` | 공개 등급에 따라 역할별 노출 | 역할 매트릭스 참조 |
|
|
| `APPROVED` + `PRIVATE` | 공개 없음 | 본인(CLOSING_OWNER) + 운영자 |
|
|
| 매칭 수락 완료 | MATCHED_ONLY 정보 해제 | 매칭 당사자 양측 + 운영자 |
|
|
| `UNPUBLISHED` | 기존 매칭 당사자 외 비공개 | 기존 매칭 당사자 + 운영자 |
|
|
| `CLOSED` / `CANCELLED` | 운영자만 | 운영자 전용 |
|
|
|
|
### 4-2. 공개 전환 규칙
|
|
|
|
- DRAFT → SUBMITTED: 폐업자가 직접 제출. 공개 범위 변동 없음.
|
|
- SUBMITTED → REVIEWING: 운영자가 검토 시작. 공개 범위 변동 없음.
|
|
- REVIEWING → APPROVED: 운영자가 승인. `publicationStatus`는 여전히 `PRIVATE`이며, 폐업자가 공개 동의 후 `PUBLISHED`로 전환.
|
|
- APPROVED + PRIVATE → APPROVED + PUBLISHED: 폐업자의 정보 공개 동의 완료 시점에 자동 전환. 이 시점부터 역할 매트릭스에 따른 공개 시작.
|
|
- PUBLISHED → MATCHING: 매칭 요청이 수락되어도 publicationStatus는 유지. MATCHED_ONLY 정보만 추가 해제.
|
|
- PUBLISHED → UNPUBLISHED: 폐업자 요청 또는 운영자 결정. 기존 매칭 진행 중인 당사자에게는 MATCHED_ONLY 정보 유지, 신규 접근자에게는 PUBLIC_SUMMARY도 비공개.
|
|
|
|
### 4-3. MATCHED_ONLY 정보 해제 조건
|
|
|
|
MATCHED_ONLY 정보는 아래 조건이 모두 충족될 때 해당 당사자에게만 해제된다.
|
|
|
|
1. 매칭 요청의 상태가 `ACCEPTED`로 전환되었을 것
|
|
2. 폐업자(CLOSING_OWNER)가 정보 공개 동의를 완료했을 것 (최초 PUBLISHED 전환 시 동의 수집)
|
|
3. 상대방(FOUNDER 또는 VENDOR_MANAGER)이 플랫폼 이용약관과 개인정보 처리방침에 동의했을 것
|
|
|
|
VENDOR_MANAGER의 경우 연락처는 운영자 중개 방식을 우선 사용하며, 운영자가 직접 연결을 승인한 경우에만 직접 노출한다.
|
|
|
|
### 4-4. 매장 삭제 및 비공개 전환 시 처리
|
|
|
|
- 폐업자가 매장을 `UNPUBLISHED`로 전환하면 즉시 검색 결과에서 제거된다.
|
|
- 기존에 `ACCEPTED` 상태인 매칭이 있는 경우, 해당 매칭 당사자에게는 MATCHED_ONLY 정보가 유지되며 운영자에게 알림이 발송된다.
|
|
- 매장 데이터는 실제로 삭제되지 않으며, `publicationStatus`만 변경된다. 법적 보관 의무 기간 동안 INTERNAL 접근으로 유지된다.
|
|
|
|
---
|
|
|
|
## 5. 동의 체계
|
|
|
|
### 5-1. 동의 수집 항목
|
|
|
|
Re:Link는 `UserConsent` 모델을 통해 동의 유형별로 수집 시점, 버전, 철회 가능 여부를 관리한다.
|
|
|
|
| 동의 항목 | `consentType` 코드 | 수집 시점 | 철회 가능 여부 |
|
|
|----------|-------------------|-----------|----------------|
|
|
| 서비스 이용약관 동의 | `TERMS_OF_SERVICE` | 회원가입 시 | 회원 탈퇴로만 가능 |
|
|
| 개인정보 처리방침 동의 (필수) | `PRIVACY_POLICY_REQUIRED` | 회원가입 시 | 회원 탈퇴로만 가능 |
|
|
| 개인정보 처리방침 동의 (마케팅) | `PRIVACY_POLICY_MARKETING` | 회원가입 시 (선택) | 언제든지 철회 가능 |
|
|
| 정보 공개 동의 (매장 공개) | `STORE_PUBLICATION_CONSENT` | 최초 공개 전환 직전 | 매장 비공개 전환으로 실질 효력 중단 |
|
|
| MATCHED_ONLY 정보 제공 동의 | `MATCHED_INFO_DISCLOSURE` | 매칭 수락 직전 | 매칭 취소 시 효력 중단 |
|
|
| 제3자 정보 제공 동의 (매칭 상대방) | `THIRD_PARTY_MATCHED_PARTY` | 매칭 수락 직전 | 매칭 취소 시 효력 중단 |
|
|
| 알림톡 수신 동의 | `NOTIFICATION_KAKAO` | 회원가입 시 (선택) | 언제든지 철회 가능 |
|
|
|
|
### 5-2. 동의 수집 방법
|
|
|
|
- 동의 항목은 체크박스 형식으로 표시하며, 선택 동의와 필수 동의를 시각적으로 명확히 구분한다.
|
|
- 동의서 본문 전체를 읽을 수 있어야 하며, 요약본과 전문(全文)을 함께 제공한다.
|
|
- 동의 완료 시 `UserConsent` 레코드에 `policyVersionId`, `isGranted: true`, `grantedAt` 타임스탬프, 동의 당시 클라이언트 정보(IP, User-Agent)를 저장한다.
|
|
- 동의 화면을 건너뛰거나 묵시적으로 동의 처리하지 않는다.
|
|
|
|
### 5-3. 정책 버전 관리
|
|
|
|
정책 본문이 변경될 때마다 `policyVersionId`를 새로 부여하며, 주요 변경의 경우 기존 동의자에게 재동의를 요청한다.
|
|
|
|
| 변경 유형 | 대응 방식 |
|
|
|-----------|----------|
|
|
| 오탈자 수정, 법령 명칭 변경 등 경미한 수정 | 버전 업데이트 후 고지만 진행 (재동의 불요) |
|
|
| 수집 항목 추가, 이용 목적 변경 등 실질적 변경 | 버전 업데이트 + 기존 동의자 재동의 요청, 미동의 시 해당 기능 이용 제한 |
|
|
| 제3자 제공 범위 확대 | 버전 업데이트 + 전원 재동의 필수 |
|
|
|
|
### 5-4. 동의 철회 시 처리
|
|
|
|
- 철회 요청은 즉시 처리되며, `UserConsent.isGranted`를 `false`로 업데이트하고 `revokedAt` 타임스탬프를 기록한다.
|
|
- `STORE_PUBLICATION_CONSENT` 철회 시: 해당 매장의 `publicationStatus`를 즉시 `PRIVATE`으로 전환하고, 진행 중인 매칭이 있으면 운영자에게 알림을 발송한다.
|
|
- `MATCHED_INFO_DISCLOSURE` 철회 시: 철회 시점 이후 새로운 매칭에는 MATCHED_ONLY 정보를 제공하지 않는다. 이미 정보를 열람한 매칭 당사자의 열람 이력은 삭제되지 않는다.
|
|
- 마케팅 동의 철회는 즉시 효력이 발생하며 영업일 기준 3일 이내에 마케팅 수신이 중단된다.
|
|
- 동의 철회 이력(이전 동의 기록)은 법적 보관 의무에 따라 일정 기간 유지된다.
|
|
|
|
---
|
|
|
|
## 6. 열람 이력 기록
|
|
|
|
### 6-1. 기록 원칙
|
|
|
|
모든 RESTRICTED 등급 이상의 정보 열람은 `AuditLog`에 기록된다. PUBLIC_SUMMARY 열람은 집계 통계로만 처리하며, 개인 단위 기록은 남기지 않는다.
|
|
|
|
### 6-2. AuditLog 기록 항목
|
|
|
|
| 필드 | 내용 | 비고 |
|
|
|------|------|------|
|
|
| `id` | 고유 감사 로그 ID | |
|
|
| `actorId` | 열람자 사용자 ID | |
|
|
| `actorRole` | 열람자 역할 | |
|
|
| `targetType` | 열람 대상 엔티티 타입 | `STORE`, `STORE_PHOTO`, `MATCH_REQUEST` 등 |
|
|
| `targetId` | 열람 대상 엔티티 ID | |
|
|
| `action` | 수행한 행동 | `VIEW`, `DOWNLOAD`, `EXPORT`, `ADMIN_OVERRIDE` |
|
|
| `visibilityScope` | 열람한 정보의 등급 | `RESTRICTED`, `MATCHED_ONLY`, `INTERNAL` |
|
|
| `fieldAccessed` | 열람한 특정 필드 목록 | JSON 배열 |
|
|
| `ipAddress` | 열람자 IP | 마스킹 처리 후 저장 |
|
|
| `userAgent` | 클라이언트 정보 | |
|
|
| `requestId` | API 요청 추적 ID | |
|
|
| `createdAt` | 열람 시각 | UTC 기준 |
|
|
|
|
### 6-3. B2B 알림 상품을 위한 데이터 준비 (Phase 2 준비)
|
|
|
|
Phase 1 MVP에서는 B2B 알림 상품을 출시하지 않는다. 단, Phase 2에서 "지역·업종별 폐업 예정 정보 알림" 구독 상품을 출시할 수 있도록 아래 데이터 구조를 지금부터 축적한다.
|
|
|
|
**축적할 데이터:**
|
|
|
|
| 데이터 항목 | 용도 | 공개 등급 |
|
|
|------------|------|----------|
|
|
| 지역 클러스터별 매장 등록 건수 | 지역별 수요 파악 | INTERNAL (집계값) |
|
|
| 업종별 매장 등록 트렌드 | 알림 상품 단가 설정 | INTERNAL (집계값) |
|
|
| `AlertSubscription` 관심 등록 수 | 잠재 구독자 규모 파악 | INTERNAL |
|
|
| 매장별 열람 횟수 (역할별) | 콘텐츠 수요 측정 | INTERNAL (집계값) |
|
|
| VENDOR_MANAGER의 관심 표시 이력 | 리드 품질 측정 | INTERNAL |
|
|
|
|
**B2B 알림 상품 정책 원칙 (Phase 2 적용 예정):**
|
|
|
|
- 알림 발송 대상은 익명화된 집계 정보(지역·업종·시설 유형)에 한정하며, 개인 식별 정보(상호명, 주소, 연락처)는 구독만으로 제공하지 않는다.
|
|
- 구독자가 관심 매장에 매칭 요청을 보내고 수락된 경우에만 MATCHED_ONLY 정보 접근이 허용된다.
|
|
- 원본 개인정보를 B2B 데이터로 직접 판매하거나 제3자에게 제공하지 않는다.
|
|
|
|
### 6-4. 열람 이력 보관 기간
|
|
|
|
| 정보 등급 | 보관 기간 | 근거 |
|
|
|----------|----------|------|
|
|
| PUBLIC_SUMMARY 집계 통계 | 5년 | 서비스 품질 분석 |
|
|
| RESTRICTED 열람 이력 | 3년 | 분쟁 소멸시효 고려 |
|
|
| MATCHED_ONLY 열람 이력 | 5년 | 계약 분쟁 대응 |
|
|
| INTERNAL 열람 이력 | 10년 | 법적 감사 의무 |
|
|
|
|
---
|
|
|
|
## 7. API 응답 필터링 원칙
|
|
|
|
### 7-1. 서버 사이드 필터링 원칙
|
|
|
|
정보 공개 등급에 따른 필드 필터링은 반드시 서버에서 처리한다. 클라이언트(프론트엔드)에서 조건부로 UI를 숨기는 방식은 보안 통제 수단으로 인정하지 않는다.
|
|
|
|
- API 응답 생성 시 호출자의 역할(`actorRole`)과 매장과의 관계(`matchStatus`)를 검사한다.
|
|
- 공개 등급을 초과하는 필드는 응답 객체에서 제거(삭제)하며, `null` 또는 마스킹된 값으로 대체하지 않는다.
|
|
- 단, 사용자 경험을 위해 접근 불가 필드가 존재함을 클라이언트에 알려야 할 경우에는 `_restricted: true` 메타 플래그를 해당 필드 위치에 포함할 수 있다.
|
|
|
|
### 7-2. 필터링 레이어 구조
|
|
|
|
```
|
|
HTTP 요청
|
|
→ 인증 미들웨어 (세션/토큰 검증)
|
|
→ 인가 미들웨어 (역할 + 매장 관계 확인)
|
|
→ 서비스 레이어 (비즈니스 로직)
|
|
→ 응답 직렬화 레이어 (visibilityScope 기준 필드 필터링)
|
|
→ HTTP 응답
|
|
```
|
|
|
|
응답 직렬화 레이어에서 `visibilityScope`와 호출자의 접근 등급을 대조하여 필드를 제거한다. 이 레이어는 도메인 로직과 분리된 별도 계층으로 구현한다.
|
|
|
|
### 7-3. 캐시 레이어에서의 개인정보 노출 방지
|
|
|
|
- RESTRICTED 이상의 정보를 포함한 API 응답은 공유 캐시(Redis, CDN)에 저장하지 않는다.
|
|
- PUBLIC_SUMMARY 응답만 공유 캐시에 저장 가능하며, 캐시 키에 사용자 식별자가 포함되지 않도록 한다.
|
|
- MATCHED_ONLY 및 INTERNAL 응답은 캐시를 완전히 비활성화하고, `Cache-Control: no-store` 헤더를 반드시 포함한다.
|
|
- 사용자별 개인화 캐시가 필요한 경우, 캐시 키에 사용자 ID와 매칭 관계 해시를 포함하여 다른 사용자에게 노출되지 않도록 격리한다.
|
|
|
|
### 7-4. 사진 접근 제어
|
|
|
|
- 사진 파일 자체는 서명된 URL(Signed URL)로만 제공하며, 직접 URL을 통한 무제한 접근을 허용하지 않는다.
|
|
- 서명 URL의 만료 시간: PUBLIC_SUMMARY 사진 24시간, RESTRICTED 사진 1시간, MATCHED_ONLY 사진 1시간
|
|
- 서명 URL 생성 시마다 AuditLog를 기록한다.
|
|
- 서명 URL이 만료된 이후에는 재생성 API를 통해서만 접근 가능하며, 재생성 시에도 동일한 권한 검사를 수행한다.
|
|
|
|
### 7-5. 관리자 직접 접근 시 추가 보호
|
|
|
|
INTERNAL 정보에 접근하는 운영자 API는 아래 추가 보호를 적용한다.
|
|
|
|
- 운영자 계정에 대한 다단계 인증(MFA) 필수
|
|
- 접근 사유 코드를 API 요청 파라미터로 반드시 포함
|
|
- 모든 접근을 AuditLog에 기록하며 실시간 모니터링 알림 설정
|
|
- 개인정보 원본(주민등록번호, 계좌번호) 조회는 SUPER_ADMIN과 TRUST_OPERATOR(사유 코드 포함 시)만 가능
|
|
|
|
---
|
|
|
|
## 8. 개인정보보호법 준수
|
|
|
|
### 8-1. PII 식별 및 분리 저장
|
|
|
|
Re:Link에서 개인정보(PII)로 분류하는 항목과 저장 방식은 아래와 같다.
|
|
|
|
| 분류 | 항목 | 저장 방식 | 접근 통제 |
|
|
|------|------|----------|----------|
|
|
| 식별 정보 | 성명, 이메일, 전화번호 | 암호화 저장 (AES-256) | MATCHED_ONLY 이상 |
|
|
| 고유 식별자 | 주민등록번호 | 단방향 해시 + 분리 저장 | INTERNAL, SUPER_ADMIN만 |
|
|
| 금융 정보 | 계좌번호, 카드 정보 | PG사 위탁 또는 토큰화 | INTERNAL, FINANCE_OPERATOR만 |
|
|
| 위치 정보 | 상세 주소 | 암호화 저장 | MATCHED_ONLY 이상 |
|
|
| 사업자 정보 | 사업자등록번호 | 평문 저장 (공개 정보) | MATCHED_ONLY 이상 |
|
|
|
|
사업자등록번호는 공개 정보이나, Re:Link 내에서는 계약 목적으로만 사용하며 검색 노출은 MATCHED_ONLY로 제한한다.
|
|
|
|
### 8-2. 개인정보 수집 및 이용 목적
|
|
|
|
Re:Link가 수집하는 개인정보는 아래 목적으로만 사용한다.
|
|
|
|
| 수집 목적 | 해당 항목 | 보관 기간 |
|
|
|----------|----------|----------|
|
|
| 서비스 회원 관리 및 인증 | 이메일, 전화번호, 소셜 계정 ID | 회원 탈퇴 후 30일 |
|
|
| 매장 등록 및 매칭 서비스 제공 | 성명, 전화번호, 이메일, 상세 주소 | 거래 종료 후 5년 |
|
|
| 계약 이행 및 정산 | 사업자등록번호, 계좌번호 | 계약 종료 후 5년 (세법 기준) |
|
|
| 정부 지원금 신청 보조 | 개인 서류 일체 | 지원금 케이스 종료 후 5년 |
|
|
| 분쟁 처리 및 법적 대응 | 관련 기록 전체 | 분쟁 종료 후 5년 |
|
|
| 서비스 개선 및 통계 분석 | 익명화된 이용 이력 | 5년 |
|
|
|
|
### 8-3. 개인정보 보관 기간 및 파기 정책
|
|
|
|
- 회원 탈퇴 시: 서비스 이용 기록은 탈퇴 후 30일 이내 파기. 단, 진행 중인 거래, 계약, 분쟁이 있는 경우 해당 케이스 종료 후 법정 보관 기간을 적용한다.
|
|
- 매장 등록 정보: 거래 종료(CLOSED/CANCELLED) 후 5년. 운영자가 법적 근거를 문서화한 경우에 한해 연장 가능.
|
|
- 정부 지원금 관련 서류: 서류에 명시된 법정 보관 기간을 우선 적용하며, 최소 5년.
|
|
- 파기 방법: DB에 저장된 데이터는 완전 삭제(DELETE) 처리하며, 파일 스토리지의 파일은 영구 삭제 후 파기 이력을 별도 로그로 보관한다.
|
|
- 자동 파기 스케줄러를 운영하며, 파기 실행 결과를 운영자가 확인할 수 있는 보고서를 제공한다.
|
|
|
|
### 8-4. 제3자 제공 시 동의 요건
|
|
|
|
개인정보의 제3자 제공은 아래 경우에만 허용된다.
|
|
|
|
| 제공 유형 | 제공 조건 | 동의 요건 |
|
|
|----------|----------|----------|
|
|
| 매칭 상대방 (창업자/폐업자 간) | 매칭 수락 완료 | 사전 동의 (`THIRD_PARTY_MATCHED_PARTY`) 필수 |
|
|
| 철거/인테리어 업체 | 운영자 승인 + 매칭 수락 | 사전 동의 + 운영자 승인 |
|
|
| 정부 기관 (법적 요청) | 수사·법원 요청 등 법적 의무 | 동의 불요, 운영자 승인 + 법무 검토 |
|
|
| 정산·결제 대행사 (PG사) | 결제 처리 목적 | 서비스 이용약관에 포함 (별도 동의 불요) |
|
|
| 통계·분석 서비스 (익명화) | 개인 식별 불가한 집계 데이터 | 동의 불요 |
|
|
|
|
B2B 알림 상품 출시 시(Phase 2) 업체에 대한 정보 제공 범위가 확대될 수 있으며, 이 경우 반드시 별도 동의를 재수집해야 한다.
|
|
|
|
### 8-5. 개인정보 처리 위탁
|
|
|
|
Re:Link가 개인정보 처리를 위탁하는 수탁자와 위탁 업무 범위는 개인정보 처리방침에 공개한다.
|
|
|
|
| 수탁자 | 위탁 업무 |
|
|
|--------|----------|
|
|
| 토스페이먼츠 | 결제 처리 및 에스크로 관리 |
|
|
| AWS / IDC 사업자 | 데이터 보관 및 인프라 운영 |
|
|
| 카카오 | 알림톡 발송 |
|
|
| 소셜 로그인 제공자 (Kakao, Naver, Google) | 본인인증 및 계정 연동 |
|
|
|
|
수탁자는 위탁 받은 업무 범위 외에 개인정보를 이용하거나 제3자에게 제공하지 않는다. 위탁 계약 체결 시 개인정보 보호 의무를 계약서에 명시한다.
|
|
|
|
### 8-6. 정보주체의 권리
|
|
|
|
폐업자를 포함한 모든 사용자는 아래 권리를 행사할 수 있다.
|
|
|
|
| 권리 | 요청 방법 | 처리 기한 |
|
|
|------|----------|----------|
|
|
| 열람 요청 | 앱 내 개인정보 관리 메뉴 또는 운영자 이메일 | 10일 이내 |
|
|
| 정정·삭제 요청 | 앱 내 개인정보 관리 메뉴 | 10일 이내 |
|
|
| 처리 정지 요청 | 운영자 이메일 | 10일 이내 |
|
|
| 동의 철회 | 앱 내 동의 관리 메뉴 | 즉시 처리 |
|
|
|
|
---
|
|
|
|
## 부록: 용어 정의
|
|
|
|
| 용어 | 정의 |
|
|
|------|------|
|
|
| CLOSING_OWNER | 폐업 매장을 등록한 사용자. 본인이 등록한 매장에 대해서는 RESTRICTED 등급까지 기본 접근 권한을 가짐 |
|
|
| FOUNDER | 창업 목적으로 매장 인수를 탐색하는 사용자 |
|
|
| VENDOR_MANAGER | 철거 또는 인테리어 서비스를 제공하는 업체의 담당자. 업체 인증 완료 후 RESTRICTED 접근 가능 |
|
|
| OPS_MANAGER | 매장 등록 검토, 매칭 보정, 운영 품질을 담당하는 운영자 |
|
|
| SUBSIDY_OPERATOR | 정부 지원금 서류 검토 및 상태 관리를 담당하는 운영자 |
|
|
| TRUST_OPERATOR | 업체 인증, 계약, 검수, 분쟁을 담당하는 운영자 |
|
|
| FINANCE_OPERATOR | 정산, 결제 대사, 환불을 담당하는 운영자 |
|
|
| SUPER_ADMIN | 전체 시스템 설정 및 긴급 조치 권한을 가진 최고 관리자 |
|
|
| visibilityScope | 데이터 항목(특히 사진)에 부여된 공개 등급 필드 |
|
|
| publicationStatus | 매장 전체의 공개 상태 (PRIVATE, RESTRICTED, PUBLISHED, UNPUBLISHED) |
|
|
| reviewStatus | 운영자 검토 상태 (DRAFT, SUBMITTED, REVIEWING, APPROVED, REJECTED) |
|
|
| AuditLog | 시스템 내 모든 주요 행위를 추적하는 감사 로그 |
|
|
| PII | 개인식별정보 (Personally Identifiable Information) |
|
|
| 서명 URL | 일정 시간 동안만 유효한 인증된 파일 접근 URL |
|
|
|
|
---
|
|
|
|
## 문서 이력
|
|
|
|
| 버전 | 날짜 | 변경 내용 | 작성자 |
|
|
|------|------|----------|--------|
|
|
| v1.0.0 | 2026-03-07 | 최초 작성 | 대표 + CTO |
|
|
|
|
> 이 문서는 Re:Link 운영 및 개발의 기준 정책 문서입니다. 변경 시 DRI(대표)의 승인을 거쳐야 하며, 변경 이력을 반드시 기록해야 합니다.
|