b17d7b063d
G11 수주 결재상신(905d5c09)과 동일 패턴을 견적관리에 확장. target_type='CONTRACT_ESTIMATE',
target_objid=estimate_template.objid(최신 차수), formId='1162' (수주 1161과 별도 양식).
- 백엔드: salesEstimateService.startEstimateApproval + POST /sales/estimate/:id/amaranth-approval
- 견적 list SQL: LEFT JOIN amaranth_approval(CONTRACT_ESTIMATE) + APPR_STATUS 4단계 한글 라벨 + approval_required='N' fallback (wace contractMgmt.xml:513~522 1:1)
- 프론트: 견적관리 placeholder 토스트 → handleAmaranthApproval 핸들러 + sky-600 Send 버튼 (수주 페이지와 통일)
- docker-compose 3개: AMARANTH_OUT_PROCESS_CODE_CONTRACT_ESTIMATE + AMARANTH_FORM_ID_CONTRACT_ESTIMATE=1162 추가
- 가드: 행 미선택 / est_objid 없음(견적서 미작성) / inProcess+complete / notRequired+approval_required='N'
- 사전판정(checkApprovalRequired)은 G4 영역으로 분리 — 이번 PR은 단순 SSO 흐름만
검증: BEGIN/ROLLBACK으로 26C-0712(est_objid=-452406811) 4단계 상태(create→inProcess→complete→reject)
+ amaranth row 삭제 시 approval_required='N' fallback 모두 한글 라벨 정상. 문서 08-estimate-approval-verify.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
60 lines
2.6 KiB
YAML
60 lines
2.6 KiB
YAML
services:
|
|
# Node.js 백엔드
|
|
plm-backend:
|
|
build:
|
|
context: ../../backend-node
|
|
dockerfile: ../docker/prod/backend.Dockerfile # 운영용 Dockerfile
|
|
container_name: pms-backend-prod
|
|
ports:
|
|
- "8080:8080" # 호스트:컨테이너 포트 매핑
|
|
networks:
|
|
- pms-network
|
|
environment:
|
|
- NODE_ENV=production
|
|
- PORT=8080
|
|
- HOST=0.0.0.0 # 모든 인터페이스에서 바인딩
|
|
- DATABASE_URL=${DATABASE_URL}
|
|
- JWT_SECRET=${JWT_SECRET}
|
|
- JWT_EXPIRES_IN=${JWT_EXPIRES_IN:-24h}
|
|
- CORS_ORIGIN=${CORS_ORIGIN:-http://192.168.0.70:5555,http://39.117.244.52:5555,http://localhost:9771}
|
|
- CORS_CREDENTIALS=true
|
|
- LOG_LEVEL=info
|
|
- ENCRYPTION_KEY=${ENCRYPTION_KEY}
|
|
- KMA_API_KEY=${KMA_API_KEY}
|
|
- ITS_API_KEY=${ITS_API_KEY}
|
|
- EXPRESSWAY_API_KEY=${EXPRESSWAY_API_KEY:-}
|
|
- SMART_FACTORY_API_KEY_COMPANY_7=${SMART_FACTORY_API_KEY_COMPANY_7:-}
|
|
- SMART_FACTORY_API_KEY_COMPANY_8=${SMART_FACTORY_API_KEY_COMPANY_8:-}
|
|
- SMART_FACTORY_API_KEY_COMPANY_9=${SMART_FACTORY_API_KEY_COMPANY_9:-}
|
|
- SMART_FACTORY_API_KEY_COMPANY_10=${SMART_FACTORY_API_KEY_COMPANY_10:-}
|
|
- SMART_FACTORY_API_KEY_COMPANY_16=${SMART_FACTORY_API_KEY_COMPANY_16:-}
|
|
# SMTP (견적서/발주서 등 메일 발송)
|
|
- SMTP_HOST=${SMTP_HOST:-erp.rps-korea.com}
|
|
- SMTP_PORT=${SMTP_PORT:-25}
|
|
- SMTP_TLS=${SMTP_TLS:-false}
|
|
- SMTP_SEND_SWITCH=${SMTP_SEND_SWITCH:-Y}
|
|
- SMTP_USER_ERP=${SMTP_USER_ERP:-}
|
|
- SMTP_PW_ERP=${SMTP_PW_ERP:-}
|
|
- SMTP_USER_SALES=${SMTP_USER_SALES:-}
|
|
- SMTP_PW_SALES=${SMTP_PW_SALES:-}
|
|
- SMTP_USER_PURCHASE=${SMTP_USER_PURCHASE:-}
|
|
- SMTP_PW_PURCHASE=${SMTP_PW_PURCHASE:-}
|
|
# Amaranth 전자결재 (수주/견적 등) — wace Constants.AMARANTH_OUT_PROCESS_CODE='RPSPLM_00001' 1:1
|
|
- AMARANTH_OUT_PROCESS_CODE=${AMARANTH_OUT_PROCESS_CODE:-RPSPLM_00001}
|
|
- AMARANTH_OUT_PROCESS_CODE_CONTRACT_ORDER=${AMARANTH_OUT_PROCESS_CODE_CONTRACT_ORDER:-}
|
|
- AMARANTH_OUT_PROCESS_CODE_CONTRACT_ESTIMATE=${AMARANTH_OUT_PROCESS_CODE_CONTRACT_ESTIMATE:-}
|
|
- AMARANTH_FORM_ID_CONTRACT_ORDER=${AMARANTH_FORM_ID_CONTRACT_ORDER:-1161}
|
|
- AMARANTH_FORM_ID_CONTRACT_ESTIMATE=${AMARANTH_FORM_ID_CONTRACT_ESTIMATE:-1162}
|
|
- AMARANTH_COMP_SEQ=${AMARANTH_COMP_SEQ:-1000}
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3001/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
|
|
networks:
|
|
pms-network:
|
|
external: true # 외부에서 생성된 네트워크 사용
|