feat(WEB): 공사관리 리스트 공통화 및 캘린더/포맷터 기능 개선
공사관리 리스트 공통화: - 입찰/계약/견적/인수인계/이슈/품목/노무/현장/파트너/단가/기성/현장브리핑/구조검토/유틸리티/작업자현황 리스트 공통 포맷터 적용 - 중복 포맷팅 로직 제거 (-530줄) 캘린더 기능 개선: - CEODashboard CalendarSection 기능 확장 - ScheduleCalendar DayCell/MonthView/WeekView 개선 - ui/calendar 컴포넌트 기능 추가 유틸리티 개선: - date.ts 날짜 유틸 함수 추가 - formatAmount.ts 금액 포맷 함수 추가 신규 추가: - useListHandlers 훅 추가 - src/constants/ 디렉토리 추가 - 포맷터 공통화 계획 문서 추가 - SAM ERP/MES 정체성 분석 문서 추가 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
256
claudedocs/[ANALYSIS-2026-02-05] SAM-ERP-MES-정체성-분석.md
Normal file
256
claudedocs/[ANALYSIS-2026-02-05] SAM-ERP-MES-정체성-분석.md
Normal file
@@ -0,0 +1,256 @@
|
||||
# SAM 프로젝트 정체성 및 현장 효용성 분석
|
||||
|
||||
> 작성일: 2026-02-05
|
||||
> 목적: ERP/MES 관점에서 SAM 시스템의 포지션, 강점/약점, 현장 효용성 분석
|
||||
|
||||
---
|
||||
|
||||
## 1. SAM의 정체성: "제조+설치 통합형 ERP/MES"
|
||||
|
||||
### 포지셔닝
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ SAM 시스템 포지션 │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Pure MES ◄────────── SAM ──────────► Pure ERP │
|
||||
│ (공장 실행) │ (경영 관리) │
|
||||
│ │ │
|
||||
│ ┌────────┴────────┐ │
|
||||
│ │ 70% ERP │ │
|
||||
│ │ 30% MES │ │
|
||||
│ │ + 건설 프로젝트 │ │
|
||||
│ └─────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
SAM은 **순수 MES도 아니고 순수 ERP도 아닌**, 제조업체가 실제로 필요로 하는 기능들을 통합한 시스템이다.
|
||||
|
||||
### 타겟 산업: 블라인드/셔터 제조 + 설치
|
||||
|
||||
| 특징 | SAM의 대응 |
|
||||
|------|-----------|
|
||||
| 주문생산(Make-to-Order) | 수주 → 생산지시 → 작업실적 흐름 |
|
||||
| 다품종 소량생산 | 동적 품목 마스터 (빌더 시스템) |
|
||||
| 설치 서비스 병행 | 건설/시공 프로젝트 모듈 |
|
||||
| 품질 인증 필요 | QMS 검사성적서 시스템 |
|
||||
| 중소기업 규모 | SaaS 멀티테넌트 구조 |
|
||||
|
||||
---
|
||||
|
||||
## 2. ERP 관점 분석
|
||||
|
||||
### 커버리지
|
||||
|
||||
| ERP 영역 | SAM 구현 수준 | 비고 |
|
||||
|----------|-------------|------|
|
||||
| **재무회계** | ⭐⭐⭐⭐ (80%) | 매입/매출/입출금/어음/카드/채권 |
|
||||
| **영업관리** | ⭐⭐⭐⭐ (85%) | 견적→수주→생산지시 연동 |
|
||||
| **구매관리** | ⭐⭐⭐ (70%) | 입고 중심, 발주 모듈 약함 |
|
||||
| **재고관리** | ⭐⭐⭐ (65%) | 재고현황 중심, 창고이동 미흡 |
|
||||
| **인사관리** | ⭐⭐⭐⭐ (80%) | 근태/급여/휴가/문서 |
|
||||
| **전자결재** | ⭐⭐⭐ (70%) | 기안/결재/참조 기본 구조 |
|
||||
| **프로젝트** | ⭐⭐⭐⭐⭐ (90%) | 건설 모듈이 매우 정교함 |
|
||||
|
||||
### ERP로서의 강점
|
||||
|
||||
1. **영업-생산 연동**: 수주가 바로 생산지시로 연결되는 구조
|
||||
2. **프로젝트 관리**: 입찰→계약→시공→정산까지 풀 사이클
|
||||
3. **회계 통합**: 매출/매입이 거래처원장과 연동
|
||||
4. **멀티테넌트**: 신규 고객사 온보딩이 빠름
|
||||
|
||||
### ERP로서의 약점
|
||||
|
||||
1. **구매/발주**: 입고 위주, 구매요청→발주→입고 흐름 미흡
|
||||
2. **원가계산**: 제조원가 계산 로직이 명시적이지 않음
|
||||
3. **창고관리**: 다창고, 로케이션 관리 부재
|
||||
4. **BI/분석**: 대시보드는 있으나 심층 분석 약함
|
||||
|
||||
---
|
||||
|
||||
## 3. MES 관점 분석
|
||||
|
||||
### 커버리지
|
||||
|
||||
| MES 영역 | SAM 구현 수준 | 비고 |
|
||||
|----------|-------------|------|
|
||||
| **작업지시** | ⭐⭐⭐⭐ (80%) | 생산지시 생성/관리 |
|
||||
| **작업실적** | ⭐⭐⭐⭐ (80%) | 실적 입력/조회 |
|
||||
| **품질관리** | ⭐⭐⭐⭐⭐ (90%) | 다양한 검사성적서 |
|
||||
| **설비관리** | ⭐ (20%) | 거의 없음 |
|
||||
| **실시간 모니터링** | ⭐⭐⭐ (60%) | 대시보드 있음, PLC 연동 없음 |
|
||||
| **작업자 화면** | ⭐⭐⭐⭐ (75%) | 현장 터치 인터페이스 |
|
||||
| **추적성(Traceability)** | ⭐⭐⭐ (65%) | 로트 추적 기본 구조 |
|
||||
|
||||
### MES로서의 강점
|
||||
|
||||
1. **품질 시스템**: QMS가 상당히 정교함 (6종 검사성적서)
|
||||
2. **작업자 친화적**: 현장용 작업자 화면 별도 존재
|
||||
3. **생산-영업 연결**: 수주 기반 생산이라 주문 추적 용이
|
||||
|
||||
### MES로서의 약점
|
||||
|
||||
1. **설비 연동 없음**: PLC, 바코드 스캐너 등 현장 장비 연동 부재
|
||||
2. **실시간성 부족**: 폴링 기반, 실시간 푸시 아님
|
||||
3. **공정 스케줄링**: 단순 작업지시, APS(고급계획) 없음
|
||||
4. **설비 모니터링**: OEE, 설비 가동률 등 없음
|
||||
|
||||
---
|
||||
|
||||
## 4. 현장 효용성 평가
|
||||
|
||||
### 실제로 잘 맞는 업종
|
||||
|
||||
```
|
||||
✅ 주문생산 제조업 (블라인드, 가구, 인테리어 자재)
|
||||
✅ 설치 서비스 병행 업체
|
||||
✅ 다품종 소량생산
|
||||
✅ 품질 인증 필요 업종 (ISO, KS 등)
|
||||
✅ 직원 50명 이하 중소기업
|
||||
✅ IT 인력이 부족한 회사 (SaaS로 운영부담 최소화)
|
||||
```
|
||||
|
||||
### 맞지 않는 업종
|
||||
|
||||
```
|
||||
❌ 대량생산 (자동차, 반도체) - MES 깊이 부족
|
||||
❌ 연속공정 (화학, 식품) - 배치/레시피 관리 없음
|
||||
❌ 설비 집약 산업 - 설비 연동/모니터링 없음
|
||||
❌ 복잡한 원가계산 필요 업종 - 원가 모듈 약함
|
||||
❌ 대기업 (100명+) - 워크플로우 복잡도 한계
|
||||
```
|
||||
|
||||
### 현장에서의 실제 가치
|
||||
|
||||
| 관점 | 효용 |
|
||||
|------|------|
|
||||
| **경영진** | 수주~매출까지 한눈에, 프로젝트별 손익 파악 |
|
||||
| **영업팀** | 견적→수주→생산현황 실시간 확인 |
|
||||
| **생산팀** | 작업지시 받고 실적 입력, 품질 기록 |
|
||||
| **품질팀** | 검사성적서 발행, 인증심사 대응 |
|
||||
| **경리팀** | 매입/매출/입출금 통합 관리 |
|
||||
| **현장 작업자** | 터치 화면으로 작업 확인/실적 입력 |
|
||||
|
||||
---
|
||||
|
||||
## 5. 경쟁 포지션
|
||||
|
||||
### vs 범용 ERP (더존, 영림원)
|
||||
|
||||
| 항목 | SAM | 범용 ERP |
|
||||
|------|-----|---------|
|
||||
| 제조 특화 | ⭐⭐⭐⭐ | ⭐⭐ |
|
||||
| 건설/시공 | ⭐⭐⭐⭐⭐ | ⭐ |
|
||||
| 회계 깊이 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||||
| 커스터마이징 | ⭐⭐⭐⭐ (빌더) | ⭐⭐ |
|
||||
| 도입 비용 | 낮음 (SaaS) | 높음 |
|
||||
|
||||
### vs 전문 MES (포스코ICT, 미라콤)
|
||||
|
||||
| 항목 | SAM | 전문 MES |
|
||||
|------|-----|---------|
|
||||
| 설비 연동 | ❌ | ⭐⭐⭐⭐⭐ |
|
||||
| 실시간성 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||||
| 품질 관리 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
|
||||
| ERP 통합 | ⭐⭐⭐⭐⭐ | ⭐⭐ (별도 연동) |
|
||||
| 도입 기간 | 짧음 | 길음 |
|
||||
|
||||
### SAM의 틈새 (Niche)
|
||||
|
||||
```
|
||||
"전문 MES는 과하고, 범용 ERP는 제조 기능이 부족한"
|
||||
중소 제조+설치 업체를 위한 통합 솔루션
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 빌더 확장 시 기대효과
|
||||
|
||||
현재 품목기준관리 빌더를 다른 영역으로 확장하면:
|
||||
|
||||
| 확장 영역 | 예상 효과 |
|
||||
|----------|----------|
|
||||
| **폼 빌더** (등록/수정) | 신규 업종 대응 시 개발 50% 절감 |
|
||||
| **리스트 빌더** (조회) | 화면 추가/변경 무코딩 가능 |
|
||||
| **문서 빌더** (성적서) | 업종별 양식 빠른 대응 |
|
||||
| **워크플로우 빌더** | 결재/승인 프로세스 설정화 |
|
||||
|
||||
**신규 업체 온보딩 시나리오**:
|
||||
```
|
||||
현재: 요구분석 → 개발 → 테스트 → 배포 (4-8주)
|
||||
목표: 요구분석 → 빌더 설정 → 배포 (1-2주)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 종합 평가
|
||||
|
||||
### SAM의 정체성 한 문장
|
||||
|
||||
> **"주문생산 중소 제조업을 위한 ERP+MES 통합 SaaS로, 생산-품질-영업-회계를 하나로 연결하고, 설치 프로젝트까지 관리하는 올인원 솔루션"**
|
||||
|
||||
### 핵심 차별점
|
||||
|
||||
1. **제조+설치 통합** - 대부분의 시스템이 둘 중 하나만 함
|
||||
2. **품질 시스템 내장** - QMS가 기본 탑재
|
||||
3. **빌더 기반 확장성** - 업종별 커스터마이징 용이
|
||||
4. **SaaS 멀티테넌트** - 도입 부담 최소화
|
||||
|
||||
### 발전 방향 제안
|
||||
|
||||
| 단기 | 중기 | 장기 |
|
||||
|------|------|------|
|
||||
| 빌더 → 리스트까지 확장 | 바코드/QR 스캐닝 | 설비 연동 (IoT) |
|
||||
| 발주 모듈 보강 | 모바일 앱 강화 | AI 수요 예측 |
|
||||
| 원가계산 기본 기능 | 실시간 알림 (WebSocket) | APS 스케줄링 |
|
||||
|
||||
---
|
||||
|
||||
## 8. 시스템 규모 현황
|
||||
|
||||
### 프로젝트 스케일
|
||||
|
||||
- **24개** 주요 기능 모듈
|
||||
- **250+** 페이지
|
||||
- **900+** 컴포넌트 파일
|
||||
- 멀티테넌트 아키텍처
|
||||
- 다국어 지원 (한국어, 영어, 일본어)
|
||||
|
||||
### 모듈별 복잡도
|
||||
|
||||
| 모듈 | 복잡도 | 페이지 수 | 핵심 기능 |
|
||||
|------|--------|----------|----------|
|
||||
| Construction | ⭐⭐⭐⭐⭐ | 57 | 프로젝트 풀 라이프사이클 |
|
||||
| Accounting | ⭐⭐⭐⭐ | 31 | 재무 관리 전체 |
|
||||
| Production | ⭐⭐⭐⭐ | 12 | 실시간 MES 코어 |
|
||||
| Quality | ⭐⭐⭐⭐ | 24 | 다중 검사 QMS |
|
||||
| Master Data | ⭐⭐⭐⭐⭐ | 12 | 동적 폼 템플릿 |
|
||||
| Sales | ⭐⭐⭐ | 20 | 견적→수주 흐름 |
|
||||
| HR | ⭐⭐⭐ | 17 | 직원 라이프사이클 |
|
||||
| Material | ⭐⭐ | 6 | 재고 & 입고 |
|
||||
| Outbound | ⭐⭐ | 7 | 출고 & 배차 |
|
||||
|
||||
---
|
||||
|
||||
## 부록: 기술 스택
|
||||
|
||||
**Frontend:**
|
||||
- Next.js 15 (App Router)
|
||||
- React 18
|
||||
- TypeScript
|
||||
- Tailwind CSS
|
||||
- Radix UI
|
||||
- Zustand
|
||||
|
||||
**Backend:**
|
||||
- PHP Laravel API (별도 코드베이스)
|
||||
- MySQL/MariaDB
|
||||
- JWT 인증
|
||||
- 멀티테넌트 아키텍처
|
||||
|
||||
**인프라:**
|
||||
- HttpOnly 쿠키 보안
|
||||
- 멀티테넌트 데이터 격리
|
||||
- RESTful API 설계
|
||||
88
claudedocs/[IMPL-2026-02-05] formatter-commonization-plan.md
Normal file
88
claudedocs/[IMPL-2026-02-05] formatter-commonization-plan.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# 금액/날짜 포맷터 공통화 계획
|
||||
|
||||
> 작성일: 2026-02-05
|
||||
> 상태: ✅ 완료
|
||||
> 목적: 중복 정의된 formatAmount, formatDate 함수를 공통 유틸로 통합
|
||||
|
||||
---
|
||||
|
||||
## 📊 현황 분석
|
||||
|
||||
### 이미 존재하는 유틸
|
||||
|
||||
| 파일 | 함수 | 설명 |
|
||||
|------|------|------|
|
||||
| `src/utils/formatAmount.ts` | `formatAmount()` | 자동 만원 변환 (1만 이상 → "N만원") |
|
||||
| | `formatAmountWon()` | 항상 원 단위 ("N원") |
|
||||
| | `formatAmountManwon()` | 항상 만원 단위 ("N만원") |
|
||||
| | `formatKoreanAmount()` | 억/만 축약 ("1억 5,000만") |
|
||||
| | `formatNumber()` | **신규** 단순 천단위 콤마 |
|
||||
| `src/utils/date.ts` | `getLocalDateString()` | YYYY-MM-DD 반환 |
|
||||
| | `getTodayString()` | 오늘 날짜 YYYY-MM-DD |
|
||||
| | `formatDateForInput()` | input용 날짜 변환 |
|
||||
| | `formatDate()` | **신규** YYYY-MM-DD 표시용 |
|
||||
| | `formatDateRange()` | **신규** "시작 ~ 종료" 형식 |
|
||||
|
||||
---
|
||||
|
||||
## 📊 결과 요약
|
||||
|
||||
### 마이그레이션 완료 파일
|
||||
|
||||
#### formatAmount → formatNumber (12개 파일) ✅
|
||||
| 파일 | 상태 |
|
||||
|------|------|
|
||||
| `construction/contract/ContractListClient.tsx` | ✅ 완료 |
|
||||
| `construction/contract/ContractDetailForm.tsx` | ✅ 완료 |
|
||||
| `construction/bidding/BiddingListClient.tsx` | ✅ 완료 |
|
||||
| `construction/bidding/BiddingDetailForm.tsx` | ✅ 완료 |
|
||||
| `construction/estimates/EstimateListClient.tsx` | ✅ 완료 |
|
||||
| `construction/estimates/modals/EstimateDocumentContent.tsx` | ✅ 완료 |
|
||||
| `construction/handover-report/HandoverReportListClient.tsx` | ✅ 완료 |
|
||||
| `construction/handover-report/HandoverReportDetailForm.tsx` | ✅ 완료 |
|
||||
| `construction/handover-report/modals/HandoverReportDocumentModal.tsx` | ✅ 완료 |
|
||||
| `construction/utility-management/UtilityManagementListClient.tsx` | ✅ 완료 |
|
||||
| `construction/estimates/utils/formatters.ts` | ✅ re-export로 변경 |
|
||||
|
||||
#### formatDate 공통화 (7개 파일) ✅
|
||||
| 파일 | 상태 |
|
||||
|------|------|
|
||||
| `construction/contract/ContractListClient.tsx` | ✅ 완료 (formatDateRange) |
|
||||
| `construction/bidding/BiddingListClient.tsx` | ✅ 완료 |
|
||||
| `construction/handover-report/HandoverReportListClient.tsx` | ✅ 완료 (formatDateRange) |
|
||||
| `construction/utility-management/UtilityManagementListClient.tsx` | ✅ 완료 |
|
||||
| `construction/issue-management/IssueManagementListClient.tsx` | ✅ 완료 |
|
||||
| `construction/structure-review/StructureReviewListClient.tsx` | ✅ 완료 |
|
||||
| `construction/management/ConstructionDetailClient.tsx` | ✅ 완료 |
|
||||
|
||||
#### 마이그레이션 제외 (한글 형식 유지)
|
||||
| 파일 | 사유 |
|
||||
|------|------|
|
||||
| `handover-report/modals/HandoverReportDocumentModal.tsx` | 한글 형식 ("년 월 일") |
|
||||
| `order-management/modals/OrderDocumentModal.tsx` | 한글 형식 ("년 월 일") |
|
||||
|
||||
---
|
||||
|
||||
## 📋 효과
|
||||
|
||||
| 항목 | Before | After |
|
||||
|------|--------|-------|
|
||||
| formatAmount 정의 | 12개 파일 | 1개 파일 (`formatNumber`) |
|
||||
| formatDate 정의 | 8개 파일 | 1개 파일 |
|
||||
| 중복 코드 라인 | ~150줄 | 0줄 |
|
||||
| 포맷 변경 시 수정 | 20개 파일 | 1개 파일 |
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 주의사항
|
||||
|
||||
1. **기존 formatAmount()와 formatNumber() 차이**
|
||||
- 기존 `formatAmount()`: 자동 만원 변환 (유지됨)
|
||||
- 신규 `formatNumber()`: 단순 천단위 콤마만
|
||||
|
||||
2. **한글 날짜 형식은 별도 유지**
|
||||
- 문서 모달에서 사용하는 "년 월 일" 형식은 로컬 유지
|
||||
- 공통 `formatDate()`는 YYYY-MM-DD 형식만 처리
|
||||
|
||||
3. **backward compatibility**
|
||||
- `estimates/utils/formatters.ts`는 `formatNumber`를 `formatAmount`로 re-export
|
||||
Reference in New Issue
Block a user