HTML 기획서 v2.1

부동산 계약/고객/매물 관리 SaaS

프로토타입으로

서브에이전트 산출물

부동산 계약/고객/매물 관리 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에 포함할 기능:

  • 로그인 화면
  • 본사관리자 로그인
  • 부동산 사용자 로그인
  • 본사관리자 부동산 등록/관리
  • 부동산별 등록 가능 인원 설정
  • 부동산별 기본 과금/무료 인원/초과 단가 설정
  • 부동산 오너 관리자 계정 생성
  • 부동산 오너 관리자 로그인
  • 부동산 사용자 업무 대시보드
  • 중개인/중개보조인 등록
  • 계약하기
  • 계약관리 목록
  • 고객관리 목록
  • 매물관리 목록
  • 본인 데이터 조회 제한
  • 부동산 오너 관리자 전체 조회
  • 과금 예상 금액 계산

현재 작업 순서:

  1. 본사관리자 부동산 등록/관리 화면 안정화
  2. 부동산 오너 관리자 계정 생성
  3. 로그인/권한 연결
  4. 부동산 사용자관리
  5. 계약하기 저장
  6. 계약관리/고객관리/매물관리 연결
  7. 과금 계산 정식화
  8. PDF/인쇄 구현

1차에서 단순화할 기능:

  • 실제 결제 자동화는 제외
  • 카카오 알림 실제 발송은 2차 가능
  • 매물 교환은 공개 범위와 구조만 준비
  • 세부 권한 체크박스는 기능 확정 후 구체화
  • 전자서명은 제외

11. 개발 시 주의사항

  • 본사관리자와 부동산 사용자는 인증 영역을 분리해야 함
  • 모든 데이터 조회에는 officeId 조건이 반드시 들어가야 함
  • 일반 사용자는 managerUserId 또는 writerUserId 기준으로 본인 데이터만 조회
  • 부동산 오너 관리자는 officeId 기준 전체 조회
  • 본사관리자는 전체 조회 가능하지만 개인정보 접근 로그를 남기는 것이 좋음
  • 과금 정책은 코드에 고정하지 않고 DB 설정값으로 관리
  • 과금 정책 변경 이력을 남겨야 함
  • 기능 권한은 추후 확장을 위해 permissionsJson 또는 별도 권한 테이블로 설계
  • 개인정보, 주민등록번호, 연락처, 주소 등 민감정보 보호 정책 필요

12. 정리

이 서비스는 다음 3가지를 중심으로 설계합니다.

  1. 로그인과 권한 분리

    • 본사관리자, 부동산 오너 관리자, 중개인, 중개보조인의 접근 범위를 명확히 분리합니다.
  2. 업무 데이터 누적

    • 계약하기를 통해 계약 리스트가 쌓이고, 고객관리와 매물관리로 연결됩니다.
  3. 3단계 과금 구조

    • 부동산 기본 과금
    • 인원 추가 과금
    • 기능 추가 과금

초기에는 무료로 운영하되, 과금 계산 구조와 이력을 미리 만들어두어 나중에 유료 전환할 수 있도록 설계합니다.