diff options
| author | 0-Zz-ang <s1998319@gmail.com> | 2025-11-20 17:39:10 +0900 |
|---|---|---|
| committer | 0-Zz-ang <s1998319@gmail.com> | 2025-11-20 17:39:10 +0900 |
| commit | f95fbb0719c5754360472d066b0bbed4bda6a40a (patch) | |
| tree | d58b69d97c1dc300ccba8174d27c3a2023d34af6 /lib/basic-contract/actions | |
| parent | 088431a6572d87f7ee287252a4357e6c332d04f7 (diff) | |
(박서영)준법설문조사 redFlag관련사항수정
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; +} |
