"use server"; import { BasicContractView } from "@/db/schema"; import { getComplianceResponseByBasicContractId } from "@/lib/compliance/services"; type RedFlagResolutionState = { resolved: boolean; resolvedAt: Date | null; pendingApprovalId: string | null; }; /** * 여러 계약서에 대한 RED FLAG 해제 상태를 한 번에 확인 */ export async function checkRedFlagResolutionForContracts( contracts: BasicContractView[] ): Promise> { const result: Record = {}; // 준법서약 템플릿인 계약서만 필터링 const complianceContracts = contracts.filter((contract) => contract.templateName?.includes("준법") ); if (complianceContracts.length === 0) { return result; } const checks = await Promise.all( complianceContracts.map(async (contract) => { try { const response = await getComplianceResponseByBasicContractId(contract.id); return { contractId: contract.id, resolved: Boolean(response?.redFlagResolvedAt), resolvedAt: response?.redFlagResolvedAt || null, pendingApprovalId: response?.redFlagResolutionApprovalId ?? null, }; } catch (error) { console.error(`Error fetching compliance response for contract ${contract.id}:`, error); return { contractId: contract.id, resolved: false, resolvedAt: null, pendingApprovalId: null, }; } }) ); checks.forEach((check) => { result[check.contractId] = { resolved: check.resolved, resolvedAt: check.resolvedAt, pendingApprovalId: check.pendingApprovalId, }; }); return result; }