summaryrefslogtreecommitdiff
path: root/app/api/upload/signed-contract
diff options
context:
space:
mode:
author0-Zz-ang <s1998319@gmail.com>2025-11-13 11:36:15 +0900
committer0-Zz-ang <s1998319@gmail.com>2025-11-13 11:36:15 +0900
commita4ceade24d28af0bde985bf750017efc02f053ff (patch)
tree45b03d3e6b5d36a60bea464e37155f0a18e73153 /app/api/upload/signed-contract
parent1cdbf77cabcead1a7f76379d3786ede6f43355fb (diff)
(박서영)준법설문조사 RedFlag관련 요청사항 반영
Diffstat (limited to 'app/api/upload/signed-contract')
-rw-r--r--app/api/upload/signed-contract/route.ts27
1 files changed, 26 insertions, 1 deletions
diff --git a/app/api/upload/signed-contract/route.ts b/app/api/upload/signed-contract/route.ts
index 880f54b2..a8e2bead 100644
--- a/app/api/upload/signed-contract/route.ts
+++ b/app/api/upload/signed-contract/route.ts
@@ -1,10 +1,11 @@
// app/api/upload/signed-contract/route.ts
import { NextRequest, NextResponse } from 'next/server';
import db from "@/db/db";
-import { basicContract } from '@/db/schema';
+import { basicContract, vendors } from '@/db/schema';
import { eq } from 'drizzle-orm';
import { revalidateTag } from 'next/cache';
import { saveBuffer } from '@/lib/file-stroage';
+import { getTriggeredRedFlagQuestions, notifyComplianceRedFlagManagers } from '@/lib/compliance/red-flag-notifier';
export async function POST(request: NextRequest) {
try {
@@ -55,6 +56,30 @@ export async function POST(request: NextRequest) {
.where(eq(basicContract.id, tableRowId));
});
+ const [contractInfo] = await db
+ .select({
+ templateId: basicContract.templateId,
+ vendorName: vendors.vendorName,
+ })
+ .from(basicContract)
+ .leftJoin(vendors, eq(basicContract.vendorId, vendors.id))
+ .where(eq(basicContract.id, tableRowId))
+ .limit(1);
+
+ try {
+ const triggeredRedFlags = await getTriggeredRedFlagQuestions(tableRowId);
+ if (triggeredRedFlags.length > 0) {
+ await notifyComplianceRedFlagManagers({
+ contractId: tableRowId,
+ templateId: contractInfo?.templateId ?? null,
+ vendorName: contractInfo?.vendorName ?? undefined,
+ triggeredQuestions: triggeredRedFlags,
+ });
+ }
+ } catch (error) {
+ console.error('레드플래그 알림 발송 실패:', error);
+ }
+
// 캐시 무효화
revalidateTag("basic-contract-requests");
revalidateTag("basicContractView-vendor");