부동산 계약/고객/매물 관리 SaaS 기획서 v2.1
1. 서비스 개요
본 서비스는 부동산 사무소가 로그인 후 계약서 작성, 계약관리, 고객관리, 매물관리, 사용자관리를 수행하는 업무용 SaaS입니다.
본사관리자는 부동산 사무소를 등록하고, 사무소별 사용 인원과 기능 권한을 설정하며, 그 설정을 기준으로 과금을 관리합니다. 각 부동산 사무소의 오너 관리자는 자기 사무소에 속한 중개인과 중개보조인을 등록하고, 소속 사용자의 계약, 고객, 매물 데이터를 관리합니다.
핵심 방향은 단순 계약서 작성기가 아니라 다음 흐름을 하나로 연결하는 것입니다.
부동산 등록
→ 부동산 오너 관리자 생성
→ 오너 관리자가 중개인/중개보조인 등록
→ 사용자가 계약 작성, 고객 등록, 매물 등록
→ 계약/고객/매물 데이터가 담당자별·부동산별로 쌓임
→ 권한에 따라 본인 데이터 또는 전체 데이터 조회
→ 부동산별 인원과 기능 사용량을 기준으로 과금
1.1 현재 구현/운영 기준
2026-06-06 기준 MVP 운영 방향은 다음과 같습니다.
- 배포 방식: 자체 서버의 Docker 기반 Next.js 앱
- 운영 도메인:
https://contract.noriter.co.kr - DB: MySQL
- DB 연결:
DATABASE_URL환경변수 - 현재 구현 중인 1차 화면: 본사관리자
부동산 등록/관리 - 등록/수정 방식: 목록 화면은 전체 폭으로 보여주고, 신규 등록/수정은 팝업 모달에서 처리
- 초기 과금 상태: 무료 운영을 기본으로 하되, 부동산별 기본료/무료 인원/초과 단가/기능 권한은 DB에 저장 가능한 구조로 준비
현재는 Vercel + Supabase 방향을 중단하고, 자체 서버 + MySQL 구조로 전환했습니다. Supabase 관련 문서는 과거 기록으로만 참고하며, 신규 구현은 MySQL 기준으로 진행합니다.
1.2 현재 작업 우선순위
본사관리자 부동산 등록/관리
→ 오너 관리자 계정 생성
→ 로그인/권한
→ 부동산 오너 사용자관리
→ 계약하기 저장
→ 계약관리/고객관리/매물관리 연결
→ 과금 계산
→ PDF/인쇄
2. 사용자 역할
| 역할 | 설명 |
|---|---|
| 본사관리자 | 서비스 운영자. 부동산 등록, 전체 사용자 관리, 과금 설정, 기능 권한 설정을 담당 |
| 부동산 오너 관리자 | 각 부동산 사무소의 최고 관리자. 소속 사용자와 사무소 전체 데이터를 관리 |
| 중개인 | 계약 작성, 고객 관리, 매물 등록을 수행하는 실무 사용자 |
| 중개보조인 | 허용된 범위 안에서 계약 작성 보조, 고객/매물 관리 보조를 수행 |
3. 로그인 및 접근 구조
본사관리자 로그인
본사관리자는 본사 소속 사람만 로그인할 수 있습니다.
- 본사관리자 계정은 본사에서 직접 생성
- 본사관리자는 부동산 사무소 계정과 분리
- 본사관리자는 모든 부동산 사무소의 현황을 볼 수 있음
- 본사관리자는 각 부동산의 과금 기준, 등록 가능 인원, 기능 권한을 설정할 수 있음
본사관리자 메뉴:
- 본사 대시보드
- 부동산 등록/관리
- 전체 사용자 관리
- 과금 설정
- 기능 권한 설정
- 운영 설정
부동산 사용자 로그인
각 부동산 사용자는 해당 부동산에 등록된 계정으로만 로그인할 수 있습니다.
- 부동산 오너 관리자가 소속 중개인/중개보조인 계정을 생성
- 사용자는 자기 부동산 사무소 범위 안에서만 접근
- 중개인/중개보조인은 본인 계약, 본인 고객, 본인 담당 매물만 조회
- 부동산 오너 관리자는 자기 사무소의 전체 계약, 전체 고객, 전체 매물을 조회
- 다른 부동산의 데이터는 기본적으로 조회 불가
- 매물 교환/공동중개처럼 공개 설정된 매물만 별도 정책에 따라 공유 가능
부동산 사용자 메뉴:
- 업무 대시보드
- 계약하기
- 계약관리
- 고객관리
- 매물관리
- 사용자관리
4. 권한 원칙
| 데이터 | 중개인/중개보조인 | 부동산 오너 관리자 | 본사관리자 |
|---|---|---|---|
| 계약 | 본인이 작성/담당한 계약만 조회 | 자기 사무소 전체 계약 조회 | 전체 부동산 계약 조회 |
| 고객 | 본인이 등록/담당한 고객만 조회 | 자기 사무소 전체 고객 조회 | 전체 부동산 고객 현황 조회 |
| 매물 | 본인이 등록/담당한 매물만 조회 | 자기 사무소 전체 매물 조회 | 전체 부동산 매물 현황 조회 |
| 사용자 | 본인 정보 중심 | 자기 사무소 사용자 등록/관리 | 전체 사용자 관리 |
| 과금 | 조회 불가 또는 제한적 조회 | 자기 사무소 이용 현황 조회 | 전체 과금 정책 설정 |
| 기능 권한 | 부여된 기능만 사용 | 자기 사무소 사용자 권한 관리 | 부동산별 기능 권한 설정 |
세부 권한 항목은 기능이 더 확정된 뒤 정리합니다. 1차 설계에서는 다음 권한 그룹만 준비합니다.
- 관리자 권한
- 중개인 기본
- 보조원 기본
- 조회 전용
- 기능별 추가 권한
5. 주요 기능
5.1 본사관리자 부동산 등록/관리
본사관리자는 SaaS를 사용할 부동산 사무소를 먼저 등록합니다. 이 화면은 본사관리자 MVP의 첫 번째 핵심 화면입니다.
화면 구조:
- 부동산 목록은 전체 폭으로 크게 표시
- 상호명, 대표자, 사업자번호, 전화번호, 주소 검색
- 전체/무료/과금 대상/비활성 상태 필터
- 목록 행에서 수정 버튼 제공
- 신규 등록과 수정은 팝업 모달로 처리
등록/수정 팝업 안에는 다음 설정을 포함합니다.
| 영역 | 항목 |
|---|---|
| 기본 정보 | 상호명, 대표자, 사업자등록번호, 중개사무소 등록번호, 대표 전화, 주소, 상태 |
| 인원/과금 설정 | 1차 기본료, 등록 가능 인원, 무료 인원, 2차 초과 단가, 예상 과금 |
| 오너 관리자 계정 | 오너 이름, 로그인 이메일, 휴대폰 번호, 최초 로그인 초대 문자 발송 여부 |
| 초기 기능 권한 | 계약/PDF 기본 제공, 카카오 만료 알림, 고객 예약 팝업, 매물 교환/공동중개 등 |
| 저장 전 검증/이력 | 1차/2차/3차 과금 검증, 변경 이력, 감사 로그 |
중요 원칙:
- 부동산 정보 저장과 과금 정책 저장은 같은 흐름에서 처리
- 오너 관리자 계정은 부동산 등록 후 바로 생성 가능해야 함
- 기능 권한은 초기에는 체크 구조로 준비하고, 기능 확정 후 세부 권한으로 확장
- 저장/수정 시 감사 로그를 남김
- 과금 정책은 덮어쓰기보다 이력형으로 남김
현재 구현 상태:
- MySQL 기반 부동산 목록 조회
- MySQL 기반 부동산 신규 등록
- MySQL 기반 부동산 수정
- 과금 정책 1차 저장 구조
- 신규/수정 팝업 UI
- 검색/상태 필터
다음 구현 예정:
- 오너 관리자 계정 실제 생성 API
- 초기 기능 권한 실제 저장
- 감사 로그 목록 실데이터 연결
- 과금 계산 스냅샷 정식화
5.2 업무 대시보드
부동산 사용자는 로그인 직후 업무 대시보드를 봅니다.
- 내 계약 요약
- 내 고객 요약
- 내 매물 요약
- 계약 만료 알림 요약
- 오늘 확인할 업무
- 잔금 예정 계약
- 상담 예약 고객
- 빠른 실행: 계약서 작성, 고객 등록, 매물 등록
부동산 오너 관리자는 자기 사무소 전체 현황을 보고, 중개인/중개보조인은 본인이 담당한 데이터 기준으로 대시보드를 봅니다.
5.3 계약하기
계약하기는 서비스의 핵심 기능입니다.
- 계약서 종류 선택
- 부동산 매매
- 임대차
- 상가
- 토지
- 추후 확장 가능
- 계약서 작성
- 부동산 표시
- 계약 내용
- 금액/일정
- 매도인/매수인 또는 임대인/임차인
- 중개사무소 정보
- 공동중개 정보
- 특약사항
- 계약서 저장
- PDF 저장
- 인쇄
- 계약서 복사
- 계약서 수정
- 계약서 변경 이력 저장
계약서 작성 화면은 일반 입력폼이 아니라 실제 계약서 양식을 화면에 보여주고, 사용자가 필요한 칸만 직접 수정하는 방식으로 구현합니다.
- 실제 계약서 모양의 HTML/PDF 템플릿을 배경처럼 표시
- 소재지, 금액, 지급일, 당사자, 중개사무소, 특약 등 필요한 부분만 입력 가능
- 저장 시에는 계약서 화면 자체가 아니라 입력값을 구조화된 JSON으로 저장
- PDF 저장 시에는 저장된 입력값을 계약서 템플릿에 다시 렌더링하여 PDF 생성
- 인쇄 시에는 PDF 또는 인쇄 전용 HTML을 사용
- 계약서 종류별로 템플릿을 분리
- 템플릿 변경이 있어도 기존 계약서는 당시 버전으로 재출력할 수 있게 계약서 버전 관리 필요
계약을 저장하면 계약관리 리스트에 자동으로 쌓입니다.
5.4 계약관리
- 계약 목록 조회
- 계약일, 만기일, 잔금일 기준 필터
- 계약서 종류, 거래유형, 완료여부 필터
- 계약서번호, 고객명, 전화번호 직접 검색
- 계약서 복사
- 계약서 PDF 재생성
- 계약서 인쇄
- 엑셀 저장
- 작성자/담당자별 조회
- 부동산 오너 관리자는 자기 사무소 전체 계약 조회
- 일반 사용자는 본인 계약만 조회
계약서 작성 시 입력된 당사자는 고객관리 데이터와 연결될 수 있습니다.
5.5 고객관리
- 고객 등록
- 고객 목록 조회
- 고객그룹 관리
- 고객등급 관리
- 의뢰유형 관리
- 업무상태 관리
- 고객별 메모 관리
- 문자 발송
- 엑셀 업로드/다운로드
- 담당자별 고객 조회
- 계약 작성 시 입력된 고객 자동 누적
일반 사용자는 본인 고객만 조회합니다. 부동산 오너 관리자는 자기 사무소 전체 고객을 조회합니다.
5.6 매물관리
- 매물 등록
- 매물 목록 조회
- 매물 복사
- 매물 상태 관리
- 매물 공개/비공개 설정
- 계약서 작성 시 매물 연결
- 관심매물 관리
- 매물 교환/공동중개
- 엑셀 저장
매물 공개 범위:
| 공개 범위 | 설명 |
|---|---|
| 비공개 | 등록자와 오너 관리자만 조회 |
| 사무소 내부공개 | 같은 부동산 사무소 사용자끼리 공유 |
| 공동중개공개 | 다른 부동산과 교환/공동중개 가능 |
매물 교환은 추후 별도 정책이 필요합니다.
- 어떤 부동산에 공개할지
- 전체 공개인지 승인제인지
- 공동중개 요청/수락/거절 흐름
- 매물 정보 수정 권한
- 계약 발생 시 수수료 정산 기준
5.7 사용자관리
부동산 오너 관리자는 자기 사무소 안에서 필요한 인원을 등록합니다.
- 중개인 등록
- 중개보조인 등록
- 부동산 관리자 추가 지정
- 초대 문자 발송
- 사용자 활성/비활성 처리
- 권한 그룹 지정
- 과금 인원 포함 여부 확인
- 사용자별 계약 수 확인
- 사용자별 고객 수 확인
- 사용자별 매물 수 확인
세부 권한 항목은 기능 확정 이후 정리합니다.
5.8 계약 만료 알림
- 계약 만료일 저장
- 만료 90일 전, 30일 전, 7일 전, 당일 알림 설정
- 고객에게 카카오 알림톡 발송
- 담당자에게 카카오 알림톡 발송
- 발송 예정/성공/실패/취소 상태 관리
- 발송 이력 저장
5.9 고객 예약 팝업
특정 고객 또는 고객 그룹에 특정 시간에 팝업을 노출할 수 있습니다.
- 특정 고객 대상
- 고객 그룹 대상
- 만기 예정 고객 대상
- VIP 고객 대상
- 특정 매물 관심 고객 대상
- 담당자별 고객 대상
- 접속 즉시 노출
- 특정 일시 노출
- 반복 일정 노출
Next.js에서도 구현 가능합니다. 구조는 다음과 같습니다.
관리자가 팝업 예약 생성
→ 대상 고객/그룹/조건 저장
→ 노출 시간 저장
→ 사용자가 로그인
→ 클라이언트가 API 또는 실시간 채널로 팝업 확인
→ 조건에 맞으면 팝업 표시
→ 노출/확인/닫기 이력 저장
실시간성이 낮으면 API 폴링으로 충분하고, 실시간 알림이 중요하면 Server-Sent Events 또는 WebSocket을 검토합니다.
6. 과금 설계
과금은 3단계 포인트로 명확히 분리합니다.
6.1 1차 과금 포인트: 부동산 기본 과금
본사관리자가 부동산 사무소를 등록할 때 부동산별 기본 과금 정책을 설정합니다.
현재 1차 운영:
- 부동산 기본 과금: 0원
- 부동산 등록 가능 인원 수: 본사관리자가 설정
- 무료 운영 기간에도 예상 과금액은 계산
향후 유료 전환 예시:
- 부동산 기본 과금: 월 10,000원
- 부동산별로 기본 과금 금액을 다르게 설정 가능
- 특정 부동산은 무료, 할인, 특별 단가 적용 가능
필요 설정:
| 항목 | 설명 |
|---|---|
| 기본 월 이용료 | 부동산 사무소 단위 기본 요금 |
| 등록 가능 인원 | 해당 부동산이 생성할 수 있는 사용자 수 |
| 무료 인원 | 과금 없이 사용할 수 있는 인원 |
| 적용 시작일 | 과금 정책이 적용되는 날짜 |
| 과금 사용 여부 | 무료 운영 중인지 실제 과금 중인지 |
6.2 2차 과금 포인트: 인원 추가 과금
부동산 오너 관리자가 로그인 후 필요한 인원만큼 계정을 만듭니다.
현재 1차 운영:
- 기본 허용 인원 안에서 등록: 0원
- 기본 허용 인원 초과 시에도 우선 기록만 가능
- 초과 인원 수와 예상 과금액은 본사관리자 화면에서 확인
향후 유료 전환 예시:
- 기본 인원 초과 시 1명당 월 5,000원
- 예: 기본 2명 무료, 현재 4명 사용
- 초과 인원 2명 × 5,000원 = 월 10,000원
과금 기준은 활성 사용자 수를 기본으로 합니다.
과금 포함 대상:
- 부동산 오너 관리자
- 중개인
- 중개보조인
과금 제외 가능 대상:
- 비활성 사용자
- 초대 후 미가입 사용자
- 본사관리자
- 특별 면제 처리된 사용자
6.3 3차 과금 포인트: 기능 추가 과금
부동산이 기본 기능 외 추가 기능을 사용하고 싶을 때 본사관리자에게 요청합니다.
흐름:
부동산 오너 관리자 또는 사용자가 추가 기능 요청
→ 본사관리자 상담
→ 기능 사용 가능 여부와 금액 결정
→ 본사관리자가 부동산별 기능 권한 부여
→ 해당 기능이 메뉴 또는 버튼으로 활성화
→ 기능별 과금 이력 저장
현재 1차 운영:
- 기능 권한 구조만 준비
- 실제 과금은 수동 상담 후 반영
향후 유료 전환 예시:
- 기능 추가 시 월 5,000원부터
- 기능별로 금액 다르게 설정 가능
- 특정 부동산에 무료 제공 가능
- 특정 기간만 무료 체험 가능
기능 과금 예시:
| 기능 | 과금 예시 |
|---|---|
| 카카오 만료 알림 | 월 5,000원 또는 발송 건당 과금 |
| 고객 예약 팝업 | 월 5,000원 |
| 매물 교환/공동중개 | 월 5,000원 이상 |
| PDF 고급 출력 | 월 5,000원 |
| 엑셀 대량 업로드 | 월 5,000원 |
| 외부 문서 연동 | 별도 상담 |
기능 추가 과금은 고정 금액이 아니라 본사관리자가 그때그때 설정할 수 있어야 합니다.
7. 과금 계산 예시
현재 무료 운영 예시
부동산: 제주수공인중개사사무소
기본 과금: 0원
무료 인원: 2명
활성 사용자: 4명
초과 인원: 2명
초과 인원 단가: 0원
추가 기능: 없음
이번달 예상 과금: 0원
향후 유료 전환 예시
부동산: 제주수공인중개사사무소
기본 과금: 10,000원
무료 인원: 2명
활성 사용자: 4명
초과 인원: 2명
초과 인원 단가: 5,000원
추가 기능: 고객 예약 팝업 5,000원
이번달 예상 과금:
10,000원 + (2명 × 5,000원) + 5,000원
= 25,000원
8. 데이터 모델 초안
| 모델 | 주요 필드 |
|---|---|
| HeadquartersUser | id, name, email, phone, role, status |
| Office | id, name, businessNumber, ownerName, phone, address, status |
| OfficeBillingPolicy | id, officeId, baseMonthlyFee, maxUserLimit, freeUserLimit, extraUserFee, billingEnabled, effectiveFrom |
| OfficeUser | id, officeId, name, email, phone, role, status, billable, permissionGroupId |
| PermissionGroup | id, officeId, name, description, permissionsJson |
| Feature | id, code, name, description, defaultMonthlyFee |
| OfficeFeature | id, officeId, featureId, enabled, monthlyFee, effectiveFrom, memo |
| Contract | id, officeId, writerUserId, listingId, status, type, contractDate, startDate, endDate |
| ContractVersion | id, contractId, versionNo, dataJson, specialTerms, createdBy |
| ContractParty | id, contractId, customerId, type, name, phone, address |
| Customer | id, officeId, managerUserId, groupId, name, phone, address, grade, status, memo |
| Listing | id, officeId, managerUserId, type, dealType, address, priceJson, visibility, exchangeEnabled, status |
| ListingExchange | id, listingId, ownerOfficeId, sharedToOfficeId, status |
| Notification | id, contractId, recipientType, recipientPhone, remindAt, status, sentAt |
| PopupCampaign | id, officeId, title, message, targetRuleJson, showAt, repeatRule, status |
| PopupDelivery | id, campaignId, customerId, userId, shownAt, clickedAt, dismissedAt |
| BillingUsage | id, officeId, month, baseFee, activeUserCount, freeUserLimit, extraUserCount, extraUserAmount, featureAmount, totalAmount |
9. 데이터 연결 구조
Office
├ User
│ ├ Contract
│ ├ Customer
│ └ Listing
├ Contract
│ ├ ContractVersion
│ ├ ContractParty
│ ├ Customer
│ └ Listing
├ Customer
├ Listing
├ OfficeBillingPolicy
└ OfficeFeature
핵심 원칙:
- 계약을 저장하면 계약관리 리스트에 쌓임
- 계약 당사자는 고객관리와 연결 가능
- 매물은 계약서 작성 시 연결 가능
- 고객은 담당자 기준으로 관리
- 매물은 담당자 기준으로 관리
- 부동산 오너 관리자는 자기 사무소 전체 데이터를 볼 수 있음
- 본사관리자는 전체 운영/과금 관점에서 볼 수 있음
10. MVP 범위
1차 MVP에 포함할 기능:
- 로그인 화면
- 본사관리자 로그인
- 부동산 사용자 로그인
- 본사관리자 부동산 등록/관리
- 부동산별 등록 가능 인원 설정
- 부동산별 기본 과금/무료 인원/초과 단가 설정
- 부동산 오너 관리자 계정 생성
- 부동산 오너 관리자 로그인
- 부동산 사용자 업무 대시보드
- 중개인/중개보조인 등록
- 계약하기
- 계약관리 목록
- 고객관리 목록
- 매물관리 목록
- 본인 데이터 조회 제한
- 부동산 오너 관리자 전체 조회
- 과금 예상 금액 계산
현재 작업 순서:
- 본사관리자 부동산 등록/관리 화면 안정화
- 부동산 오너 관리자 계정 생성
- 로그인/권한 연결
- 부동산 사용자관리
- 계약하기 저장
- 계약관리/고객관리/매물관리 연결
- 과금 계산 정식화
- PDF/인쇄 구현
1차에서 단순화할 기능:
- 실제 결제 자동화는 제외
- 카카오 알림 실제 발송은 2차 가능
- 매물 교환은 공개 범위와 구조만 준비
- 세부 권한 체크박스는 기능 확정 후 구체화
- 전자서명은 제외
11. 개발 시 주의사항
- 본사관리자와 부동산 사용자는 인증 영역을 분리해야 함
- 모든 데이터 조회에는
officeId조건이 반드시 들어가야 함 - 일반 사용자는
managerUserId또는writerUserId기준으로 본인 데이터만 조회 - 부동산 오너 관리자는
officeId기준 전체 조회 - 본사관리자는 전체 조회 가능하지만 개인정보 접근 로그를 남기는 것이 좋음
- 과금 정책은 코드에 고정하지 않고 DB 설정값으로 관리
- 과금 정책 변경 이력을 남겨야 함
- 기능 권한은 추후 확장을 위해
permissionsJson또는 별도 권한 테이블로 설계 - 개인정보, 주민등록번호, 연락처, 주소 등 민감정보 보호 정책 필요
12. 정리
이 서비스는 다음 3가지를 중심으로 설계합니다.
로그인과 권한 분리
- 본사관리자, 부동산 오너 관리자, 중개인, 중개보조인의 접근 범위를 명확히 분리합니다.
업무 데이터 누적
- 계약하기를 통해 계약 리스트가 쌓이고, 고객관리와 매물관리로 연결됩니다.
3단계 과금 구조
- 부동산 기본 과금
- 인원 추가 과금
- 기능 추가 과금
초기에는 무료로 운영하되, 과금 계산 구조와 이력을 미리 만들어두어 나중에 유료 전환할 수 있도록 설계합니다.