hjjeong
b17d7b063d
PR-D G11 견적 결재상신 — Amaranth 직행 (wace estimateList_new.jsp btnApproval 1:1)
...
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 >
2026-05-11 18:16:43 +09:00
hjjeong
905d5c0976
PR-D G9 수주복사 + G11 Amaranth 수주 결재상신 (wace 1:1)
...
[G9 수주복사 — wace copyEstimateAndOrderInfo 1:1]
- salesOrderMgmtService.copyOrder: 새 영업번호({YY}C-{NNNN}) 채번 +
contract_mgmt 23컬럼 INSERT-SELECT(contract_result='', is_direct_order='Y' 강제) +
contract_item + contract_item_serial 통째 복제
- POST /api/sales/order-mgmt/:id/copy 라우트
- 주문관리 그리드 "수주복사" 버튼 (Copy 아이콘) + handleCopyOrder
[G11 Amaranth 수주 결재상신 — wace ApprovalService.getAmaranthSsoUrl 1:1]
- chpark의 amaranthApprovalClient(HMAC-SHA256 + AES-128-CBC) 재사용
- amaranth_approval만 사용(자체 approval 미경유, wace 운영 패턴 동일)
- target_type='CONTRACT_ORDER', formId='1161', compSeq='1000'
- approKey 분기: 신규 / reject·delete·create는 새 approKey UPDATE / 그 외 재사용
- salesOrderMgmtService.startOrderApproval: user_info.emp_seq 조회 →
라인 0건 가드 → 매핑 분기 → SSO URL 발급 → INSERT/UPDATE → fullUrl 반환
- POST /api/sales/order-mgmt/:id/amaranth-approval 라우트
- 주문관리 그리드 "결재상신" 버튼 (Send 아이콘, sky-600) + handleAmaranthApproval
- getList SQL에 LEFT JOIN amaranth_approval AMR_ORDER 추가 +
order_appr_status(작성중/결재중/결재완료/반려 한글) + order_amaranth_status 노출
[DB 스키마]
- amaranth_approval.target_objid BIGINT → VARCHAR(80) (wace 운영 1:1)
· 출처: wace 매퍼 T.OBJID::VARCHAR = AMR_ORDER.TARGET_OBJID
· 사유: contract_mgmt.objid가 'CM-' prefix varchar라 bigint cast 불가
· 데이터 0건 무손실, ECR/CS는 bigint→varchar 자동 cast로 무영향
- approvalTableMigration.ts 동기화
[운영 배포 환경변수 — wace Constants 1:1 default 박힘]
- AMARANTH_OUT_PROCESS_CODE=RPSPLM_00001 (wace Constants.java:81)
- AMARANTH_FORM_ID_CONTRACT_ORDER=1161 (wace orderMgmtList.jsp:558)
- AMARANTH_COMP_SEQ=1000 (wace orderMgmtList.jsp:559)
- 3개 docker-compose(deploy/onpremise, docker/deploy, docker/prod) 모두
${VAR:-default} 형식으로 매핑 — 호스트 .env 미설정 시 default 동작
[검증]
- G9: BEGIN/ROLLBACK으로 26C-0800(라인 3건) 복사 시뮬레이션 — 헤더 23컬럼 1:1,
채번 26C-0803, 라인 3→3건 + seq 보존
- G11: 4단계 상태 라벨(create→inProcess→complete→reject) 모두 정상,
VARCHAR PK(CM-... prefix) JOIN도 정상
- 문서: docs/migration/sales/06-copy-order-verify.md, 07-amaranth-approval-verify.md
- GAP: G9 ✅ , G10 ❌ (영업 GAP 아님 — Admin 도메인), G11 ✅
[운영 트러블슈팅 노트 — 07-verify.md 트러블슈팅 섹션]
dev에서 amaranth 측이 "API Proxy 호출 시 유효한 레디스 값이 존재하지 않습니다"로
거부. 우리 코드는 정상 — 'Amaranth - 결재' accessToken을 amaranth 서버 측
Redis에 등록받아야 동작. chpark/RPS ERP 담당자 협조 영역(코드 변경 없음).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-11 17:44:54 +09:00
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
kjs
822f9ac35a
feat: Implement smart factory log functionality
...
- Added a new controller for managing smart factory logs, including retrieval and statistics endpoints.
- Integrated smart factory log migration to set up the necessary database structure.
- Enhanced the authentication controller to include user name in log submissions.
- Developed a frontend page for displaying and filtering smart factory logs, accessible only to super admins.
- Implemented API calls for fetching logs and statistics, improving data visibility and management.
These changes aim to provide comprehensive logging capabilities for smart factory activities, enhancing monitoring and analysis for administrators.
2026-04-07 10:35:16 +09:00
kjs
ca7b145c7f
feat: Enhance logging and configuration for Smart Factory integration
...
- Added companyCode to the AuthController for improved logging.
- Updated sendSmartFactoryLog function to support company-specific API keys.
- Configured environment variables for company-specific Smart Factory API keys in Docker Compose files.
This update ensures that logs are more informative and that the correct API keys are used based on the company context.
2026-04-03 11:23:02 +09:00
kjs
ccb0c8df4c
Add environment variable example and update .gitignore
...
- Created a new .env.example file to provide a template for environment variables, including database connection details, JWT settings, encryption keys, and external API keys.
- Updated .gitignore to include additional test output directories and archive files, ensuring that unnecessary files are not tracked by Git.
- Removed outdated approval test reports and scripts that are no longer needed, streamlining the project structure.
These changes improve the clarity of environment configuration and maintain a cleaner repository.
2026-04-01 12:12:15 +09:00
dohyeons
fc6e84b299
Merge remote-tracking branch 'upstream/main'
2025-10-30 15:18:25 +09:00
dohyeons
0776e7cd4c
개발서버에 환경변수 추가
2025-10-30 15:17:48 +09:00
dohyeons
b01e241a44
Merge remote-tracking branch 'upstream/main'
2025-10-30 15:06:56 +09:00
dohyeons
444b2fab2b
개발서버 도커 컴포즈 수정
2025-10-30 12:09:22 +09:00
dohyeons
b6b42c51ed
test
2025-10-23 17:26:10 +09:00
dohyeons
d6d179025d
ENCRYPTION_KEY 환경변수가 설정
2025-10-21 09:43:01 +09:00
dohyeons
be1bd6a40a
Alpine Linux 명령어로 수정
2025-10-21 09:34:34 +09:00
dohyeons
21688d3815
개발서버 수정사항 적용
2025-10-21 09:29:35 +09:00
dohyeons
3682cc0ef7
Merge remote-tracking branch 'upstream/main'
2025-10-20 18:15:19 +09:00
dohyeons
70f6093fb5
도커파일 원상복구
2025-10-20 18:08:03 +09:00
dohyeons
e7ee49e039
Merge remote-tracking branch 'upstream/main'
2025-10-20 17:54:59 +09:00
dohyeons
1d8d90e5c6
Docker Hub에 의존하지 않고 로컬 Docker 데몬의 기본 빌더를 사용
2025-10-20 17:54:42 +09:00
dohyeons
683d463a9f
Merge remote-tracking branch 'upstream/main'
2025-10-16 10:33:53 +09:00
dohyeons
8f676c0a6d
배포용 수정
2025-10-16 10:33:21 +09:00
dohyeons
f54f6336a5
도커 재수정
2025-10-02 16:14:22 +09:00
kjs
6fc140b423
fix: Docker 파일에서 Prisma 명령 제거
...
문제:
- docker/dev/backend.Dockerfile에 Prisma 명령 남아있음
- docker/prod/backend.Dockerfile에 Prisma 명령 남아있음
- Docker 빌드 시 '/prisma' not found 에러 발생
해결:
1. docker/dev/backend.Dockerfile:
- COPY prisma ./prisma 제거
- RUN npx prisma generate 제거
2. docker/prod/backend.Dockerfile:
- Dependencies stage: Prisma 관련 코드 제거
- Build stage: COPY prisma 제거, npx prisma generate 제거
- Runtime stage: 주석 업데이트
결과:
- ✅ Docker 빌드 에러 해결
- ✅ Prisma 의존성 완전 제거
- ✅ 개발/운영 환경 모두 Raw Query 기반
2025-10-01 15:11:07 +09:00
hyeonsu
724ed51826
스크립트 수정
2025-09-18 18:38:13 +09:00
hyeonsu
40d8fa605b
모든 곳의 API URL 통일
2025-09-04 17:19:30 +09:00
hyeonsu
2bffec1dbf
빌드 시 환경변수 적용
2025-09-04 16:55:11 +09:00
hyeonsu
fc5bd97ac1
동적 API URL 설정
2025-09-04 15:18:25 +09:00
hyeonsu
103dd9907d
외부 ip 로 api 호출 전환
2025-09-04 14:45:58 +09:00
hyeonsu
c78b239db2
파일 되돌리기
2025-09-04 14:15:25 +09:00
hyeonsu
22b0f839c6
명시적 HOST 설정 추가
2025-09-04 14:11:20 +09:00
hyeonsu
8d76df1cfe
도커 yml에 cors 추가
2025-09-04 12:14:06 +09:00
hyeonsu
59fb1edc5c
운영용 cors 주소 추가
2025-08-28 15:38:00 +09:00
hyeonsu
704d29bda5
운영용 프론트엔드 포트 수정
2025-08-28 15:32:11 +09:00
hyeonsu
0043fb1315
백엔드 도커파일 수정
2025-08-28 15:24:00 +09:00
hyeonsu
e9082d7fef
도커 파일 및 스크립트 파일 위치 정리
2025-08-28 13:44:01 +09:00