구현 진행 계획 v1
1. 현재 기준
- 작업 폴더:
/Users/paul/dev/real-estate-contract-saas - 배포 프로젝트: Vercel
paulkim7788s-projects/1 - 현재 앱 상태: Next.js 프로토타입, 본사관리자/사용자관리자 화면 분리, 기획서 HTML 페이지 제공
- 검증 기준:
npm run lint,npm run build, Vercel Preview 배포
2. 진행 순서
로컬 안정화
→ 기획서 확정
→ DB 설계
→ 로그인/권한
→ 계약하기 저장
→ 계약관리/고객관리/매물관리 연결
→ 과금 계산
→ PDF/인쇄
3. 현재 완료
로컬 안정화
- iCloud placeholder 문제를 피하기 위해
/Users/paul/dev/real-estate-contract-saas로 작업 폴더를 이전했습니다. - 새 폴더에는
dataless파일이 없습니다. - 의존성 설치를 완료했습니다.
- 로컬 빌드와 린트가 통과했습니다.
- 기존 Vercel 프로젝트와 새 폴더를 다시 연결했습니다.
- Preview 배포가 성공했습니다.
4. 서브에이전트 분담
| 에이전트 | 담당 | 산출물 |
|---|---|---|
| DB/권한 | 멀티테넌트 DB, 로그인/권한 정책 | docs/db-schema-v1.md, docs/auth-permission-v1.md |
| 과금 | 부동산 기본 과금, 인원 과금, 기능 과금 | docs/billing-model-v1.md |
| 계약서/PDF | 계약 템플릿, 저장 구조, PDF/인쇄 플로우 | docs/contract-template-save-pdf-v1.md |
| 프론트 프로토타입 | 화면에서 저장 흐름과 과금 포인트 강화 | src/app/page.tsx |
5. MVP 구현 단위
5.1 DB 설계 확정
목표는 실제 DB를 붙이기 전에 테이블, 관계, 권한 범위를 먼저 고정하는 것입니다.
핵심 테이블:
- offices
- users
- customers
- properties
- contracts
- contract_customers
- contract_properties
- contract_templates
- contract_template_versions
- subscriptions
- plans
- company_features
- usage_events
- invoices
완료 기준:
- 사무소별 데이터 격리 기준이 명확합니다.
- 본사관리자, 부동산 오너, 중개인, 중개보조인의 조회 범위가 명확합니다.
- 계약, 고객, 매물이 서로 연결되는 구조가 정리됩니다.
5.2 로그인/권한
1차 구현에서는 실제 인증 제공자를 붙이기 전에도 권한 모델을 코드로 먼저 표현합니다.
권장 단계:
- 역할 타입 정의
- 세션 사용자 타입 정의
officeId기반 접근 제어 함수 작성- 화면/데이터 샘플에 권한별 조회 범위 반영
- 이후 실제 Auth.js, Clerk, Supabase Auth 중 하나로 연결
5.3 계약하기 저장
계약서는 단순 폼 저장이 아니라 다음 구조로 갑니다.
ContractTemplateVersion
= 계약서 양식 + 필드 위치 + 입력 스키마
Contract.inputJson
= 실제 계약 데이터
ContractCustomer / ContractProperty
= 고객/매물 업무 연결
1차 구현은 브라우저 로컬 상태 또는 mock repository로 저장 흐름을 먼저 보여주고, 이후 DB 저장으로 전환합니다.
5.4 관리 화면 연결
계약 저장 후 다음 변화가 화면에 보여야 합니다.
- 계약관리 목록에 계약이 추가됩니다.
- 고객관리 목록에 계약 당사자가 누적됩니다.
- 매물관리 목록에 연결 매물 상태가 변경됩니다.
- 대시보드의 계약/고객/매물 수치가 바뀝니다.
5.5 과금 계산
과금은 계약 수수료가 아니라 SaaS 이용료 기준으로 먼저 잡습니다.
1차 과금:
- 부동산 사무소 기본 이용료
- 초기값 0원, 향후 예: 월 10,000원
2차 과금:
- 기본 포함 인원 초과 과금
- 초기값 0원, 향후 예: 추가 1명당 월 5,000원
3차 과금:
- 기능 추가 과금
- 기능별 월 정액 또는 사용량 기반
- 예: PDF 저장, 카카오 알림, 고급 권한, 매물 교환
5.6 PDF/인쇄
초기 구현은 HTML print layout을 우선합니다.
이후 실제 계약서 배경 이미지/PDF 위에 좌표 기반 필드를 올리는 방식으로 확장합니다.
6. 바로 다음 작업
- 에이전트 산출물을 검토합니다.
- 문서 간 용어를 맞춥니다.
src/lib에 타입과 mock repository를 만듭니다.- 계약 저장 버튼이 실제 상태를 변경하도록 연결합니다.
- 로컬 빌드 후 Vercel Preview에 배포합니다.