diff options
Diffstat (limited to 'lib/basic-contract/actions')
| -rw-r--r-- | lib/basic-contract/actions/check-red-flags.ts | 48 |
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; +} |
