File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
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<string, unknown> = {}): 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 <CodeProvider codes={codes}>{ui}</CodeProvider>
}