fix: [juil] 업무 Workflow 프로세스 순서 수정
- 영업/수주 → 영업 (수주는 견적 이후로 이동) - 순서 변경: 영업 → 입찰 참여 → 견적서 작성 → 수주/계약 - 입찰 참여를 선택적 단계로 변경 (소규모/수의계약 시 생략 가능) - 분기 표시: 대형/공공 vs 소규모/수의계약 경로 안내
This commit is contained in:
@@ -16,9 +16,9 @@
|
||||
// --- 업무 프로세스 데이터 (상세 서브플로우 포함) ---
|
||||
const processes = [
|
||||
{
|
||||
id: 1, phase: 'sales', name: '영업/수주', icon: '📋', dept: '영업팀',
|
||||
id: 1, phase: 'sales', name: '영업', icon: '📋', dept: '영업팀',
|
||||
color: '#3B82F6', bgColor: '#EFF6FF',
|
||||
description: '건설사/시행사로부터 프로젝트 정보 수집 및 수주 활동',
|
||||
description: '건설사/시행사로부터 프로젝트 정보를 수집하고 영업 활동을 수행한다.',
|
||||
documents: ['입찰공고문', '현장조사서', '고객 요구사항서'],
|
||||
samLink: null, samMenu: null,
|
||||
subSteps: [
|
||||
@@ -50,10 +50,10 @@
|
||||
duration: '1~3시간',
|
||||
},
|
||||
{
|
||||
id: 'S1-4', name: '수주 가능성 평가', icon: '📊',
|
||||
description: '수집된 정보를 바탕으로 수주 가능성과 수익성을 평가하여 입찰 참여 여부를 결정한다.',
|
||||
id: 'S1-4', name: '프로젝트 검토', icon: '📊',
|
||||
description: '수집된 정보를 바탕으로 수익성을 평가하여 진행 여부를 결정한다.',
|
||||
input: ['고객 요구사항서', '예상 공사비', '경쟁 현황'],
|
||||
output: ['수주 검토서 (Go/No-Go 결정)'],
|
||||
output: ['프로젝트 검토서 (Go/No-Go 결정)'],
|
||||
responsible: '영업팀장',
|
||||
tips: ['수익률 10% 미만 프로젝트는 팀장 승인 필요', '리스크 요소 반드시 기재'],
|
||||
duration: '1일',
|
||||
@@ -61,60 +61,15 @@
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 2, phase: 'estimate', name: '견적서 작성', icon: '🧮', dept: '견적팀',
|
||||
color: '#8B5CF6', bgColor: '#F5F3FF',
|
||||
description: '자재/인건비/경비를 산출하여 견적서 작성',
|
||||
documents: ['견적서', '단가산출서', '자재목록'],
|
||||
samLink: '/juil/estimate', samMenu: '견적/입찰/공사관리',
|
||||
subSteps: [
|
||||
{
|
||||
id: 'S2-1', name: '물량 산출', icon: '📏',
|
||||
description: '도면과 실측 데이터를 기반으로 자재별 물량(수량)을 산출한다.',
|
||||
input: ['도면', '실측 데이터', '현장조사서'],
|
||||
output: ['물량산출서 (자재별 수량)'],
|
||||
responsible: '견적 담당자',
|
||||
tips: ['로스율(5~10%) 반드시 반영', '현장 여건에 따른 추가 물량 고려'],
|
||||
duration: '2~3일',
|
||||
},
|
||||
{
|
||||
id: 'S2-2', name: '단가 산정', icon: '💵',
|
||||
description: '자재 단가, 인건비, 장비비, 경비 등 각 항목의 단가를 산정한다.',
|
||||
input: ['물량산출서', '최근 자재 시세', '노무단가표'],
|
||||
output: ['단가산출서'],
|
||||
responsible: '견적 담당자',
|
||||
tips: ['자재 시세는 최근 3개월 평균 적용', '노무단가는 대한건설협회 기준 참조'],
|
||||
duration: '1~2일',
|
||||
},
|
||||
{
|
||||
id: 'S2-3', name: '견적가 산출', icon: '🧮',
|
||||
description: '물량 x 단가를 계산하고, 이윤율/관리비를 적용하여 최종 견적가를 산출한다.',
|
||||
input: ['물량산출서', '단가산출서', '이윤율 기준'],
|
||||
output: ['원가계산서', '내부 견적서'],
|
||||
responsible: '견적팀장',
|
||||
tips: ['이윤율은 프로젝트 규모별 차등 적용', '원가 대비 견적가 검증 필수'],
|
||||
duration: '1일',
|
||||
},
|
||||
{
|
||||
id: 'S2-4', name: '견적서 작성/검토', icon: '📋',
|
||||
description: '고객 제출용 견적서를 작성하고, 팀장 검토 후 최종 확정한다.',
|
||||
input: ['원가계산서', '고객 요구 양식'],
|
||||
output: ['공식 견적서 (PDF)'],
|
||||
responsible: '견적팀장 → 대표이사 승인',
|
||||
tips: ['고객사 양식이 별도로 있는지 확인', '견적 유효기간 명시 (보통 30일)'],
|
||||
duration: '1일',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 3, phase: 'bid', name: '입찰 참여', icon: '🏷️', dept: '영업팀',
|
||||
id: 2, phase: 'bid', name: '입찰 참여', icon: '🏷️', dept: '영업팀',
|
||||
color: '#EC4899', bgColor: '#FDF2F8',
|
||||
description: '견적서 기반으로 입찰에 참여',
|
||||
description: '공공/대형 프로젝트의 경우 입찰에 참여한다. 소규모 업체나 수의계약의 경우 이 단계를 생략하고 바로 견적서 작성으로 진행한다.',
|
||||
documents: ['입찰서', '기술제안서', '사업자등록증 사본'],
|
||||
samLink: '/juil/estimate', samMenu: '견적/입찰/공사관리',
|
||||
branch: true,
|
||||
branch: true, optional: true,
|
||||
subSteps: [
|
||||
{
|
||||
id: 'S3-1', name: '입찰서류 준비', icon: '📂',
|
||||
id: 'S2-1', name: '입찰서류 준비', icon: '📂',
|
||||
description: '입찰 참여에 필요한 서류(사업자등록증, 실적증명, 재무제표 등)를 준비한다.',
|
||||
input: ['입찰 공고문 (필요서류 목록)', '회사 기본서류'],
|
||||
output: ['입찰서류 패키지'],
|
||||
@@ -123,7 +78,7 @@
|
||||
duration: '2~3일',
|
||||
},
|
||||
{
|
||||
id: 'S3-2', name: '기술제안서 작성', icon: '📝',
|
||||
id: 'S2-2', name: '기술제안서 작성', icon: '📝',
|
||||
description: '시공 방법, 품질관리 계획, 안전관리 계획 등을 포함한 기술제안서를 작성한다.',
|
||||
input: ['현장조사서', '시공 실적', '품질/안전 매뉴얼'],
|
||||
output: ['기술제안서'],
|
||||
@@ -132,7 +87,7 @@
|
||||
duration: '3~5일',
|
||||
},
|
||||
{
|
||||
id: 'S3-3', name: '입찰가 결정', icon: '🎯',
|
||||
id: 'S2-3', name: '입찰가 결정', icon: '🎯',
|
||||
description: '견적가를 기반으로 경쟁 상황을 고려한 최종 입찰가를 결정한다.',
|
||||
input: ['내부 견적서', '경쟁사 동향', '예정가 분석'],
|
||||
output: ['최종 입찰가 결정서'],
|
||||
@@ -141,7 +96,7 @@
|
||||
duration: '당일',
|
||||
},
|
||||
{
|
||||
id: 'S3-4', name: '입찰서 제출', icon: '📮',
|
||||
id: 'S2-4', name: '입찰서 제출', icon: '📮',
|
||||
description: '준비된 서류와 입찰가를 포함하여 입찰서를 제출한다.',
|
||||
input: ['입찰서류 패키지', '최종 입찰가', '입찰보증금'],
|
||||
output: ['입찰 접수증', '입찰 결과 대기'],
|
||||
@@ -152,25 +107,70 @@
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 4, phase: 'contract', name: '낙찰/계약', icon: '📝', dept: '영업팀',
|
||||
id: 3, phase: 'estimate', name: '견적서 작성', icon: '🧮', dept: '견적팀',
|
||||
color: '#8B5CF6', bgColor: '#F5F3FF',
|
||||
description: '자재/인건비/경비를 산출하여 견적서를 작성한다. 입찰 프로젝트는 입찰가 산정에, 수의계약은 고객 제출용으로 활용한다.',
|
||||
documents: ['견적서', '단가산출서', '자재목록'],
|
||||
samLink: '/juil/estimate', samMenu: '견적/입찰/공사관리',
|
||||
subSteps: [
|
||||
{
|
||||
id: 'S3-1', name: '물량 산출', icon: '📏',
|
||||
description: '도면과 실측 데이터를 기반으로 자재별 물량(수량)을 산출한다.',
|
||||
input: ['도면', '실측 데이터', '현장조사서'],
|
||||
output: ['물량산출서 (자재별 수량)'],
|
||||
responsible: '견적 담당자',
|
||||
tips: ['로스율(5~10%) 반드시 반영', '현장 여건에 따른 추가 물량 고려'],
|
||||
duration: '2~3일',
|
||||
},
|
||||
{
|
||||
id: 'S3-2', name: '단가 산정', icon: '💵',
|
||||
description: '자재 단가, 인건비, 장비비, 경비 등 각 항목의 단가를 산정한다.',
|
||||
input: ['물량산출서', '최근 자재 시세', '노무단가표'],
|
||||
output: ['단가산출서'],
|
||||
responsible: '견적 담당자',
|
||||
tips: ['자재 시세는 최근 3개월 평균 적용', '노무단가는 대한건설협회 기준 참조'],
|
||||
duration: '1~2일',
|
||||
},
|
||||
{
|
||||
id: 'S3-3', name: '견적가 산출', icon: '🧮',
|
||||
description: '물량 x 단가를 계산하고, 이윤율/관리비를 적용하여 최종 견적가를 산출한다.',
|
||||
input: ['물량산출서', '단가산출서', '이윤율 기준'],
|
||||
output: ['원가계산서', '내부 견적서'],
|
||||
responsible: '견적팀장',
|
||||
tips: ['이윤율은 프로젝트 규모별 차등 적용', '원가 대비 견적가 검증 필수'],
|
||||
duration: '1일',
|
||||
},
|
||||
{
|
||||
id: 'S3-4', name: '견적서 작성/검토', icon: '📋',
|
||||
description: '고객 제출용 견적서를 작성하고, 팀장 검토 후 최종 확정한다.',
|
||||
input: ['원가계산서', '고객 요구 양식'],
|
||||
output: ['공식 견적서 (PDF)'],
|
||||
responsible: '견적팀장 → 대표이사 승인',
|
||||
tips: ['고객사 양식이 별도로 있는지 확인', '견적 유효기간 명시 (보통 30일)'],
|
||||
duration: '1일',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 4, phase: 'contract', name: '수주/계약', icon: '📝', dept: '영업팀',
|
||||
color: '#10B981', bgColor: '#ECFDF5',
|
||||
description: '낙찰 후 공사 계약 체결',
|
||||
description: '견적 승인 또는 낙찰 후 공사 계약을 체결하고 프로젝트를 등록한다.',
|
||||
documents: ['공사계약서', '착공계', '공정표'],
|
||||
samLink: '/juil/project', samMenu: '프로젝트관리/기성청구',
|
||||
subSteps: [
|
||||
{
|
||||
id: 'S4-1', name: '낙찰 통보 확인', icon: '🏆',
|
||||
description: '입찰 결과를 확인하고, 낙찰 통보서를 수령한다.',
|
||||
input: ['입찰 결과 공고', '낙찰 통보서'],
|
||||
output: ['낙찰 확인 (사내 공유)'],
|
||||
id: 'S4-1', name: '수주 확정', icon: '🏆',
|
||||
description: '입찰 낙찰 통보 또는 고객 견적 승인을 확인하고 수주를 확정한다.',
|
||||
input: ['낙찰 통보서 또는 견적 승인 회신'],
|
||||
output: ['수주 확정 (사내 공유)'],
|
||||
responsible: '영업 담당자',
|
||||
tips: ['낙찰 후 계약 기한 확인 (보통 7~10일)', '유찰 시 원인 분석하여 다음 입찰에 반영'],
|
||||
tips: ['입찰: 낙찰 후 계약 기한 확인 (보통 7~10일)', '수의계약: 고객 승인 서면 확보 필수'],
|
||||
duration: '당일',
|
||||
},
|
||||
{
|
||||
id: 'S4-2', name: '계약서 검토/체결', icon: '🖊️',
|
||||
description: '계약 조건(금액, 공기, 하자보증 등)을 검토하고 계약서에 서명한다.',
|
||||
input: ['계약서 초안 (발주처 제공)', '낙찰 내역서'],
|
||||
input: ['계약서 초안 (발주처 제공)', '견적서/낙찰 내역서'],
|
||||
output: ['공사계약서 (날인본)', '계약보증금 납부 영수증'],
|
||||
responsible: '대표이사 + 경영지원팀',
|
||||
tips: ['지체상금 조항 반드시 확인', '하자보증기간/비율 확인', '대금지급 조건 확인'],
|
||||
@@ -583,7 +583,7 @@ function ProcessNode({ process, isActive, onClick }) {
|
||||
fontSize: '11px', color: '#FFF', backgroundColor: process.color,
|
||||
borderRadius: '10px', padding: '1px 8px', display: 'inline-block',
|
||||
}}>{process.dept}</div>
|
||||
{process.branch && (
|
||||
{process.optional && (
|
||||
<div style={{
|
||||
position: 'absolute', top: '-8px', right: '-8px',
|
||||
width: '20px', height: '20px', borderRadius: '50%',
|
||||
@@ -591,6 +591,11 @@ function ProcessNode({ process, isActive, onClick }) {
|
||||
display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '10px',
|
||||
}}>⑂</div>
|
||||
)}
|
||||
{process.optional && (
|
||||
<div style={{
|
||||
fontSize: '9px', color: '#F59E0B', fontWeight: 600, marginTop: '4px',
|
||||
}}>생략 가능</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -870,15 +875,15 @@ function DetailModal({ process, onClose }) {
|
||||
);
|
||||
}
|
||||
|
||||
// --- 입찰 분기 표시 ---
|
||||
// --- 분기 표시 ---
|
||||
function BranchInfo() {
|
||||
return (
|
||||
<div style={{ display: 'flex', gap: '8px', justifyContent: 'center', margin: '8px 0', fontSize: '11px' }}>
|
||||
<span style={{ padding: '2px 10px', borderRadius: '10px', backgroundColor: '#DCFCE7', color: '#166534', fontWeight: 600 }}>
|
||||
낙찰 → 계약 진행
|
||||
<span style={{ padding: '2px 10px', borderRadius: '10px', backgroundColor: '#FEF3C7', color: '#92400E', fontWeight: 600 }}>
|
||||
대형/공공 → 입찰 참여 → 견적서
|
||||
</span>
|
||||
<span style={{ padding: '2px 10px', borderRadius: '10px', backgroundColor: '#FEE2E2', color: '#991B1B', fontWeight: 600 }}>
|
||||
유찰 → 재입찰/종료
|
||||
<span style={{ padding: '2px 10px', borderRadius: '10px', backgroundColor: '#DBEAFE', color: '#1E40AF', fontWeight: 600 }}>
|
||||
소규모/수의계약 → 입찰 생략 → 견적서
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
@@ -968,7 +973,7 @@ function App() {
|
||||
}}>
|
||||
<span><strong>범례:</strong></span>
|
||||
<span>클릭 → 상세 업무 모달</span>
|
||||
<span>⑂ 분기점 (입찰 결과)</span>
|
||||
<span>⑂ 생략 가능 단계 (입찰)</span>
|
||||
<span>↗ SAM 메뉴 바로가기</span>
|
||||
<span>ESC 키로 모달 닫기</span>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user