Skip to content

fix: enhance translatedVariableDictionary (#17) #19

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Aug 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"eslint": "^9.7.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-jsdoc": "^48.7.0",
"hotscript": "^1.0.13",
"prettier": "^3.3.3",
"tsup": "^8.2.3",
"typescript": "^5.5.3",
Expand Down
73 changes: 48 additions & 25 deletions src/bill/getBillList.spec.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,31 @@
import { describe, it, expect, vi } from 'vitest';
import { getBillList } from './getBillList';
import { callOpenApi } from '../functional';
import { translatedVariableDictionary } from '../constant';
import {
대,
대표발의자,
대표발의자코드,
법사위상정일,
법사위처리결과,
법사위처리일,
법사위회부일,
본회의심의결과,
소관위,
소관위상정일,
소관위처리결과,
소관위처리일,
소관위코드,
소관위회부일,
위원회심사_처리일,
의결일,
의안ID,
의안명,
의안번호,
의안상세정보_URL,
제안일,
제안자,
제안자구분,
} from '../constant';

vi.mock('../functional', () => ({
callOpenApi: vi.fn(),
Expand Down Expand Up @@ -50,30 +74,29 @@ describe('getBillList', () => {

expect(bills).toHaveLength(1);
expect(bills[0]).toEqual({
[translatedVariableDictionary['의안ID']]: 'PRC_K2S4R0S4Q3P0L0K9J0J9I5Q7P2Q4O6',
[translatedVariableDictionary['의안번호']]: '2126707',
[translatedVariableDictionary['대']]: '21',
[translatedVariableDictionary['의안명']]: '문화다양성의 보호와 증진에 관한 법률 일부개정법률안',
[translatedVariableDictionary['제안자']]: '이자스민의원 등 10인',
[translatedVariableDictionary['제안자구분']]: '의원',
[translatedVariableDictionary['제안일']]: '2024-05-29',
[translatedVariableDictionary['소관위코드']]: '9700513',
[translatedVariableDictionary['소관위']]: '문화체육관광위원회',
[translatedVariableDictionary['소관위회부일']]: '2024-05-29',
[translatedVariableDictionary['위원회심사_처리일']]: null,
[translatedVariableDictionary['의안상세정보_URL']]:
'https://likms.assembly.go.kr/bill/billDetail.do?billId=PRC_K2S4R0S4Q3P0L0K9J0J9I5Q7P2Q4O6',
[translatedVariableDictionary['대표발의자']]: '이자스민',
[translatedVariableDictionary['법사위처리결과']]: null,
[translatedVariableDictionary['법사위처리일']]: null,
[translatedVariableDictionary['법사위상정일']]: null,
[translatedVariableDictionary['법사위회부일']]: null,
[translatedVariableDictionary['소관위처리결과']]: null,
[translatedVariableDictionary['소관위처리일']]: null,
[translatedVariableDictionary['소관위상정일']]: null,
[translatedVariableDictionary['대표발의자코드']]: 'SZ51175J',
[translatedVariableDictionary['본회의심의결과']]: '임기만료폐기',
[translatedVariableDictionary['의결일']]: '2024-05-29',
[의안ID]: 'PRC_K2S4R0S4Q3P0L0K9J0J9I5Q7P2Q4O6',
[의안번호]: '2126707',
[대]: '21',
[의안명]: '문화다양성의 보호와 증진에 관한 법률 일부개정법률안',
[제안자]: '이자스민의원 등 10인',
[제안자구분]: '의원',
[제안일]: '2024-05-29',
[소관위코드]: '9700513',
[소관위]: '문화체육관광위원회',
[소관위회부일]: '2024-05-29',
[위원회심사_처리일]: null,
[의안상세정보_URL]: 'https://likms.assembly.go.kr/bill/billDetail.do?billId=PRC_K2S4R0S4Q3P0L0K9J0J9I5Q7P2Q4O6',
[대표발의자]: '이자스민',
[법사위처리결과]: null,
[법사위처리일]: null,
[법사위상정일]: null,
[법사위회부일]: null,
[소관위처리결과]: null,
[소관위처리일]: null,
[소관위상정일]: null,
[대표발의자코드]: 'SZ51175J',
[본회의심의결과]: '임기만료폐기',
[의결일]: '2024-05-29',
});
});

Expand Down
74 changes: 49 additions & 25 deletions src/bill/getBillList.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,30 @@
import { callOpenApi } from '../functional';
import { PaginationType } from '../types/callOpenApi';
import { translatedVariableDictionary } from '../constant';
import {
대,
대표발의자,
대표발의자코드,
법사위상정일,
법사위처리결과,
법사위처리일,
법사위회부일,
본회의심의결과,
소관위,
소관위상정일,
소관위처리결과,
소관위처리일,
소관위코드,
소관위회부일,
위원회심사_처리일,
의결일,
의안ID,
의안명,
의안번호,
의안상세정보_URL,
제안일,
제안자,
제안자구분,
} from '../constant';

// https://open.assembly.go.kr/portal/data/service/selectAPIServicePage.do/O4K6HM0012064I15889
// 법률안 심사 및 처리(의안검색) 구현
Expand Down Expand Up @@ -51,29 +75,29 @@ type Argument = {
const command = 'TVBPMBILL11';

const transform = (v: Row) => ({
[translatedVariableDictionary['의안ID']]: v.BILL_ID,
[translatedVariableDictionary['의안번호']]: v.BILL_NO,
[translatedVariableDictionary['대']]: v.AGE,
[translatedVariableDictionary['의안명']]: v.BILL_NAME,
[translatedVariableDictionary['제안자']]: v.PROPOSER,
[translatedVariableDictionary['제안자구분']]: v.PROPOSER_KIND,
[translatedVariableDictionary['제안일']]: v.PROPOSE_DT,
[translatedVariableDictionary['소관위코드']]: v.CURR_COMMITTEE_ID,
[translatedVariableDictionary['소관위']]: v.CURR_COMMITTEE,
[translatedVariableDictionary['소관위회부일']]: v.COMMITTEE_DT,
[translatedVariableDictionary['위원회심사_처리일']]: v.COMMITTEE_PROC_DT,
[translatedVariableDictionary['의안상세정보_URL']]: v.LINK_URL,
[translatedVariableDictionary['대표발의자']]: v.RST_PROPOSER,
[translatedVariableDictionary['법사위처리결과']]: v.LAW_PROC_RESULT_CD,
[translatedVariableDictionary['법사위처리일']]: v.LAW_PROC_DT,
[translatedVariableDictionary['법사위상정일']]: v.LAW_PRESENT_DT,
[translatedVariableDictionary['법사위회부일']]: v.LAW_SUBMIT_DT,
[translatedVariableDictionary['소관위처리결과']]: v.CMT_PROC_RESULT_CD,
[translatedVariableDictionary['소관위처리일']]: v.CMT_PROC_DT,
[translatedVariableDictionary['소관위상정일']]: v.CMT_PRESENT_DT,
[translatedVariableDictionary['대표발의자코드']]: v.RST_MONA_CD,
[translatedVariableDictionary['본회의심의결과']]: v.PROC_RESULT_CD,
[translatedVariableDictionary['의결일']]: v.PROC_DT,
[의안ID]: v.BILL_ID,
[의안번호]: v.BILL_NO,
[]: v.AGE,
[의안명]: v.BILL_NAME,
[제안자]: v.PROPOSER,
[제안자구분]: v.PROPOSER_KIND,
[제안일]: v.PROPOSE_DT,
[소관위코드]: v.CURR_COMMITTEE_ID,
[소관위]: v.CURR_COMMITTEE,
[소관위회부일]: v.COMMITTEE_DT,
[위원회심사_처리일]: v.COMMITTEE_PROC_DT,
[의안상세정보_URL]: v.LINK_URL,
[대표발의자]: v.RST_PROPOSER,
[법사위처리결과]: v.LAW_PROC_RESULT_CD,
[법사위처리일]: v.LAW_PROC_DT,
[법사위상정일]: v.LAW_PRESENT_DT,
[법사위회부일]: v.LAW_SUBMIT_DT,
[소관위처리결과]: v.CMT_PROC_RESULT_CD,
[소관위처리일]: v.CMT_PROC_DT,
[소관위상정일]: v.CMT_PRESENT_DT,
[대표발의자코드]: v.RST_MONA_CD,
[본회의심의결과]: v.PROC_RESULT_CD,
[의결일]: v.PROC_DT,
});

/**
Expand All @@ -96,5 +120,5 @@ export const getBillList = async ({ page, take, ...rest }: Argument) => {
PROC_DT: rest.resolutionDate,
}
);
return res.TVBPMBILL11[1].row.map(transform);
return res[command][1].row.map(transform);
};
9 changes: 0 additions & 9 deletions src/bill/index.spec.ts

This file was deleted.

72 changes: 1 addition & 71 deletions src/constant/index.ts
Original file line number Diff line number Diff line change
@@ -1,71 +1 @@
/**
* @description if you modify this properties, you should upgrade the minor version because it will be a break changes
* @ignore `~명`과 같은 이름을 지칭하는 변수의 경우 `Name`으로 끝나야함, 예외적으로 구분명은 `Division`으로 끝남
* @ignore `~코드`와 같은 이름을 지칭하는 변수의 경우 `Code`로 끝나야함
* @ignore `~일자`와 같은 이름을 지칭하는 변수의 경우 `Date`로 끝나야함
* @ignore `~구분`과 같은 이름을 지칭하는 변수의 경우 `Division`으로 끝나야함, 만약 `구분명`이라면 `Division`을 사용
* @ignore `~처리`과 같은 이름을 지칭하는 변수의 경우 `Process`으로 끝나야함
* @ignore `~상정`과 같은 이름을 지칭하는 변수의 경우 `Present`으로 끝나야함
* @ignore `~회부`과 같은 이름을 지칭하는 변수의 경우 `Submit`으로 끝나야함
* @ignore `~의결`과 같은 이름을 지칭하는 변수의 경우 `Resolution`으로 끝나야함
*/
export const translatedVariableDictionary = {
국회의원코드: 'lawmakerCode',
국회의원명: 'lawmakerName',
국회의원한자명: 'lawmakerChineseName',
국회의원영문명: 'lawmakerEnglishName',
생일구분코드: 'birthdayDivisionCode',
생일일자: 'birthday',
직책명: 'dutyName',
정당명: 'politicalPartyName',
선거구명: 'electoralDistrictName',
선거구구분명: 'electoralDistrictDivisionName',
위원회명: 'committeeName',
소속위원회명: 'belongingCommitteeName',
재선구분명: 'reElectionClassificationDivision',
당선대수: 'electionCongress',
성별: 'gender',
전화번호: 'phoneNumber',
국회의원이메일주소: 'email',
국회의원홈페이지URL: 'homepage',
보좌관: 'aide',
비서관: 'seniorSecretary',
비서: 'secretary',
약력: 'profile',
사무실호실: 'officeRoom',
사진: 'picture',

// 의안 관련 추가
의안ID: 'billID',
의안번호: 'billNumber',
대: 'age',
의안명: 'billName',
제안자: 'proposer',
제안자구분: 'proposerDivision',
제안일: 'proposeDate',
소관위코드: 'jurisdictionCommitteeCode',
소관위: 'jurisdictionCommittee',
소관위회부일: 'jurisdictionCommitteeSubmitDate',
위원회심사_처리일: 'committeeReviewProcessDate',
의안상세정보_URL: 'billDetailUrl',
대표발의자: 'leadProposer',
법사위처리결과: 'legislationAndJudiciaryCommitteeProcessResult',
법사위처리일: 'legislationAndJudiciaryCommitteeProcessDate',
법사위상정일: 'legislationAndJudiciaryCommitteePresentDate',
법사위회부일: 'legislationAndJudiciaryCommitteeSubmitDate',
소관위처리결과: 'jurisdictionCommitteeProcessResult',
소관위처리일: 'jurisdictionCommitteeProcessDate',
소관위상정일: 'jurisdictionCommitteePresentDate',
대표발의자코드: 'leadProposerCode',
본회의심의결과: 'plenarySessionReviewResult',
의결일: 'resolutionDate',
일정_종류: 'scheduleType',
일정_내용: 'scheduleContent',
일정_일자: 'scheduleDate',
일정_시간: 'scheduleTime',
회의_구분: 'conferenceDivision',
회의_회기: 'conferenceSession',
회의_차수: 'conferenceDegree',
행사_주체자: 'eventInstitution',
행사_장소: 'eventPlace',
} as const;
export * from './translatedVariableDictionary';
95 changes: 95 additions & 0 deletions src/constant/translatedVariableDictionary/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
/**
* @description if you modify this properties, you should upgrade the minor version because it will be a break changes
*/

import { variable } from './variable';

const 국회의원 = 'lawmaker';
const 코드 = 'code';
const 명 = 'name';
const 한자명 = variable(`chinese`, 명);
const 영문명 = variable(`english`, 명);
const 구분 = 'division';
const 구분명 = `${구분}`;
const 생일 = 'birthday';
const 직책 = 'duty';
const 정당 = 'politicalParty';
const 선거구 = 'electoralDistrict';
const 위원회 = 'committee';
const 소속위원회 = 'belongingCommittee';
const 선거 = 'election';
const 재선 = variable(`re`, 선거);
const 의안 = `bill`;
const 번호 = 'number';
const 소관위원회 = variable(`jurisdiction`, 위원회);
const 법제사법위원회 = variable(`legislationAndJudiciary`, 위원회);
const 처리 = 'process';
const 일자 = `date`;
const 처리결과 = variable(처리, `result`);
const 처리일 = variable(처리, 일자);
const 회부일 = variable(`submit`, 일자);
const 상정일 = variable(`present`, 일자);

const 일정 = 'schedule';
const 시간 = 'time';
const 회의 = 'conference';
const 행사 = 'event';

export const 국회의원코드 = variable(국회의원, 코드);
export const 국회의원명 = variable(국회의원, 명);
export const 국회의원한자명 = variable(국회의원, 한자명);
export const 국회의원영문명 = variable(국회의원, 영문명);
export const 생일구분코드 = variable(생일, 구분, 코드);
export const 생일일자 = variable(생일);
export const 직책명 = variable(직책, 명);
export const 정당명 = variable(정당, 명);
export const 선거구명 = variable(선거구, 명);
export const 선거구구분명 = variable(선거구, 구분명);
export const 위원회명 = variable(위원회, 명);
export const 소속위원회명 = variable(소속위원회, 명);
export const 재선구분명 = variable(재선, 구분명);
export const 당선대수 = variable(선거, 'congress');
export const 성별 = 'gender';
export const 전화번호 = 'phoneNumber';
export const 국회의원이메일주소 = 'email';
export const 국회의원홈페이지URL = 'homepage';
export const 보좌관 = 'aide';
export const 비서관 = 'seniorSecretary';
export const 비서 = 'secretary';
export const 약력 = 'profile';
export const 사무실호실 = 'officeRoom';
export const 사진 = 'picture';

export const 의안ID = variable(의안, 'ID');
export const 의안번호 = variable(의안, 번호);
export const 대 = 'age';
export const 의안명 = variable(의안, 명);
export const 제안자 = variable('proposer');
export const 대표발의자 = variable(`lead`, 제안자);
export const 제안자구분 = variable(제안자, 구분);
export const 제안일 = 'proposeDate';
export const 소관위코드 = variable(소관위원회, 코드);
export const 소관위 = variable(소관위원회);
export const 소관위회부일 = variable(소관위원회, 회부일);
export const 위원회심사_처리일 = variable(위원회, 'review', 처리일);
export const 의안상세정보_URL = variable(의안, 'detailUrl');
export const 법사위처리결과 = variable(법제사법위원회, 처리결과);
export const 법사위처리일 = variable(법제사법위원회, 처리일);
export const 법사위상정일 = variable(법제사법위원회, 상정일);
export const 법사위회부일 = variable(법제사법위원회, 회부일);
export const 소관위처리결과 = variable(소관위원회, 처리결과);
export const 소관위처리일 = variable(소관위원회, 처리일);
export const 소관위상정일 = variable(소관위원회, 상정일);
export const 대표발의자코드 = variable(대표발의자, 코드);
export const 본회의심의결과 = 'plenarySessionReviewResult';
export const 의결일 = 'resolutionDate';

export const 일정_종류 = variable(일정, 'type');
export const 일정_내용 = variable(일정, 'content');
export const 일정_일자 = variable(일정, 일자);
export const 일정_시간 = variable(일정, 시간);
export const 회의_구분 = variable(회의, 구분);
export const 회의_회기 = variable(회의, 'session');
export const 회의_차수 = variable(회의, 'degree');
export const 행사_주체자 = variable(행사, 'institution');
export const 행사_장소 = variable(행사, 'place');
Loading
Loading