# MNG → API+React 이관 현황 및 로드맵 > **작성일**: 2026-03-12 > **상태**: 분석 완료, 로드맵 수립 > **담당**: R&D실 --- ## 1. 개요 ### 1.1 목적 MNG(관리자 웹)에서 API+React로 이관할 남은 항목을 식별하고, 멀티테넌시 적합도를 기준으로 실전 서비스 개발 우선순위를 수립한다. ### 1.2 현재 규모 | 프로젝트 | 규모 | |----------|------| | **MNG** | 컨트롤러 212개, 모델 227개, 서비스 113개 | | **API** | 컨트롤러 100+, 모델 120+, 마이그레이션 130+ | | **React** | 페이지 253개, 컴포넌트 36개 도메인 | ### 1.3 멀티테넌시 판단 기준 | 기준 | 이관 대상 | 이관 불필요 | |------|----------|-----------| | 2개+ 테넌트가 사용하는가? | 재무, 영업, 인사, 견적 | PMIS(특정 테넌트 전용) | | `tenant_id` 격리가 의미 있는가? | 자금일정, 채번규칙, 수수료 | 신용평가, 개발도구 | | SaaS 고객에게 제공 가치가 있는가? | 전자서명, 정산, VAT | 로드맵, R&D, 스크럼 | | 관리자만 사용하는가? | 사용자도 씀 → 이관 | Dev Tools, 감사 추적 | --- ## 2. 이관 완료 도메인 API + React 모두 구현 완료된 기능이다. | 도메인 | 완성도 | 비고 | |--------|:------:|------| | 인증/계정 | 100% | 로그인, 토큰, 회원가입 | | 사용자/테넌트/부서 | 100% | 조직 관리 전체 | | 역할/권한 | 100% | 3단계 권한 체계 | | 메뉴 관리 | 100% | 글로벌/테넌트 메뉴 | | 품목 관리 (Item) | 95% | BOM, 동적 필드 | | 카테고리/공통코드 | 100% | 트리 구조, 동기화 | | 거래처 (Client) | 95% | 그룹, OCR | | 견적/수주/매출 | 90% | 견적서 PDF, 발송 | | 입찰 (Bidding) | 90% | 상태 관리 | | 단가 관리 (Pricing) | 90% | 일괄 등록 | | 카드/계좌/입출금 | 90% | 바로빌 부분 연동 | | 급여 (Payroll) | 85% | 계산, 확정, 지급 | | 채권/거래처원장 | 85% | 조회, 메모 | | 세금계산서 | 85% | 발행, 홈택스 | | 근태/휴가/직원 | 85% | 출퇴근, 연차 | | 전자결재 | 80% | 양식, 결재선, 위임 | | 게시판 | 80% | 커스텀 필드, 댓글 | | 파일/문서 관리 | 80% | 업로드, 공유, 버전 | | 생산 (공정/작업지시) | 80% | 작업일지, 자재 투입 | | 재고 (구매/입고/출하) | 80% | 배차, Lot 추적 | | 설계/BOM | 75% | 모델 버전, 계산 엔진 | | 대시보드 | 90% | CEO 포함 5가지 타입 | | 현장관리 (Site) | 75% | 현장설명회, 계약 | | 바로빌 (기본) | 70% | 카드/계좌 연동 | --- ## 3. 미이관 항목 분석 ### 3.1 멀티테넌트 이관 대상 (P1~P2) 실전 서비스에서 복수 테넌트가 사용할 핵심 기능이다. | # | 기능 | MNG 컨트롤러 | 적합도 | 우선순위 | |---|------|-------------|:------:|:--------:| | 1 | 자금일정 (Fund Schedule) | `FundScheduleController` | 높음 | P1 | | 2 | 일일자금 (Daily Fund) | `DailyFundController` | 높음 | P1 | | 3 | 미지급금 (Payable) | `PayableController` | 높음 | P1 | | 4 | 부가세 (VAT) | `VatRecordController` | 높음 | P1 | | 5 | 정산 (Settlement) | `SettlementController` | 높음 | P1 | | 6 | 환불 (Refund) | `RefundController` | 높음 | P1 | | 7 | 채번규칙 (Numbering Rule) | `NumberingRuleController` | 높음 | P1 | | 8 | 견적수식 (Quote Formula) | `QuoteFormulaController` | 높음 | P1 | | 9 | 전자서명 (eSign) | `EsignController` 외 2개 | 높음 | P1 | | 10 | 분개기록 (Journal Entry) | `JournalEntryController` | 중간 | P2 | | 11 | 구독관리 (Subscription) | `SubscriptionController` | 중간 | P2 | | 12 | 판매수수료 | `SalesCommissionController` | 중간 | P2 | | 13 | 휴가정책 (Leave Promotion) | `LeavePromotionController` | 중간 | P2 | | 14 | 통합근태 | `AttendanceIntegratedController` | 중간 | P2 | | 15 | 사업소득자 | `BusinessIncomeEarnerController` | 중간 | P2 | > **참고**: API에 `ExpectedExpense`(미지급비용), `GeneralJournalEntry`(일반전표)가 이미 존재한다. MNG 버전과 기능 범위가 다르므로 비교 후 보강한다. ### 3.2 MNG 전용 (이관 불필요) 관리자 전용이거나 특정 테넌트에 국한되어 멀티테넌트 이관 가치가 낮은 기능이다. | # | 기능 | MNG 컨트롤러 수 | 사유 | |---|------|:--------------:|------| | 1 | PMIS 시공관리 | 12개 | 특정 테넌트 건설 전용, `Juil/` 네임스페이스 | | 2 | 신용평가 (Credit) | 1개 | 외부 API 연동, 관리자 전용 | | 3 | Dev Tools | 2개 | API Explorer, Flow Tester (개발자 전용) | | 4 | 추가 기능 | 5개 | Kiosk, Notion, RAG, Docx, Pptx (유틸리티) | | 5 | 튜토리얼 비디오 | 1개 | 관리자 콘텐츠 관리 | | 6 | 로드맵/R&D | 2개 | 내부 기획 도구 | | 7 | 일일 스크럼 | 1개 | 내부 개발팀 도구 | | 8 | 감사 로그/트리거 추적 | 3개 | 관리자 감사 도구 (API 읽기전용 API만 검토) | **후순위** (규모별 차이가 커서 범용성 낮음): | # | 기능 | 비고 | |---|------|------| | 9 | 경조사비/회사차량/차량일지 | 회사 규모별 차이 큼 | | 10 | 명함 요청 | 마이너 기능 | | 11 | 면접 시나리오 | 영업 내부 도구 | ### 3.3 React UI 보강 대상 API는 완료되었으나 React 화면이 미구현 또는 부분 구현된 기능이다. | # | 기능 | API | React | 우선순위 | |---|------|:---:|:-----:|:--------:| | 1 | 품질관리 (QMS) | 완료 | 개발중 | P1 | | 2 | 설비/장비 (Equipment) | 완료 | 개발중 | P1 | | 3 | 어음 관리 (Bill) | 완료 | 미구현 | P2 | | 4 | 가지급금 (Loan) | 완료 | 미구현 | P2 | | 5 | 요금제/결제 | 완료 | 부분 | P1 | | 6 | 캘린더 일정 | 완료 | 부분 | P2 | | 7 | AI 보고서 | 완료 | 부분 | P2 | | 8 | 팝업 관리 | 완료 | 부분 | P3 | --- ## 4. 실전 서비스 이관 로드맵 ### Phase 1: 핵심 재무 (즉시 착수) 테넌트가 실제 업무에 필수적으로 사용하는 재무 기능이다. | 순서 | 기능 | 작업 범위 | 복잡도 | |:----:|------|----------|:------:| | 1-1 | 자금일정 + 일일자금 | API 신규 + React 신규 | 높음 | | 1-2 | 정산 (Settlement) | API 신규 + React 신규 | 높음 | | 1-3 | 환불 (Refund) | API 신규 + React 신규 | 중간 | | 1-4 | 부가세 (VAT) | API 신규 + React 신규 | 높음 | | 1-5 | 채번규칙 | API 신규 + React 설정화면 | 중간 | ### Phase 2: 영업/견적 고도화 견적 자동화와 수수료 체계를 구축한다. | 순서 | 기능 | 작업 범위 | 복잡도 | |:----:|------|----------|:------:| | 2-1 | 견적수식 (Quote Formula) | API 신규 + React 신규 | 매우 높음 | | 2-2 | 판매수수료 | API 신규 + React 신규 | 높음 | | 2-3 | 전자서명 (eSign) | API 신규 + React 신규 | 매우 높음 | ### Phase 3: React UI 보강 API는 완료되어 있으므로 React 화면만 구현한다. | 순서 | 기능 | 작업 범위 | 복잡도 | |:----:|------|----------|:------:| | 3-1 | 품질관리 (QMS) | React 신규 | 높음 | | 3-2 | 설비/장비 | React 신규 | 중간 | | 3-3 | 어음/가지급금 | React 신규 | 중간 | | 3-4 | 요금제/결제 화면 | React 보강 | 중간 | ### Phase 4: 인사 고도화 기본 HR은 완료되어 있으며, 정책/통합 기능을 추가한다. | 순서 | 기능 | 작업 범위 | 복잡도 | |:----:|------|----------|:------:| | 4-1 | 휴가정책 자동부여 | API 보강 + React | 중간 | | 4-2 | 통합근태 | API 신규 + React | 높음 | | 4-3 | 사업소득자/지급 | API 신규 + React | 중간 | --- ## 5. 이관 작업 시 공통 체크리스트 ### API 이관 시 - [ ] `tenant_id` 기반 멀티테넌트 격리 적용 - [ ] MNG HTMX 코드 → REST API로 분리 - [ ] 마이그레이션 소유 기준 확인 (API 전용/공용 → API, MNG 전용 → MNG) - [ ] `options` JSON 컬럼 정책 준수 - [ ] Service-First 아키텍처 (Controller → Service → Model) - [ ] FormRequest 검증 적용 - [ ] Swagger 문서 작성 ### React 이관 시 - [ ] Server Actions 패턴 사용 (`executePaginatedAction`, `executeServerAction`) - [ ] `createCrudService` 팩토리 활용 (반복 코드 제거) - [ ] Zod 스키마 검증 적용 - [ ] `FormField` molecule 사용 - [ ] 기존 `UniversalListPage` 템플릿 활용 - [ ] 모바일 반응형 고려 (`MobileCard`) --- ## 6. 수량 요약 | 분류 | 항목 수 | 비고 | |------|:-------:|------| | 이관 완료 | 24개 도메인 | API + React 모두 존재 | | 이관 대상 (P1) | 9개 기능 | Phase 1~2 | | 이관 대상 (P2) | 6개 기능 | Phase 2~4 | | MNG 유지 | 11개 기능 | 관리자/특정 테넌트 전용 | | React UI 보강 | 8개 기능 | API 완료, UI 미구현 | --- ## 관련 문서 - [system/overview.md](overview.md) — 전체 시스템 아키텍처 - [system/api-structure.md](api-structure.md) — API 서버 구조 - [system/react-structure.md](react-structure.md) — React 프론트엔드 구조 - [system/mng-structure.md](mng-structure.md) — MNG 관리자 패널 구조 - [dev/standards/api-rules.md](../dev/standards/api-rules.md) — API 개발 규칙 - [dev/standards/options-column-policy.md](../dev/standards/options-column-policy.md) — options JSON 정책 --- **최종 업데이트**: 2026-03-12