feat: 담당자 구분에 아이티앤 담당자(ITN) 유형 추가
@97674a3ca6a868cccd6464e03301eb82fd2545d7
--- frontend/src/api/client.ts
+++ frontend/src/api/client.ts
... | ... | @@ -1,6 +1,6 @@ |
| 1 | 1 |
export type OrgStatus = 'INFO_PENDING' | 'READY' | 'PARTIAL' | 'ACTIVE' |
| 2 | 2 |
|
| 3 |
-export type ContactCategory = 'APPLICANT' | 'MJ' | 'LAWYER' | 'OPERATOR' |
|
| 3 |
+export type ContactCategory = 'APPLICANT' | 'MJ' | 'LAWYER' | 'OPERATOR' | 'ITN' |
|
| 4 | 4 |
|
| 5 | 5 |
/** 담당자관리에 등록된 담당자 1명. 신청기관 담당자는 affiliation에 소속 기관명이 들어간다. */ |
| 6 | 6 |
export interface Contact {
|
--- frontend/src/components/ContactsPage.tsx
+++ frontend/src/components/ContactsPage.tsx
... | ... | @@ -16,6 +16,7 @@ |
| 16 | 16 |
MJ: '문정원', |
| 17 | 17 |
LAWYER: '변호사', |
| 18 | 18 |
OPERATOR: '수행기관', |
| 19 |
+ ITN: '아이티앤 담당자', |
|
| 19 | 20 |
} |
| 20 | 21 |
|
| 21 | 22 |
const CATEGORY_BADGE_STYLES: Record<ContactCategory, string> = {
|
... | ... | @@ -23,6 +24,7 @@ |
| 23 | 24 |
MJ: 'bg-emerald-50 text-emerald-700', |
| 24 | 25 |
LAWYER: 'bg-violet-50 text-violet-700', |
| 25 | 26 |
OPERATOR: 'bg-sky-50 text-sky-700', |
| 27 |
+ ITN: 'bg-orange-50 text-orange-700', |
|
| 26 | 28 |
} |
| 27 | 29 |
|
| 28 | 30 |
const FILTERS: { key: ContactCategory | 'ALL'; label: string }[] = [
|
... | ... | @@ -31,6 +33,7 @@ |
| 31 | 33 |
{ key: 'MJ', label: '문정원' },
|
| 32 | 34 |
{ key: 'LAWYER', label: '변호사' },
|
| 33 | 35 |
{ key: 'OPERATOR', label: '수행기관' },
|
| 36 |
+ { key: 'ITN', label: '아이티앤 담당자' },
|
|
| 34 | 37 |
] |
| 35 | 38 |
|
| 36 | 39 |
function emptyForm(contact: Contact | null): ContactInput {
|
... | ... | @@ -125,6 +128,7 @@ |
| 125 | 128 |
<option value="MJ">문정원</option> |
| 126 | 129 |
<option value="LAWYER">변호사</option> |
| 127 | 130 |
<option value="OPERATOR">수행기관</option> |
| 131 |
+ <option value="ITN">아이티앤 담당자</option> |
|
| 128 | 132 |
</select> |
| 129 | 133 |
</div> |
| 130 | 134 |
<div className="flex flex-col gap-1"> |
--- src/main/java/kr/itn/itnhub/contact/ContactService.java
+++ src/main/java/kr/itn/itnhub/contact/ContactService.java
... | ... | @@ -9,7 +9,7 @@ |
| 9 | 9 |
@Service |
| 10 | 10 |
public class ContactService {
|
| 11 | 11 |
|
| 12 |
- private static final Set<String> CATEGORIES = Set.of("APPLICANT", "MJ", "LAWYER", "OPERATOR");
|
|
| 12 |
+ private static final Set<String> CATEGORIES = Set.of("APPLICANT", "MJ", "LAWYER", "OPERATOR", "ITN");
|
|
| 13 | 13 |
|
| 14 | 14 |
private final ContactMapper mapper; |
| 15 | 15 |
|
--- src/main/java/kr/itn/itnhub/contact/MemberDirectoryParser.java
+++ src/main/java/kr/itn/itnhub/contact/MemberDirectoryParser.java
... | ... | @@ -43,7 +43,8 @@ |
| 43 | 43 |
"주관기관", "MJ", |
| 44 | 44 |
"변호사", "LAWYER", |
| 45 | 45 |
"신청기관", "APPLICANT", |
| 46 |
- "수행기관", "OPERATOR"); |
|
| 46 |
+ "수행기관", "OPERATOR", |
|
| 47 |
+ "아이티앤 담당자", "ITN"); |
|
| 47 | 48 |
|
| 48 | 49 |
public MemberParseResult parse(InputStream xlsx) {
|
| 49 | 50 |
try (Workbook wb = WorkbookFactory.create(xlsx)) {
|
+++ src/main/resources/db/migration/V6__itn_category.sql
... | ... | @@ -0,0 +1,7 @@ |
| 1 | +-- 담당자 구분에 '아이티앤 담당자'(ITN)를 신설한다. 수행기관(OPERATOR)과는 별개 유형이다. | |
| 2 | +-- 기존에 수행기관으로 들어간 ㈜아이티앤 소속 직원은 새 유형으로 옮긴다. | |
| 3 | +-- (개별 재분류는 담당자관리 수정 모달에서 언제든 가능) | |
| 4 | +update contact | |
| 5 | + set category = 'ITN' | |
| 6 | + where category = 'OPERATOR' | |
| 7 | + and affiliation like '%아이티앤%'; |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?