diff options
Diffstat (limited to 'lib/risk-management')
| -rw-r--r-- | lib/risk-management/service.ts | 42 | ||||
| -rw-r--r-- | lib/risk-management/table/risks-dashboard.tsx | 6 | ||||
| -rw-r--r-- | lib/risk-management/table/risks-date-range-picker.tsx | 2 | ||||
| -rw-r--r-- | lib/risk-management/table/risks-mail-dialog.tsx | 15 | ||||
| -rw-r--r-- | lib/risk-management/table/risks-table-toolbar-actions.tsx | 14 | ||||
| -rw-r--r-- | lib/risk-management/table/risks-update-sheet.tsx | 12 | ||||
| -rw-r--r-- | lib/risk-management/table/user-combo-box.tsx | 2 |
7 files changed, 46 insertions, 47 deletions
diff --git a/lib/risk-management/service.ts b/lib/risk-management/service.ts index a0efb892..62b18060 100644 --- a/lib/risk-management/service.ts +++ b/lib/risk-management/service.ts @@ -249,7 +249,7 @@ async function sendRiskEmail( return { vendorList: selectRes };
});
if (vendorList.length === 0) {
- throw new Error('존재하지 않는 협력업체에요. 다시 한 번 확인해주세요.');
+ throw new Error('존재하지 않는 협력업체입니다. 다시 한 번 확인해주십시오.');
}
const { vendorName, vendorCode, taxId } = vendorList[0];
const businessNumber = /^\d{10}$/.test(taxId)
@@ -270,7 +270,7 @@ async function sendRiskEmail( }));
});
if (!procurementManagerList || procurementManagerList.length === 0) {
- throw new Error('해당하는 구매 담당자가 존재하지 않아요.');
+ throw new Error('해당하는 구매 담당자가 존재하지 않습니다.');
}
const procurementManager = procurementManagerList[0];
@@ -289,7 +289,7 @@ async function sendRiskEmail( }));
});
if (!riskManagerList || riskManagerList.length === 0) {
- throw new Error('해당하는 리스크 관리 담당자가 존재하지 않아요.');
+ throw new Error('해당하는 리스크 관리 담당자가 존재하지 않습니다.');
}
const riskManager = riskManagerList[0];
@@ -387,12 +387,12 @@ async function generateRiskEventsTemplate(): Promise<ArrayBuffer> { const exampleData = [
{
- eventType: '리스크 항목을 입력하세요.',
- vendorName: '협력업체명을 입력하세요.',
- businessNumber: '사업자등록번호를 입력하세요.',
- provider: '신용평가사를 입력하세요.',
- content: '상세 내용을 입력하세요.',
- occuredAt: '발생일자를 YYYY-MM-DD형식으로 입력하세요.'
+ eventType: '리스크 항목을 입력하십시오.',
+ vendorName: '협력업체명을 입력하십시오.',
+ businessNumber: '사업자등록번호를 입력하십시오.',
+ provider: '신용평가사를 입력하십시오.',
+ content: '상세 내용을 입력하십시오.',
+ occuredAt: '발생일자를 YYYY-MM-DD형식으로 입력하십시오.'
},
];
@@ -455,7 +455,7 @@ async function importRiskEventsExcel(file: File): Promise<{ const worksheet = workbook.getWorksheet(1);
if (!worksheet) {
- return { errorMessage: '워크시트를 찾을 수 없어요.' };
+ return { errorMessage: '워크시트를 찾을 수 없습니다.' };
}
const errors: string[] = [];
const importDataList: {
@@ -471,7 +471,7 @@ async function importRiskEventsExcel(file: File): Promise<{ const rows = worksheet.getRows(2, worksheet.rowCount - 1);
if (!rows) {
- return { errorMessage: '새로 추가할 리스크 데이터가 존재하지 않아요.' };
+ return { errorMessage: '새로 추가할 리스크 데이터가 존재하지 않습니다.' };
}
for (const [index, row] of rows.entries()) {
@@ -513,20 +513,20 @@ async function importRiskEventsExcel(file: File): Promise<{ }
if (!rowData.eventType || !rowData.vendorName || !rowData.businessNumber || !rowData.provider || !rowData.occuredAt) {
- errors.push(`행 ${rowIndex}: 필수 필드(항목, 협력업체명, 사업자등록번호, 신용평가사, 발생일자)가 누락되었어요.`);
+ errors.push(`행 ${rowIndex}: 필수 필드(항목, 협력업체명, 사업자등록번호, 신용평가사, 발생일자)가 누락되었습니다.`);
continue;
}
rowData.businessNumber = rowData.businessNumber.replace(/\D/g, '');
if (rowData.businessNumber.length !== 10) {
- errors.push(`행 ${rowIndex}: 사업자등록번호는 숫자 10자리여야 해요.`);
+ errors.push(`행 ${rowIndex}: 사업자등록번호는 숫자 10자리여야 합니다.`);
continue;
}
const datePattern = /^\d{4}-\d{2}-\d{2}$/;
if (!datePattern.test(rowData.occuredAt)) {
- errors.push(`행 ${rowIndex}: 발생일자는 YYYY-MM-DD 형식이어야 해요.`);
+ errors.push(`행 ${rowIndex}: 발생일자는 YYYY-MM-DD 형식이어야 합니다.`);
continue;
}
@@ -537,7 +537,7 @@ async function importRiskEventsExcel(file: File): Promise<{ dateObj.getMonth() + 1 !== month ||
dateObj.getDate() !== day
) {
- errors.push(`행 ${rowIndex}: 발생일자가 올바른 날짜가 아니에요.`);
+ errors.push(`행 ${rowIndex}: 발생일자가 올바른 날짜가 아닙니다.`);
continue;
}
@@ -550,7 +550,7 @@ async function importRiskEventsExcel(file: File): Promise<{ });
if (vendorList.length === 0) {
- errors.push(`행 ${rowIndex}: 협력업체로 등록되지 않은 사업자등록번호에요. 다시 한 번 확인해주세요.`);
+ errors.push(`행 ${rowIndex}: 협력업체로 등록되지 않은 사업자등록번호입니다. 다시 한 번 확인해주십시오.`);
continue;
}
@@ -559,7 +559,7 @@ async function importRiskEventsExcel(file: File): Promise<{ importDataList.push(rowData);
} catch (error) {
- errors.push(`행 ${rowIndex}: 데이터 처리 중 오류가 발생했어요 - ${error}`);
+ errors.push(`행 ${rowIndex}: 데이터 처리 중 오류가 발생했습니다 - ${error}`);
}
}
@@ -589,12 +589,12 @@ async function importRiskEventsExcel(file: File): Promise<{ return {
errorFile,
- errorMessage: `${errors.length}개의 오류가 발견되었어요. 오류 파일을 확인하세요.`
+ errorMessage: `${errors.length}개의 오류가 발견되었습니다. 오류 파일을 확인하십시오.`
};
}
if (importDataList.length === 0) {
- return { errorMessage: '새로 추가할 리스크 데이터가 존재하지 않아요. 파일을 다시 한 번 확인해주세요.' };
+ return { errorMessage: '새로 추가할 리스크 데이터가 존재하지 않습니다. 파일을 다시 한 번 확인해주십시오.' };
}
const currentUserId = await getCurrentUserId();
@@ -614,10 +614,10 @@ async function importRiskEventsExcel(file: File): Promise<{ });
}
- return { successMessage: `Excel 파일이 성공적으로 업로드되었어요. ${importDataList.length}개의 리스크 이벤트가 추가되었어요.` };
+ return { successMessage: `Excel 파일이 성공적으로 업로드되었습니다. ${importDataList.length}개의 리스크 이벤트가 추가되었습니다.` };
} catch (error) {
console.error('Error in Importing Regular Evaluation Criteria from Excel:', error);
- return { errorMessage: 'Excel 파일 처리 중 오류가 발생했어요.' };
+ return { errorMessage: 'Excel 파일 처리 중 오류가 발생했습니다.' };
}
}
diff --git a/lib/risk-management/table/risks-dashboard.tsx b/lib/risk-management/table/risks-dashboard.tsx index 1f26d48a..f0ac3753 100644 --- a/lib/risk-management/table/risks-dashboard.tsx +++ b/lib/risk-management/table/risks-dashboard.tsx @@ -99,7 +99,7 @@ function RisksDashboard(props: RisksDashboardProps) { flags: [], page: 1, perPage: 10, - sort: [{ id: 'createdAt', desc: true }], + sort: [{ id: 'occuredAt', desc: true }], }; const { count } = await getRisksViewCount(searchParams as any); @@ -114,7 +114,7 @@ function RisksDashboard(props: RisksDashboardProps) { setCounts(newCounts); } catch (error) { - console.error('리스크 데이터 개수 조회에 실패했어요:', error); + console.error('리스크 데이터 개수 조회에 실패했습니다:', error); const resetCounts: CountData = {}; targetValues.forEach(value => { resetCounts[value] = 0; @@ -196,7 +196,7 @@ function RisksDashboard(props: RisksDashboardProps) { <CardContent> {chartData.filter(item => item.count > 0).length === 0 ? ( <div className="flex items-center justify-center h-[300px] text-gray-500"> - 주요 리스크가 존재하지 않아요. + 주요 리스크가 존재하지 않습니다. </div> ) : ( <ChartContainer config={chartConfig} className="h-[300px]"> diff --git a/lib/risk-management/table/risks-date-range-picker.tsx b/lib/risk-management/table/risks-date-range-picker.tsx index 96acff6c..8cb192a9 100644 --- a/lib/risk-management/table/risks-date-range-picker.tsx +++ b/lib/risk-management/table/risks-date-range-picker.tsx @@ -34,7 +34,7 @@ interface RisksDateRangePickerProps extends ComponentPropsWithoutRef<typeof Popo function RisksDateRangePicker(props: RisksDateRangePickerProps) { const { defaultDateRange, - placeholder = '날짜를 선택하세요.', + placeholder = '날짜를 선택하십시오.', triggerVariant = 'outline', triggerSize = 'default', triggerClassName, diff --git a/lib/risk-management/table/risks-mail-dialog.tsx b/lib/risk-management/table/risks-mail-dialog.tsx index 02c470ce..d6743a0c 100644 --- a/lib/risk-management/table/risks-mail-dialog.tsx +++ b/lib/risk-management/table/risks-mail-dialog.tsx @@ -74,18 +74,17 @@ import { useEffect, useMemo, useState, useTransition } from 'react'; import UserComboBox from './user-combo-box'; import { z } from 'zod'; import { zodResolver } from '@hookform/resolvers/zod'; -import { se } from 'date-fns/locale'; // ---------------------------------------------------------------------------------------------------- /* TYPES */ const risksMailFormSchema = z.object({ - managerId: z.number({ required_error: '구매 담당자를 반드시 선택해야 해요.' }), - adminComment: z.string().min(1, { message: '구매 담당자 의견을 반드시 작성해야 해요.' }), + managerId: z.number({ required_error: '구매 담당자를 반드시 선택해야 합니다.' }), + adminComment: z.string().min(1, { message: '구매 담당자 의견을 반드시 작성해야 합니다.' }), attachment: z .instanceof(File) .refine((file) => file.size <= 10485760, { - message: '파일 크기는 10MB를 초과할 수 없어요.', + message: '파일 크기는 10MB를 초과할 수 없습니다.', }) .optional(), }); @@ -225,7 +224,7 @@ function RisksMailDialog(props: RisksMailDialogProps) { startTransition(async () => { try { if (!selectedVendorId) { - throw Error('선택된 협력업체가 존재하지 않아요.'); + throw Error('선택된 협력업체가 존재하지 않습니다.'); } const newRiskEventData = { @@ -343,7 +342,7 @@ function RisksMailDialog(props: RisksMailDialogProps) { <Card className="w-full"> <CardHeader> <CardTitle>리스크 정보</CardTitle> - <CardDescription>메일로 전송할 리스크 정보를 선택하세요.</CardDescription> + <CardDescription>메일로 전송할 리스크 정보를 선택하십시오.</CardDescription> </CardHeader> <CardContent className="space-y-4"> {Object.entries( @@ -449,7 +448,7 @@ function RisksMailDialog(props: RisksMailDialogProps) { <FormItem> <FormControl> <Textarea - placeholder="관리 담당자 의견을 입력하세요." + placeholder="관리 담당자 의견을 입력하십시오." {...field} value={field.value ?? ''} /> @@ -541,7 +540,7 @@ function RisksMailDialog(props: RisksMailDialogProps) { 취소 </Button> <Button type="submit" disabled={isPending || isLoadingManagerList}> - {isLoadingManagerList ? '로딩 중...' : isPending ? '저장 중...' : '메일 발송'} + {isLoadingManagerList ? '로딩 중...' : isPending ? '발송 중...' : '메일 발송'} </Button> </DialogFooter> </form> diff --git a/lib/risk-management/table/risks-table-toolbar-actions.tsx b/lib/risk-management/table/risks-table-toolbar-actions.tsx index 2d4ba2d4..a55634b5 100644 --- a/lib/risk-management/table/risks-table-toolbar-actions.tsx +++ b/lib/risk-management/table/risks-table-toolbar-actions.tsx @@ -36,11 +36,11 @@ function RisksTableToolbarActions(props: RisksTableToolbarActionsProps) { async function onFileChange(event: ChangeEvent<HTMLInputElement>) { const file = event.target.files?.[0]; if (!file) { - toast.error('가져올 파일을 선택해주세요.'); + toast.error('가져올 파일을 선택해주십시오.'); return; } if (!file.name.endsWith('.xlsx') && !file.name.endsWith('.xls')) { - toast.error('.xlsx 또는 .xls 확장자인 Excel 파일만 업로드 가능해요.'); + toast.error('.xlsx 또는 .xls 확장자인 Excel 파일만 업로드 가능합니다.'); return; } event.target.value = ''; @@ -60,7 +60,7 @@ function RisksTableToolbarActions(props: RisksTableToolbarActionsProps) { URL.revokeObjectURL(url); } } else { - toast.success(successMessage || 'Excel 파일이 성공적으로 업로드되었어요.'); + toast.success(successMessage || 'Excel 파일이 성공적으로 업로드되었습니다.'); } } catch (error) { toast.error('Excel 파일을 업로드하는 중 오류가 발생했습니다.'); @@ -77,10 +77,10 @@ function RisksTableToolbarActions(props: RisksTableToolbarActionsProps) { filename: '협력업체_리스크_관리', excludeColumns: ['id', 'actions'], }); - toast.success('Excel 파일이 다운로드되었어요.'); + toast.success('Excel 파일이 다운로드되었습니다.'); } catch (error) { console.error('Error in Exporting to Excel: ', error); - toast.error('Excel 파일 내보내기 중 오류가 발생했어요.'); + toast.error('Excel 파일 내보내기 중 오류가 발생했습니다.'); } }; @@ -97,10 +97,10 @@ function RisksTableToolbarActions(props: RisksTableToolbarActionsProps) { link.download = "협력업체_리스크_템플릿.xlsx"; link.click(); URL.revokeObjectURL(url); - toast.success('템플릿 파일이 다운로드되었어요.'); + toast.success('템플릿 파일이 다운로드되었습니다.'); } catch (error) { console.error('Error in Template Download: ', error); - toast.error('템플릿 다운로드 중 오류가 발생했어요.'); + toast.error('템플릿 다운로드 중 오류가 발생했습니다.'); } }; diff --git a/lib/risk-management/table/risks-update-sheet.tsx b/lib/risk-management/table/risks-update-sheet.tsx index 727a7634..f4caba63 100644 --- a/lib/risk-management/table/risks-update-sheet.tsx +++ b/lib/risk-management/table/risks-update-sheet.tsx @@ -122,7 +122,7 @@ function RisksUpdateSheet(props: RisksUpdateSheetProps) { } } catch (error) { console.error('Error in Loading Risk Event for Updating:', error); - toast.error(error instanceof Error ? error.message : '편집할 데이터를 불러오는 데 실패했어요.'); + toast.error(error instanceof Error ? error.message : '편집할 데이터를 불러오는 데 실패했습니다.'); } finally { setIsLoadingManagerList(false); } @@ -143,13 +143,13 @@ function RisksUpdateSheet(props: RisksUpdateSheetProps) { adminComment: !data.eventStatus ? null : data.adminComment || null, }; await modifyRiskEvents(riskData.id, newRiskEventData); - toast.success('리스크 이벤트가 수정되었어요.'); + toast.success('리스크 이벤트가 수정되었습니다.'); onSuccess(); onOpenChange(false); } catch (error) { console.error('Error in Saving Risk Event:', error); toast.error( - error instanceof Error ? error.message : '리스크 이벤트 저장 중 오류가 발생했어요.', + error instanceof Error ? error.message : '리스크 이벤트 저장 중 오류가 발생했습니다.', ); } }) @@ -167,7 +167,7 @@ function RisksUpdateSheet(props: RisksUpdateSheetProps) { 리스크 정보 관리 </SheetTitle> <SheetDescription> - 리스크 정보를 수정할 수 있어요. + 리스크 정보를 수정할 수 있습니다. </SheetDescription> </SheetHeader> <Form {...form}> @@ -270,7 +270,7 @@ function RisksUpdateSheet(props: RisksUpdateSheetProps) { <FormLabel>상세 내용</FormLabel> <FormControl> <Textarea - placeholder="상세 내용을 입력하세요." + placeholder="상세 내용을 입력하십시오." {...field} value={field.value ?? ''} /> @@ -364,7 +364,7 @@ function RisksUpdateSheet(props: RisksUpdateSheetProps) { <FormItem> <FormControl> <Textarea - placeholder="관리 담당자 의견을 입력하세요." + placeholder="관리 담당자 의견을 입력하십시오." {...field} value={field.value ?? ''} /> diff --git a/lib/risk-management/table/user-combo-box.tsx b/lib/risk-management/table/user-combo-box.tsx index e319b538..30ffb11a 100644 --- a/lib/risk-management/table/user-combo-box.tsx +++ b/lib/risk-management/table/user-combo-box.tsx @@ -82,7 +82,7 @@ function UserComboBox(props: UserComboBoxProps) { value={inputValue} onValueChange={setInputValue} /> - <CommandEmpty>검색 결과가 존재하지 않아요.</CommandEmpty> + <CommandEmpty>검색 결과가 존재하지 않습니다.</CommandEmpty> <CommandGroup className="max-h-[200px] overflow-y-auto"> {users.map((user) => ( <CommandItem |
