Files
hjjeong 902118d46e PR-C G6 견적관리 SMTP 메일 발송 (wace sendEstimateMailCustom 1:1)
- nodemailer + pdf-lib로 실제 SMTP 발송. mail_log INSERT(is_send='N') → 발송 → 성공 시 UPDATE(is_send='Y'), 실패 시 UPDATE(error_log). SMTP_SEND_SWITCH='N'면 발송 스킵.
- SMTP 3계정(ERP/SALES/PURCHASE) host/user/pw 환경변수 분리. 견적서는 SALES. dev는 backend-node/.env, 운영은 deploy/onpremise + docker/prod + docker/deploy 3개 compose에 environment 매핑(호스트 .env에서 실값 주입).
- 다이얼로그(EstimateMailDialog): wace estimateMailFormPopup.jsp 1:1. 고객사 담당자 체크박스 + To/CC/제목/내용 자동채움(GET /sales/estimate/mail-info/:id + .../customer/:id/managers). hasBaseEst/hasAddEst 분기로 PDF 첨부 안내. 본문은 다이얼로그 plain text 입력 → <br> 변환.
- PDF 첨부: 메일 다이얼로그가 hidden iframe으로 최신 차수 template1/2 페이지를 렌더 → window.fn_generateAndUploadPdf(cb) 글로벌 → jsPDF.output('datauristring') base64 추출 → 한 요청에 전달. backend가 견적 PDF + estimate02 N건 pdf-lib로 합본 첨부.
- PDF 캡처 수신처 누락 픽스: CustomerSelect의 /sales/customers 옵션 fetch가 iframe에서 dataLoaded=true 뒤에 끝나 셀렉트 라벨이 빈 상태로 캡처되던 현상. fetchCustomers export + template1/2 setLoading(false) 직전 await + onclone에서 [role="combobox"] 라이브 DOM 텍스트 fallback.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 16:09:10 +09:00

40 lines
1.2 KiB
Bash

# ==================== 운영/작업 지원 위젯 데이터 소스 설정 ====================
# 옵션: file | database | memory
# - file: 파일 기반 (빠른 개발/테스트)
# - database: PostgreSQL DB (실제 운영)
# - memory: 메모리 목 데이터 (테스트)
TODO_DATA_SOURCE=file
BOOKING_DATA_SOURCE=file
MAINTENANCE_DATA_SOURCE=memory
DOCUMENT_DATA_SOURCE=memory
# OpenWeatherMap API 키 추가 (실시간 날씨)
# https://openweathermap.org/api 에서 무료 가입 후 발급
OPENWEATHER_API_KEY=your_openweathermap_api_key_here
# ==================== SMTP (견적서/발주서 등 메일 발송) ====================
# wace Constants.Mail 1:1. 호스트는 ERP/SALES/PURCHASE 모두 동일.
# 운영 발송 OFF: SMTP_SEND_SWITCH=N (mail_log INSERT만 수행, Transport.send 스킵)
SMTP_HOST=erp.rps-korea.com
SMTP_PORT=25
SMTP_TLS=false
SMTP_SEND_SWITCH=Y
# 기본/ERP 계정
SMTP_USER_ERP=erp@example.com
SMTP_PW_ERP=your_erp_password
# 영업팀 (견적서 등) — accountType=SALES 사용 시
SMTP_USER_SALES=sales@example.com
SMTP_PW_SALES=your_sales_password
# 구매팀 (발주서 등) — accountType=PURCHASE 사용 시
SMTP_USER_PURCHASE=purchase@example.com
SMTP_PW_PURCHASE=your_purchase_password