diff options
Diffstat (limited to 'app/api/upload/signed-contract/route.ts')
| -rw-r--r-- | app/api/upload/signed-contract/route.ts | 27 |
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"); |
