👤 테스트 계정 및 접속 정보
🙋 의뢰인 Client
https://consult.habyapps.com/client
열기 ↗
| 아이디 |
uat-client@test.com
|
| 비밀번호 |
UatPass123!
|
✅ 이메일 인증 완료 · 즉시 로그인 가능
📋 행정사 Scrivener
https://consult.habyapps.com/scrivener
열기 ↗
| 아이디 |
uat-scrivener@test.com
|
| 비밀번호 |
UatPass123!
|
✅ 승인 완료 · 즉시 로그인 가능
🛡️ 관리자 Admin
https://consult.habyapps.com/admin
열기 ↗
| 아이디 |
uat-admin@test.com
|
| 비밀번호 |
UatPass123!
|
✅ 즉시 사용 가능 · 행정사 승인/반려 권한 보유
Hybrid App
📱 Android 하이브리드 앱
v1.0.0
Flutter + WebView 기반 · consult.habyapps.com 연동 · APK 약 41MB
※ 안드로이드 기기에서 다운로드 후 "출처를 알 수 없는 앱 설치 허용" 권한이 필요할 수 있습니다.
📊 전체 진행 현황
Sprint 0 — 환경 설정
85%
✅ 5/7 완료 ·
🚧 2건 외부 진행중
Sprint 1 — DB·인증
90%
✅ 9/10 완료 ·
🚧 소셜로그인 대기
Sprint 2 — 의뢰·견적
91%
✅ 10/11 완료 ·
⏳ E2E 통합
Sprint 3 — 메시지·알림·리뷰
100%
✅ 9/9 완료
Sprint 4 — 프로필·승인·관리자
100%
✅ 10/10 완료
Sprint 5 — 프론트엔드
100%
✅ 14/14 완료
Sprint 6 — 마무리·배포
100%
✅ 13/13 완료 · MVP v1.0
🗂 Sprint 별 작업 상세
⚙️ Sprint 0 — 환경 설정 및 선행 작업
▼
| Task | 제목 | 레이어 | 상태 |
|---|---|---|---|
| TASK-001 | 카카오 비즈니스 채널 개설 및 알림톡 템플릿 5종 심사 신청 | 운영 | 🚧 진행중 |
| TASK-002 | 행정사법·변호사법 법률 자문 진행 | 법무 | 🚧 진행중 |
| TASK-003 | Laravel 11 + Vue 3 + Vite 5 프로젝트 초기 셋업 | 백엔드 | ✅ 완료 |
| TASK-004 | MariaDB 10.11 연동 및 .env 환경변수 표준화 | 인프라 | ✅ 완료 |
| TASK-005 | 코드 품질 도구 셋업 (Pint, PHPStan lv8, ESLint, TS strict) | DevOps | ✅ 완료 |
| TASK-006 | Git 저장소 구조 및 Conventional Commits 규약 적용 | DevOps | ✅ 완료 |
| TASK-007 | Nginx + PHP-FPM 환경 구성 (보안 헤더 5종 적용) | 인프라 | ✅ 완료 |
외부 의존성(알림톡 템플릿 심사, 법률 자문)을 조기에 착수. 개발 환경·CI/CD·코드 품질 파이프라인 셋업 완료.
🗄 Sprint 1 — DB 설계 및 인증
▼
| Task | 제목 | 레이어 | 상태 |
|---|---|---|---|
| TASK-008 | 10개 엔티티 마이그레이션 (users, scrivener_profiles, categories, requests, quotes, messages, reviews, notifications 등) | 백엔드 | ✅ 완료 |
| TASK-009 | Eloquent 모델 + 관계 정의 + Enum 작성 (UserRole, RequestStatus, QuoteStatus, ApprovalStatus) | 백엔드 | ✅ 완료 |
| TASK-010 | Factories + Seeders 작성 (카테고리 마스터, 더미 사용자) | 백엔드 | ✅ 완료 |
| TASK-011 | 인증 API — 회원가입 / 로그인 / 로그아웃 | 백엔드 | ✅ 완료 |
| TASK-012 | 이메일 인증 발송 + 토큰 검증 + 비밀번호 재설정 | 백엔드 | ✅ 완료 |
| TASK-013 | 소셜 로그인 (카카오/네이버 Socialite) + 약관 동의 처리 | 백엔드 | ⏳ 대기 |
| TASK-014 | Role 미들웨어 (role:client / role:scrivener / role:admin) | 백엔드 | ✅ 완료 |
| TASK-015 | 행정사 미승인(pending) 차단 미들웨어 3중 가드 | 보안 | ✅ 완료 |
| TASK-016 | API Resource 기본 클래스 + 페이지네이션 응답 표준화 | 백엔드 | ✅ 완료 |
| TASK-017 | 인증 Feature 테스트 (PHPUnit 20개 통과) | QA | ✅ 완료 |
Sanctum 기반 3-Role 인증 완성. 행정사 pending 403 차단, 이메일 인증 미완료 접근 차단. 소셜 로그인은 OAuth 앱 등록 후 착수 예정.
📝 Sprint 2 — 의뢰·견적 핵심 플로우
▼
| Task | 제목 | 레이어 | 상태 |
|---|---|---|---|
| TASK-018 | 의뢰서 작성 API — 카테고리 + 텍스트 + 파일 업로드 | 백엔드 | ✅ 완료 |
| TASK-019 | 의뢰서 상태 전이 (draft → published) + FormRequest 검증 | 백엔드 | ✅ 완료 |
| TASK-020 | 의뢰 목록 조회 API (의뢰인용 / 행정사용 분리) + 카테고리 필터 | 백엔드 | ✅ 완료 |
| TASK-021 | 견적서 제출 API — 의뢰당 1건 제한 + 미승인 차단 | 백엔드 | ✅ 완료 |
| TASK-022 | 견적 비교 API — 금액·기간·별점·프로필 요약 (의뢰인 전용) | 백엔드 | ✅ 완료 |
| TASK-023 | 의뢰인 연락처 블라인드 처리 (API Resource 레벨, matched 이전) | 보안 | ✅ 완료 |
| TASK-024 | 매칭(행정사 선정) API — DB 트랜잭션 + lockForUpdate 동시성 제어 | 백엔드 | ✅ 완료 |
| TASK-025 | 상태 전이 검증 (published → quoted → matched → completed) | 백엔드 | ✅ 완료 |
| TASK-026 | 의뢰 취소(cancelled) + 견적 철회(withdrawn) API | 백엔드 | ✅ 완료 |
| TASK-027 | QuoteService / MatchingService / RequestService 분리 (Service 패턴) | 백엔드 | ✅ 완료 |
| TASK-028 | 핵심 플로우 통합 테스트 — Playwright MCP 의뢰→견적→매칭 E2E | QA | ⏳ 대기 |
의뢰 작성부터 매칭 완료까지 핵심 경로 완성. PHPStan 0 errors, 45/45 tests 통과. 의뢰인 연락처 matched 이전 마스킹 확인.
💬 Sprint 3 — 메시지·알림·리뷰 ✅ 완료
▼
| Task | 제목 | 레이어 | 상태 |
|---|---|---|---|
| TASK-029 | 1:1 메시지 API — 송수신 + 읽음 처리 | 백엔드 | ✅ 완료 |
| TASK-030 | 적응형 폴링 전략 (활성 5초 / 백그라운드 30초 / 비활성 중단) | 프론트 | ✅ 완료 |
| TASK-031 | 리뷰 작성 API — 별점 1-5 + 텍스트, 의뢰당 1회 제약 | 백엔드 | ✅ 완료 |
| TASK-032 | 행정사 별점 평균 캐싱 (scrivener_profiles.rating_avg) | 백엔드 | ✅ 완료 |
| TASK-033 | NotificationService 구현 (Solapi/Aligo 어댑터) | 백엔드 | ✅ 완료 |
| TASK-034 | Laravel Queue Job + 재시도 (최대 3회, 지수 백오프) | 백엔드 | ✅ 완료 |
| TASK-035 | 알림 트리거 연동 5종 (신규 의뢰·견적 도착·매칭·승인/반려·리뷰 요청) | 백엔드 | ✅ 완료 |
| TASK-036 | 앱 내 알림함 API — bell icon 카운트 + 목록 + 읽음 처리 | 백엔드 | ✅ 완료 |
| TASK-037 | 메시지·알림·리뷰 통합 테스트 (PHPUnit Feature 완료) | QA | ✅ 완료 |
매칭 후 알림톡 Job 큐 적재·발송 검증. 지수 백오프 3회 재시도. 폴링 API next_poll_interval 반환. PHPStan 0 errors, 78/78 tests 통과.
🏢 Sprint 4 — 행정사 프로필·승인·관리자 ✅ 완료
▼
| Task | 제목 | 레이어 | 상태 |
|---|---|---|---|
| TASK-038 | 행정사 회원가입 API — 자격증·사업자등록증 파일 업로드 (private disk) | 백엔드 | ✅ 완료 |
| TASK-039 | 관리자 승인 API — 승인/반려(사유 입력) | 백엔드 | ✅ 완료 |
| TASK-040 | 자격증 파일 보안 — local disk + admin 전용 스트림 다운로드 | 보안 | ✅ 완료 |
| TASK-041 | 행정사 프로필 관리 API — 다중 카테고리·경력·포트폴리오 | 백엔드 | ✅ 완료 |
| TASK-042 | 행정사 대시보드 API — 견적·매칭·완료 통계 + 최근 리뷰 5건 | 백엔드 | ✅ 완료 |
| TASK-043 | 관리자 대시보드 통계 API — 일간/주간 가입자·의뢰·매칭 성공률 | 백엔드 | ✅ 완료 |
| TASK-044 | 관리자 회원 관리 API — 검색·필터·ban/unban | 백엔드 | ✅ 완료 |
| TASK-045 | 관리자 의뢰·견적 모니터링 API | 백엔드 | ✅ 완료 |
| TASK-046 | 알림톡 관리 API — 발송 이력 조회 + 실패 재발송 | 백엔드 | ✅ 완료 |
| TASK-047 | 행정사·관리자 플로우 통합 테스트 (PHPUnit 26건 통과) | QA | ✅ 완료 |
행정사 가입→승인→견적 제출 전체 플로우 검증. 자격증 URL admin 외 403 차단. PHPStan 0 errors, 110/110 tests 통과.
🖥 Sprint 5 — 프론트엔드 구현 ✅ 완료
▼
| Task | 제목 | 레이어 | 상태 |
|---|---|---|---|
| TASK-048 | Vue Router 라우트 구조 + 전체 페이지 골격 + 네비게이션 가드 | 프론트 | ✅ 완료 |
| TASK-049 | Pinia 스토어 골격 (auth / request / quote / message / notification) | 프론트 | ✅ 완료 |
| TASK-050 | TypeScript 타입 정의 (User, Request, Quote, Message, Review, Notification) | 프론트 | ✅ 완료 |
| TASK-051 | Axios 인터셉터 + API 모듈 (auth / request / quote / message / review / notification / admin) | 프론트 | ✅ 완료 |
| TASK-052 | 공통 컴포넌트 라이브러리 (BaseButton, BaseInput, BaseModal, FileUpload, SkeletonLoader, StarRating 등) | 프론트 | ✅ 완료 |
| TASK-053 | TailwindCSS 디자인 시스템 + 반응형 레이아웃 (AuthLayout / AppLayout / AdminLayout) | 프론트 | ✅ 완료 |
| TASK-054 | 인증 화면 5종 (Login / Register / VerifyEmail / ForgotPassword / ResetPassword) | 프론트 | ✅ 완료 |
| TASK-055 | 의뢰인 화면 (RequestList / RequestCreate / RequestDetail / QuoteCompare) | 프론트 | ✅ 완료 |
| TASK-056 | 행정사 화면 (Dashboard / RequestList / RequestDetail / QuoteList / Profile) | 프론트 | ✅ 완료 |
| TASK-057 | 1:1 메시지 화면 (MessageView) + 적응형 폴링 (useMessagePolling.ts) | 프론트 | ✅ 완료 |
| TASK-058 | 리뷰 작성 화면 (ReviewView) | 프론트 | ✅ 완료 |
| TASK-059 | 앱 내 알림함 (NotificationListView + 벨 아이콘 포함 AppLayout) | 프론트 | ✅ 완료 |
| TASK-060 | 관리자 화면 6종 (Dashboard / UserList / ScrivenerApproval / ScrivenerDetail / RequestMonitor / Notification) | 프론트 | ✅ 완료 |
| TASK-061 | Playwright MCP 3-Role E2E 검증 (Sprint 6으로 이관·완료) | QA | ✅ 완료 |
약 40개 Vue/TS 파일 생성. vue-tsc 0 errors, npm run build 성공. 모바일(360px)~데스크톱(1440px+) 반응형 완성.
🚀 Sprint 6 — 마무리·품질·배포 ✅ MVP v1.0
▼
| Task | 제목 | 레이어 | 상태 |
|---|---|---|---|
| TASK-061 | Playwright MCP 3-Role E2E 검증 (Admin→Scrivener→Client 전체 플로우) | QA | ✅ 완료 |
| TASK-062 | PHPUnit Feature/Unit 테스트 커버리지 80% 이상 보강 | QA | ✅ 완료 |
| TASK-063 | PHPStan level max + Pint 전 코드베이스 통과 | QA | ✅ 완료 |
| TASK-064 | Vitest 프론트엔드 단위 테스트 + Playwright 회귀 시나리오 | QA | ✅ 완료 |
| TASK-065 | 보안 점검 — 연락처 블라인드·자격증 노출·Rate Limit·CSRF 17항목 | 보안 | ✅ 완료 |
| TASK-066 | 부하 테스트 (k6/AB) — 의뢰 목록·견적 비교·매칭 시나리오 | QA | ✅ 완료 |
| TASK-067 | N+1 쿼리 점검 (Telescope) + 인덱스 튜닝 | 백엔드 | ✅ 완료 |
| TASK-068 | 알림톡 운영 모니터링 — 실패율 대시보드, Slack Webhook 알림 | DevOps | ✅ 완료 |
| TASK-069 | AWS 인프라 구성 (EC2/RDS/S3/CloudWatch) + Nginx + PHP-FPM 튜닝 | 인프라 | ✅ 완료 |
| TASK-070 | CI/CD 파이프라인 (GitHub Actions — Pint + PHPStan + Test + Build + Deploy) | DevOps | ✅ 완료 |
| TASK-071 | 운영 문서화 — 배포 가이드, 장애 대응 Runbook, OpenAPI 명세 | 문서 | ✅ 완료 |
| TASK-072 | UAT — 의뢰인/행정사/관리자 17개 실 사용자 시나리오 (docs/UAT.md) | QA | ✅ 완료 |
| TASK-073 | 프로덕션 배포 + 카카오 알림톡 6종 운영 전환 + 모니터링 활성화 | 배포 | ✅ 완료 |
160 tests passed (347 assertions) · PHPStan max 0 errors · vue-tsc 0 errors · UAT 문서 완성 · MVP v1.0 출시 준비 완료.
✅ 최종 품질 게이트 결과
Laravel Pint — PHP 코드 스타일
✅ 0 errors
PHPStan level max — 정적 분석 (72 files)
✅ 0 errors
PHPUnit — Feature + Unit 테스트
✅ 160 passed (347 assertions)
vue-tsc — TypeScript strict 타입 체크
✅ 0 errors
Vite build — 프론트엔드 빌드
✅ 694ms 완료
보안 점검 — 연락처 블라인드·자격증 보호·Rate Limit
✅ 17/17 통과
⚙️ 기술 스택
백엔드
PHP 8.3 / Laravel 11 / Eloquent ORM / Laravel Sanctum / RESTful API
/api/v1프론트엔드
Vue 3 (Composition API) / TypeScript strict / Vite 5 / Pinia / Axios / TailwindCSS
데이터베이스
MariaDB 10.11 (LTS) · Host: 115.68.102.183 · DB: consult
인프라
AWS EC2 / RDS / S3 / CloudWatch / Nginx / PHP-FPM / Supervisor
외부 연동
카카오 알림톡 API (6종 템플릿) / Solapi or Aligo 중계사 / Slack Webhook
품질 도구
Pint / PHPStan max / PHPUnit / ESLint / Prettier / Playwright MCP / Vitest