summaryrefslogtreecommitdiff
path: root/lib/vendor-candidates/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendor-candidates/service.ts')
-rw-r--r--lib/vendor-candidates/service.ts45
1 files changed, 33 insertions, 12 deletions
diff --git a/lib/vendor-candidates/service.ts b/lib/vendor-candidates/service.ts
index bfeb3090..2b6421f5 100644
--- a/lib/vendor-candidates/service.ts
+++ b/lib/vendor-candidates/service.ts
@@ -252,20 +252,41 @@ export async function updateVendorCandidate(input: UpdateVendorCandidateSchema,
.returning();
// 로그 작성
- const statusChanged =
- updateData.status &&
+ const statusChanged =
+ updateData.status !== undefined &&
existingCandidate.status !== updateData.status;
- await tx.insert(vendorCandidateLogs).values({
- vendorCandidateId: id,
- userId: userId,
- action: statusChanged ? "status_change" : "update",
- oldStatus: statusChanged ? existingCandidate.status : undefined,
- newStatus: statusChanged ? updateData.status : undefined,
- comment: statusChanged
- ? `Status changed from ${existingCandidate.status} to ${updateData.status}`
- : `Updated vendor candidate: ${existingCandidate.companyName}`
- });
+ // 상태가 변경된 경우에만 상태 변경 로그 기록
+ if (statusChanged) {
+ await tx.insert(vendorCandidateLogs).values({
+ vendorCandidateId: id,
+ userId: userId,
+ action: "status_change",
+ oldStatus: existingCandidate.status,
+ newStatus: updateData.status,
+ comment: `Status changed from ${existingCandidate.status} to ${updateData.status}`
+ });
+ }
+
+ // 상태가 변경되지 않았지만 다른 필드가 변경된 경우에만 일반 업데이트 로그 기록
+ // (실제로 변경된 필드가 있는지 확인하는 로직은 복잡하므로, 상태 변경이 아닌 경우에만 로그 기록)
+ // 참고: 모든 필드가 동일한 경우도 있지만, 사용자가 저장 버튼을 눌렀다는 것은 변경 의도가 있다는 의미
+ if (!statusChanged) {
+ // 다른 필드 변경 여부를 간단히 확인 (실제로는 더 정교한 비교가 필요할 수 있음)
+ const hasOtherChanges = Object.keys(updateData).some(key => {
+ if (key === 'status' || key === 'updatedAt') return false;
+ return (existingCandidate as any)[key] !== (updateData as any)[key];
+ });
+
+ if (hasOtherChanges) {
+ await tx.insert(vendorCandidateLogs).values({
+ vendorCandidateId: id,
+ userId: userId,
+ action: "update",
+ comment: `Updated vendor candidate: ${existingCandidate.companyName}`
+ });
+ }
+ }