diff options
| author | joonhoekim <26rote@gmail.com> | 2025-07-22 03:45:58 +0000 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-07-22 03:45:58 +0000 |
| commit | e1b1b57b6bfcd18ba4daa44230e8a915b4e93a15 (patch) | |
| tree | 434ead1baf9aba787316f7cf129e7a447e9c98e7 /lib/knox-api/approval | |
| parent | cb34c5e1a61a20c954e12a8219d82dbdfbe50e13 (diff) | |
(김준회) knox 동기화 로직 개선
Diffstat (limited to 'lib/knox-api/approval')
| -rw-r--r-- | lib/knox-api/approval/approval.ts | 122 |
1 files changed, 51 insertions, 71 deletions
diff --git a/lib/knox-api/approval/approval.ts b/lib/knox-api/approval/approval.ts index 6a21e113..75066478 100644 --- a/lib/knox-api/approval/approval.ts +++ b/lib/knox-api/approval/approval.ts @@ -1,5 +1,7 @@ "use server" +import { getKnoxConfig, createJsonHeaders, createFormHeaders } from '../common'; + // Knox API Approval 서버 액션들 // 가이드: lib/knox-api/approval/guide.html @@ -63,8 +65,8 @@ export interface ApprovalDetailResponse extends BaseResponse { status: string; // 암호화실패(-3), 암호화중(-2), 예약상신(-1), 보류(0), 진행중(1), 완결(2), 반려(3), 상신취소(4), 전결(5), 후완결(6) timeZone: string; subject: string; - aplns: any[]; - attachments?: any[]; + aplns: ApprovalLine[]; + attachments?: File[]; }; } @@ -100,27 +102,27 @@ export interface CancelApprovalResponse extends BaseResponse { // 개인 결재경로 목록 조회 응답 타입 export interface OwnApprovalLineListResponse extends BaseResponse { - data: any[]; + data: ApprovalLine[]; } // 개인 결재경로 상세 조회 응답 타입 export interface OwnApprovalLineDetailResponse extends BaseResponse { - data: any; + data: ApprovalLine; } // 상신함 리스트 조회 응답 타입 export interface SubmissionListResponse extends BaseResponse { - data: any[]; + data: SubmitApprovalRequest[]; } // 연계 이력 조회 응답 타입 export interface ApprovalHistoryResponse extends BaseResponse { - data: any[]; + data: SubmitApprovalRequest[]; } // 연계 ID 조회 응답 타입 export interface ApprovalIdsResponse extends BaseResponse { - data: any[]; + data: string[]; } // ========== 서버 액션 함수들 ========== @@ -130,10 +132,10 @@ export interface ApprovalIdsResponse extends BaseResponse { * POST /approval/api/v2.0/approvals/submit */ export async function submitApproval( - request: SubmitApprovalRequest, - systemId: string + request: SubmitApprovalRequest ): Promise<SubmitApprovalResponse> { try { + const config = await getKnoxConfig(); const formData = new FormData(); // JSON 데이터 생성 @@ -162,11 +164,9 @@ export async function submitApproval( }); } - const response = await fetch(`${process.env.KNOX_API_BASE_URL}/approval/api/v2.0/approvals/submit`, { + const response = await fetch(`${config.baseUrl}/approval/api/v2.0/approvals/submit`, { method: 'POST', - headers: { - 'System-ID': systemId, - }, + headers: await createFormHeaders(), body: formData, }); @@ -186,10 +186,10 @@ export async function submitApproval( * POST /approval/api/v2.0/approvals/secu-submit */ export async function submitSecurityApproval( - request: SubmitApprovalRequest, - systemId: string + request: SubmitApprovalRequest ): Promise<SubmitApprovalResponse> { try { + const config = await getKnoxConfig(); const formData = new FormData(); // JSON 데이터 생성 @@ -218,11 +218,9 @@ export async function submitSecurityApproval( }); } - const response = await fetch(`${process.env.KNOX_API_BASE_URL}/approval/api/v2.0/approvals/secu-submit`, { + const response = await fetch(`${config.baseUrl}/approval/api/v2.0/approvals/secu-submit`, { method: 'POST', - headers: { - 'System-ID': systemId, - }, + headers: await createFormHeaders(), body: formData, }); @@ -242,15 +240,13 @@ export async function submitSecurityApproval( * GET /approval/api/v2.0/approvals/{apInfId}/detail */ export async function getApprovalDetail( - apInfId: string, - systemId: string + apInfId: string ): Promise<ApprovalDetailResponse> { try { - const response = await fetch(`${process.env.KNOX_API_BASE_URL}/approval/api/v2.0/approvals/${apInfId}/detail`, { + const config = await getKnoxConfig(); + const response = await fetch(`${config.baseUrl}/approval/api/v2.0/approvals/${apInfId}/detail`, { method: 'GET', - headers: { - 'System-ID': systemId, - }, + headers: await createJsonHeaders(), }); if (!response.ok) { @@ -269,15 +265,13 @@ export async function getApprovalDetail( * GET /approval/api/v2.0/approvals/{apInfId}/content */ export async function getApprovalContent( - apInfId: string, - systemId: string + apInfId: string ): Promise<ApprovalContentResponse> { try { - const response = await fetch(`${process.env.KNOX_API_BASE_URL}/approval/api/v2.0/approvals/${apInfId}/content`, { + const config = await getKnoxConfig(); + const response = await fetch(`${config.baseUrl}/approval/api/v2.0/approvals/${apInfId}/content`, { method: 'GET', - headers: { - 'System-ID': systemId, - }, + headers: await createJsonHeaders(), }); if (!response.ok) { @@ -296,16 +290,13 @@ export async function getApprovalContent( * POST /approval/api/v2.0/approvals/status */ export async function getApprovalStatus( - request: ApprovalStatusRequest, - systemId: string + request: ApprovalStatusRequest ): Promise<ApprovalStatusResponse> { try { - const response = await fetch(`${process.env.KNOX_API_BASE_URL}/approval/api/v2.0/approvals/status`, { + const config = await getKnoxConfig(); + const response = await fetch(`${config.baseUrl}/approval/api/v2.0/approvals/status`, { method: 'POST', - headers: { - 'System-ID': systemId, - 'Content-Type': 'application/json', - }, + headers: await createJsonHeaders(), body: JSON.stringify(request.apinfids), }); @@ -325,11 +316,11 @@ export async function getApprovalStatus( * GET /approval/api/v2.0/approvals/apinfids */ export async function getApprovalIds( - systemId: string, apIds?: string[] ): Promise<ApprovalIdsResponse> { try { - let url = `${process.env.KNOX_API_BASE_URL}/approval/api/v2.0/approvals/apinfids`; + const config = await getKnoxConfig(); + let url = `${config.baseUrl}/approval/api/v2.0/approvals/apinfids`; if (apIds && apIds.length > 0) { const params = new URLSearchParams(); @@ -339,9 +330,7 @@ export async function getApprovalIds( const response = await fetch(url, { method: 'GET', - headers: { - 'System-ID': systemId, - }, + headers: await createJsonHeaders(), }); if (!response.ok) { @@ -360,11 +349,11 @@ export async function getApprovalIds( * GET /approval/api/v2.0/approvals/submission */ export async function getSubmissionList( - systemId: string, params?: Record<string, string> ): Promise<SubmissionListResponse> { try { - let url = `${process.env.KNOX_API_BASE_URL}/approval/api/v2.0/approvals/submission`; + const config = await getKnoxConfig(); + let url = `${config.baseUrl}/approval/api/v2.0/approvals/submission`; if (params) { const searchParams = new URLSearchParams(params); @@ -373,9 +362,7 @@ export async function getSubmissionList( const response = await fetch(url, { method: 'GET', - headers: { - 'System-ID': systemId, - }, + headers: await createJsonHeaders(), }); if (!response.ok) { @@ -394,11 +381,11 @@ export async function getSubmissionList( * GET /approval/api/v2.0/approvals/apinfidinfos */ export async function getApprovalHistory( - systemId: string, params?: Record<string, string> ): Promise<ApprovalHistoryResponse> { try { - let url = `${process.env.KNOX_API_BASE_URL}/approval/api/v2.0/approvals/apinfidinfos`; + const config = await getKnoxConfig(); + let url = `${config.baseUrl}/approval/api/v2.0/approvals/apinfidinfos`; if (params) { const searchParams = new URLSearchParams(params); @@ -407,9 +394,7 @@ export async function getApprovalHistory( const response = await fetch(url, { method: 'GET', - headers: { - 'System-ID': systemId, - }, + headers: await createJsonHeaders(), }); if (!response.ok) { @@ -428,15 +413,13 @@ export async function getApprovalHistory( * POST /approval/api/v2.0/approvals/{apInfId}/cancel */ export async function cancelApproval( - apInfId: string, - systemId: string + apInfId: string ): Promise<CancelApprovalResponse> { try { - const response = await fetch(`${process.env.KNOX_API_BASE_URL}/approval/api/v2.0/approvals/${apInfId}/cancel`, { + const config = await getKnoxConfig(); + const response = await fetch(`${config.baseUrl}/approval/api/v2.0/approvals/${apInfId}/cancel`, { method: 'POST', - headers: { - 'System-ID': systemId, - }, + headers: await createJsonHeaders(), }); if (!response.ok) { @@ -455,11 +438,11 @@ export async function cancelApproval( * GET /approval/api/v2.0/approvals/ownaplnlist */ export async function getOwnApprovalLineList( - systemId: string, params?: Record<string, string> ): Promise<OwnApprovalLineListResponse> { try { - let url = `${process.env.KNOX_API_BASE_URL}/approval/api/v2.0/approvals/ownaplnlist`; + const config = await getKnoxConfig(); + let url = `${config.baseUrl}/approval/api/v2.0/approvals/ownaplnlist`; if (params) { const searchParams = new URLSearchParams(params); @@ -468,9 +451,7 @@ export async function getOwnApprovalLineList( const response = await fetch(url, { method: 'GET', - headers: { - 'System-ID': systemId, - }, + headers: await createJsonHeaders(), }); if (!response.ok) { @@ -489,15 +470,13 @@ export async function getOwnApprovalLineList( * GET /approval/api/v2.0/approvals/{pslAplnId}/ownaplndetail */ export async function getOwnApprovalLineDetail( - pslAplnId: string, - systemId: string + pslAplnId: string ): Promise<OwnApprovalLineDetailResponse> { try { - const response = await fetch(`${process.env.KNOX_API_BASE_URL}/approval/api/v2.0/approvals/${pslAplnId}/ownaplndetail`, { + const config = await getKnoxConfig(); + const response = await fetch(`${config.baseUrl}/approval/api/v2.0/approvals/${pslAplnId}/ownaplndetail`, { method: 'GET', - headers: { - 'System-ID': systemId, - }, + headers: await createJsonHeaders(), }); if (!response.ok) { @@ -522,9 +501,10 @@ export async function createSubmitApprovalRequest( approvalLines: ApprovalLine[], options: Partial<SubmitApprovalRequest> = {} ): Promise<SubmitApprovalRequest> { + const config = await getKnoxConfig(); const now = new Date(); const sbmDt = now.toISOString().replace(/[-:T]/g, '').slice(0, 14); - const apInfId = `${process.env.KNOX_SYSTEM_ID || 'DEFAULT'}${sbmDt}${Math.random().toString(36).substr(2, 9)}`.padEnd(32, '0'); + const apInfId = `${config.systemId}${sbmDt}${Math.random().toString(36).substr(2, 9)}`.padEnd(32, '0'); return { contents, |
