summaryrefslogtreecommitdiff
path: root/lib/knox-api/approval
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-07-22 03:45:58 +0000
committerjoonhoekim <26rote@gmail.com>2025-07-22 03:45:58 +0000
commite1b1b57b6bfcd18ba4daa44230e8a915b4e93a15 (patch)
tree434ead1baf9aba787316f7cf129e7a447e9c98e7 /lib/knox-api/approval
parentcb34c5e1a61a20c954e12a8219d82dbdfbe50e13 (diff)
(김준회) knox 동기화 로직 개선
Diffstat (limited to 'lib/knox-api/approval')
-rw-r--r--lib/knox-api/approval/approval.ts122
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,