summaryrefslogtreecommitdiff
path: root/lib/pq/service.ts
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-10-24 09:52:35 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-10-24 09:52:35 +0000
commit0174ad394032a8dad81107341f477d6d23a3c04c (patch)
tree6be84f638a852e6d0cea057b67e462e78fc65d41 /lib/pq/service.ts
parent912e2bc761d7d57bd33d68cb5050da43dea59636 (diff)
(최겸) 구매 피드백 수정(PQ, 실사 등)-1024
Diffstat (limited to 'lib/pq/service.ts')
-rw-r--r--lib/pq/service.ts80
1 files changed, 50 insertions, 30 deletions
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);
}
}