From 0174ad394032a8dad81107341f477d6d23a3c04c Mon Sep 17 00:00:00 2001 From: dujinkim Date: Fri, 24 Oct 2025 09:52:35 +0000 Subject: (최겸) 구매 피드백 수정(PQ, 실사 등)-1024 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pq/service.ts | 80 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 30 deletions(-) (limited to 'lib/pq/service.ts') diff --git a/lib/pq/service.ts b/lib/pq/service.ts index f58a1d4d..7296b836 100644 --- a/lib/pq/service.ts +++ b/lib/pq/service.ts @@ -456,10 +456,11 @@ export async function submitPQAction({ // 특정 PQ Submission ID가 있는 경우 if (pqSubmissionId) { existingSubmission = await db - .select({ - id: vendorPQSubmissions.id, + .select({ + id: vendorPQSubmissions.id, status: vendorPQSubmissions.status, - type: vendorPQSubmissions.type + type: vendorPQSubmissions.type, + requesterId: vendorPQSubmissions.requesterId }) .from(vendorPQSubmissions) .where( @@ -490,10 +491,11 @@ export async function submitPQAction({ } existingSubmission = await db - .select({ - id: vendorPQSubmissions.id, + .select({ + id: vendorPQSubmissions.id, status: vendorPQSubmissions.status, - type: vendorPQSubmissions.type + type: vendorPQSubmissions.type, + requesterId: vendorPQSubmissions.requesterId }) .from(vendorPQSubmissions) .where(and(...submissionQueryConditions)) @@ -539,6 +541,7 @@ export async function submitPQAction({ submittedAt: currentDate, createdAt: currentDate, updatedAt: currentDate, + requesterId: requesterId, }); } @@ -556,32 +559,49 @@ export async function submitPQAction({ .where(eq(vendors.id, vendorId)); } } - - // 5. 관리자에게 이메일 알림 발송 - if (process.env.ADMIN_EMAIL) { + + // 5. PQ 요청자에게 이메일 알림 발송 + const targetSubmissionId = existingSubmission?.id || ''; + const targetRequesterId = existingSubmission?.requesterId || requesterId; + + if (targetRequesterId) { try { - const emailSubject = projectId - ? `[eVCP] Project PQ Submitted: ${vendor.vendorName} for ${projectName}` - : `[eVCP] General PQ Submitted: ${vendor.vendorName}`; - - const adminUrl = `http://${host}/evcp/pq/${vendorId}/${existingSubmission?.id || ''}`; - - await sendEmail({ - to: process.env.ADMIN_EMAIL, - subject: emailSubject, - template: "pq-submitted-admin", - context: { - vendorName: vendor.vendorName, - vendorId: vendor.id, - projectId: projectId, - projectName: projectName, - isProjectPQ: !!projectId, - submittedDate: currentDate.toLocaleString(), - adminUrl, - } - }); + // 요청자 정보 조회 + const requester = await db + .select({ + id: users.id, + name: users.name, + email: users.email, + }) + .from(users) + .where(eq(users.id, targetRequesterId)) + .then(rows => rows[0]); + + if (requester?.email) { + const emailSubject = projectId + ? `[eVCP] Project PQ Submitted: ${vendor.vendorName} for ${projectName}` + : `[eVCP] General PQ Submitted: ${vendor.vendorName}`; + + const adminUrl = `http://${host}/evcp/pq/${vendorId}/${targetSubmissionId}`; + + await sendEmail({ + to: requester.email, + subject: emailSubject, + template: "pq-submitted-admin", + context: { + vendorName: vendor.vendorName, + vendorId: vendor.id, + projectId: projectId, + projectName: projectName, + isProjectPQ: !!projectId, + submittedDate: currentDate.toLocaleString(), + adminUrl, + requesterName: requester.name, + } + }); + } } catch (emailError) { - console.error("Failed to send admin notification:", emailError); + console.error("Failed to send requester notification:", emailError); } } -- cgit v1.2.3