summaryrefslogtreecommitdiff
path: root/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/basic-contract/status-detail/basic-contracts-detail-table.tsx')
-rw-r--r--lib/basic-contract/status-detail/basic-contracts-detail-table.tsx46
1 files changed, 41 insertions, 5 deletions
diff --git a/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx b/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx
index 2d747c85..010b4713 100644
--- a/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx
+++ b/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx
@@ -11,6 +11,7 @@ import type {
import { getDetailColumns } from "./basic-contracts-detail-columns"
import { getBasicContractsByTemplateId } from "@/lib/basic-contract/service"
import { checkGTCCommentsForContracts } from "@/lib/basic-contract/actions/check-gtc-comments"
+import { checkAgreementCommentsForContracts } from "@/lib/basic-contract/agreement-comments/actions"
import { checkRedFlagsForContracts } from "@/lib/basic-contract/actions/check-red-flags"
import { checkRedFlagResolutionForContracts } from "@/lib/basic-contract/actions/check-red-flag-resolution"
import { BasicContractView } from "@/db/schema"
@@ -35,20 +36,27 @@ export function BasicContractsDetailTable({ templateId, promises }: BasicContrac
const [gtcData, setGtcData] = React.useState<Record<number, { gtcDocumentId: number | null; hasComments: boolean }>>({})
const [isLoadingGtcData, setIsLoadingGtcData] = React.useState(false)
+ // 협의 코멘트 상태 (준법 포함) 관리
+ const [agreementCommentData, setAgreementCommentData] = React.useState<Record<number, { hasComments: boolean; commentCount: number }>>({})
+ const [isLoadingAgreementCommentData, setIsLoadingAgreementCommentData] = React.useState(false)
+
// Red Flag data 상태 관리
const [redFlagData, setRedFlagData] = React.useState<Record<number, boolean>>({})
const [isLoadingRedFlagData, setIsLoadingRedFlagData] = React.useState(false)
+type RedFlagResolutionState = {
+ resolved: boolean
+ resolvedAt: Date | null
+ pendingApprovalId: string | null
+}
+
// Red Flag 해제 data 상태 관리
- const [redFlagResolutionData, setRedFlagResolutionData] = React.useState<Record<number, { resolved: boolean; resolvedAt: Date | null }>>({})
+ const [redFlagResolutionData, setRedFlagResolutionData] = React.useState<Record<number, RedFlagResolutionState>>({})
const [isLoadingRedFlagResolutionData, setIsLoadingRedFlagResolutionData] = React.useState(false)
const [{ data, pageCount }] = React.use(promises)
const router = useRouter()
- console.log(gtcData, "gtcData")
- console.log(data, "data")
-
// GTC data 로딩
React.useEffect(() => {
const loadGtcData = async () => {
@@ -76,6 +84,32 @@ export function BasicContractsDetailTable({ templateId, promises }: BasicContrac
loadGtcData();
}, [data]);
+ // 협의 코멘트 상태 로딩 (준법 포함)
+ React.useEffect(() => {
+ const loadAgreementComments = async () => {
+ if (!data || data.length === 0) return;
+
+ const hasNegotiationTemplates = data.some(contract =>
+ contract.templateName?.includes('준법') || contract.templateName?.includes('GTC')
+ );
+
+ if (!hasNegotiationTemplates) return;
+
+ setIsLoadingAgreementCommentData(true);
+ try {
+ const results = await checkAgreementCommentsForContracts(data);
+ setAgreementCommentData(results);
+ } catch (error) {
+ console.error('협의 코멘트 정보를 불러오는데 실패했습니다:', error);
+ toast.error("협의 코멘트 정보를 불러오는데 실패했습니다.");
+ } finally {
+ setIsLoadingAgreementCommentData(false);
+ }
+ };
+
+ loadAgreementComments();
+ }, [data]);
+
// Red Flag data 로딩
React.useEffect(() => {
const loadRedFlagData = async () => {
@@ -141,6 +175,8 @@ export function BasicContractsDetailTable({ templateId, promises }: BasicContrac
setRowAction,
gtcData,
isLoadingGtcData,
+ agreementCommentData,
+ isLoadingAgreementCommentData,
redFlagData,
isLoadingRedFlagData,
redFlagResolutionData,
@@ -148,7 +184,7 @@ export function BasicContractsDetailTable({ templateId, promises }: BasicContrac
isComplianceTemplate,
router
}),
- [setRowAction, gtcData, isLoadingGtcData, redFlagData, isLoadingRedFlagData, redFlagResolutionData, isLoadingRedFlagResolutionData, isComplianceTemplate, router]
+ [setRowAction, gtcData, isLoadingGtcData, agreementCommentData, isLoadingAgreementCommentData, redFlagData, isLoadingRedFlagData, redFlagResolutionData, isLoadingRedFlagResolutionData, isComplianceTemplate, router]
)
const advancedFilterFields: DataTableAdvancedFilterField<BasicContractView>[] = [