import type { ReactElement } from 'react' import type { Code, CodeMap } from '../api/client' import { CodeProvider } from './CodeProvider' /** * 테스트용 코드표. V13~V15 시드와 같은 값이라 화면 테스트가 실제 선택지로 돌아간다. * * 서버 응답을 흉내 내는 것이므로 비활성 코드는 들어 있지 않다(서버가 활성만 내려준다). * 시드가 바뀌면 여기도 같이 고쳐야 한다 - 어긋나면 화면 테스트가 실제와 다른 선택지로 * 통과해버린다. */ function code(c: string, label: string, sortOrder: number, attrs: Record = {}): Code { return { code: c, label, sortOrder, attrs } } export const TEST_CODES: CodeMap = { STAGE: [ code('1', '신청', 1, { groupKey: 'intake', progress: 'applied' }), code('2', '목록접수', 2, { groupKey: 'intake', progress: 'active', kpiFrom: 'docSubmitted' }), code('3', '예비검토', 3, { groupKey: 'intake', progress: 'active' }), code('4', '변호사 배당', 4, { groupKey: 'assign', progress: 'active' }), code('5', '법률검토(권리확인)', 5, { groupKey: 'check', progress: 'active' }), code('6', 'RE:확인', 6, { groupKey: 'check', progress: 'active' }), code('7', '법률검토(권리확인) 완료', 7, { groupKey: 'check', progress: 'active' }), code('8', '법률검토(권리처리)', 8, { groupKey: 'process', progress: 'active' }), code('9', 'RE:처리', 9, { groupKey: 'process', progress: 'active' }), code('10', '법률검토(권리처리) 완료', 10, { groupKey: 'process', progress: 'active' }), code('11', '법률검토 최종완료', 11, { groupKey: 'closing', progress: 'active' }), code('12', '보고서 작성', 12, { groupKey: 'closing', progress: 'active', kpiFrom: 'reportWriting' }), code('13', '보고서 제출 완료', 13, { groupKey: 'closing', progress: 'done', kpiFrom: 'completed' }), ], STAGE_GROUP: [ code('intake', '접수', 1, { tone: 'slate' }), code('assign', '배당', 2, { tone: 'indigo' }), code('check', '권리확인', 3, { tone: 'emerald' }), code('process', '권리처리', 4, { tone: 'amber' }), code('closing', '마감', 5, { tone: 'violet' }), ], REVIEW_MAJOR: [ code('만료 저작물', '만료 저작물', 1, { suggest: '신유형 개방', hasMinor: false }), code('업무상 저작물', '업무상 저작물', 2, { suggest: '신유형 개방', hasMinor: false }), code('제3자 권리', '제3자 권리', 3, { hasMinor: true }), code('개인정보 포함', '개인정보 포함', 4, { suggest: '개방불가', hasMinor: false }), ], REVIEW_MINOR: [ code('1. 원시적 권리 전부 보유', '1. 원시적 권리 전부 보유', 1, { suggest: '신유형 개방' }), code('2. 후천적 권리 전부 보유(계약서 확인 필요)', '2. 후천적 권리 전부 보유', 2, { note: '(계약에 의한 전부 양수)', suggest: '계약서 등 재확인', }), code('3. 권리 일부(공동) 보유', '3. 권리 일부(공동) 보유', 3, { note: '(보도자료·제3자저작물, 계약에 의한 전부/공동 보유 등)', suggest: '권리처리 추진', allowed: ['권리처리 추진', '권리처리 추진 미희망'], }), code('4. 권리 미보유', '4. 권리 미보유', 4, { note: '(공모전 수상작 등)', suggest: '권리처리 추진', allowed: ['권리처리 추진', '권리처리 추진 미희망'], }), code('초상권 포함', '초상권 포함', 5, { suggest: '권리처리 추진', allowed: ['권리처리 추진', '권리처리 추진 미희망', '개방불가'], }), ], REVIEW_RESULT: [ code('신유형 개방', '신유형 개방', 1, { tone: 'emerald', openable: 'Y' }), code('계약서 등 재확인', '계약서 등 재확인', 2, { tone: 'amber' }), code('권리처리 추진', '권리처리 추진', 3, { tone: 'blue', needsProcessing: true, koglSet: '보류' }), code('개방불가', '개방불가', 4, { tone: 'red', needsProcessing: false, koglSet: '개방불가' }), code('권리처리 추진 미희망', '권리처리 추진 미희망', 5, { tone: 'slate', needsProcessing: false, koglCopiesPrior: true, }), ], KOGL_TYPE: [ code('0유형', '0유형', 1, { scopes: ['review', 'process', 'prior'], firstRow: ['review', 'process'] }), code('1유형', '1유형', 2, { scopes: ['review', 'process', 'prior'], firstRow: [] }), code('2유형', '2유형', 3, { scopes: ['review', 'process', 'prior'], firstRow: [] }), code('3유형', '3유형', 4, { scopes: ['review', 'process', 'prior'], firstRow: [] }), code('4유형', '4유형', 5, { scopes: ['review', 'process', 'prior'], firstRow: [] }), code('개방불가', '개방불가', 6, { scopes: ['review', 'process'], firstRow: ['review', 'process'] }), code('보류', '보류', 7, { scopes: ['review'], firstRow: ['review'] }), code('유형 확인 필요', '유형 확인 필요', 8, { scopes: ['prior'], firstRow: [], surveyOnly: true }), code('제4유형', '제4유형', 9, { scopes: ['prior'], firstRow: [], surveyOnly: true, sameAs: '4유형' }), ], PROCESS_STATUS: [ code('미처리', '미처리', 1, { done: false }), code('처리완료', '처리완료', 2, { done: true, stampsProcessedAt: true }), ], CONTRACT_DOC: [ code('양도계약서', '양도계약서', 1), code('제안요청서', '제안요청서', 2), code('초상이용동의서', '초상이용동의서', 3), code('공공누리동의서', '공공누리동의서', 4), code('공문', '공문', 5), code('기타', '기타', 6, { freeText: true }), ], CONTACT_METHOD: [ code('전화', '전화', 1), code('메일', '메일', 2), code('방문', '방문', 3), code('기타', '기타', 4), ], CONTACT_CATEGORY: [ code('APPLICANT', '신청기관', 1, { tone: 'blue', importAlias: '신청기관' }), code('MJ', '문정원', 2, { tone: 'emerald', importAlias: '주관기관' }), code('LAWYER', '변호사', 3, { tone: 'violet', importAlias: '변호사' }), code('OPERATOR', '수행기관', 4, { tone: 'sky', importAlias: '수행기관' }), code('ITN', '아이티앤 담당자', 5, { tone: 'orange', importAlias: '아이티앤 담당자' }), ], ATTACHMENT_YN: [code('있음', '있음', 1), code('없음', '없음', 2)], KOGL_ATTACHED: [code('부착', '부착', 1), code('미부착', '미부착', 2)], } /** 화면 하나를 코드표와 함께 그린다. 서버를 부르지 않는다. */ export function withCodes(ui: ReactElement, codes: CodeMap = TEST_CODES): ReactElement { return {ui} }