summaryrefslogtreecommitdiff
path: root/lib/basic-contract/actions
diff options
context:
space:
mode:
Diffstat (limited to 'lib/basic-contract/actions')
-rw-r--r--lib/basic-contract/actions/check-red-flags.ts48
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/basic-contract/actions/check-red-flags.ts b/lib/basic-contract/actions/check-red-flags.ts
new file mode 100644
index 00000000..dd45a56a
--- /dev/null
+++ b/lib/basic-contract/actions/check-red-flags.ts
@@ -0,0 +1,48 @@
+"use server";
+
+import { BasicContractView } from "@/db/schema";
+import { getTriggeredRedFlagQuestions } from "@/lib/compliance/red-flag-notifier";
+
+/**
+ * 여러 계약서에 대한 Red Flag 발생 여부를 한 번에 확인
+ */
+export async function checkRedFlagsForContracts(
+ contracts: BasicContractView[]
+): Promise<Record<number, boolean>> {
+ const result: Record<number, boolean> = {};
+
+ // 준법서약 템플릿인 계약서만 필터링
+ const complianceContracts = contracts.filter(contract =>
+ contract.templateName?.includes('준법')
+ );
+
+ if (complianceContracts.length === 0) {
+ return result;
+ }
+
+ // 각 계약서에 대해 Red Flag 발생 여부 확인
+ const redFlagChecks = await Promise.all(
+ complianceContracts.map(async (contract) => {
+ try {
+ const triggeredFlags = await getTriggeredRedFlagQuestions(contract.id);
+ return {
+ contractId: contract.id,
+ hasRedFlag: triggeredFlags.length > 0
+ };
+ } catch (error) {
+ console.error(`Error checking red flags for contract ${contract.id}:`, error);
+ return {
+ contractId: contract.id,
+ hasRedFlag: false
+ };
+ }
+ })
+ );
+
+ // 결과를 Record 형태로 변환
+ redFlagChecks.forEach(check => {
+ result[check.contractId] = check.hasRedFlag;
+ });
+
+ return result;
+}