-
Notifications
You must be signed in to change notification settings - Fork 61
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
예약대기 기능 추가 #247
예약대기 기능 추가 #247
Conversation
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
감사합니다~ mock response를 통해서 테스트가 가능하면 좋겠습니다만, 아직 해당 부분이 구현되어 있지 않네요 (#230) . 혹시 PR을 작성하는 과정에서 서버에서 응답하는 response를 확인하셨다면 해당 내용을 공유해주시면 리뷰에 도움이 될 것 같습니다.
@@ -347,6 +348,161 @@ def reserve( | |||
# if ticket not found, it's an error | |||
raise SRTError("Ticket not found: check reservation status") | |||
|
|||
def reserve_standby( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
jobId를 제외하면 대부분의 내용이 reserve함수와 동일한 듯하니, 아래와 같이 공통된 부분을 따로 빼고 재사용하면 좋을 것 같습니다. 혹은 reserve 함수 자체에 파라미터로 추가하는 것도 방법이겠으나, 유저가 기대하는 결과가 다르니 지금처럼 두 개의 reserve, reserve_standby 함수를 가지는 것은 좋아보여요.
def reserve():
self._reserve(reserve_jobid, ...)
def reserve_standby():
self._reserve(reserve_standby_jobid, ...)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
안녕하세요 :)
피드백 감사합니다 👍
불필요한 파라미터가 흘러 들어가는게 우려되어 별도로 분리하였으나, 중복되는 코드에 대한 고민이 충분치 않았습니다.
실제 예매 페이지에서도 공통되는 파라미터가 포함된 상태로 요청이 들어가고 있음을 확인했고,
결과적으로는 의미가 크지 않을거라 판단되어, 말씀주신 방향대로 srt.py 파일 내 _reserve 함수로 분리하여, 공통된 코드를 일원화 했습니다.
아래는 웹페이지 예메 시 전송되는 요청별 파라미터입니다. 참고해주세요.
[1101] 개인 예매 요청 시 param
type: 1
jobId: 1101
jrnyTpCd: 11
jrnyTpCd1:
jrnyTpCd2:
jrnyCnt: 1
grpDv: 0
rtnDv: 0
stlbTrnClsfCd1: 17
stlbTrnClsfCd2: 05
stndFlg: N
jrnySqno1: 001
jrnySqno2:
trnGpCd1: 300
trnGpCd2:
trnGpNm1: 전체
trnGpNm2:
dptRsStnCd1: 0551
dptRsStnCd2:
dptRsStnCdNm1: 수서
dptRsStnCdNm2:
arvRsStnCd1: 0015
arvRsStnCd2:
arvRsStnCdNm1: 동대구
arvRsStnCdNm2:
dptDt1: 20230906
dptTm1: 224000
dptDt2:
dptTm2:
arvDt1:
arvTm1: 002500
arvTm2:
dptDtTmNm1: 2023년 9월 6일(수)
back_dptDt1: 20230906
back_dptTm1: 000000
back_dptDtTmNm1: 2023년 9월 6일(수)
totPrnb: 1
totPrnbNm: 1명
psgGridcnt: 1
psgTpCd1: 1
psgInfoPerPrnb1: 1
psgTpCd2:
psgInfoPerPrnb2: 0
psgTpCd3:
psgInfoPerPrnb3: 0
psgTpCd4:
psgInfoPerPrnb4: 0
psgTpCd5:
psgInfoPerPrnb5: 0
infantCnt: 0
smkSeatAttCd1: 000
dirSeatAttCd1: 009
locSeatAttCd1: 000
rqSeatAttCd1: 015
etcSeatAttCd1: 000
seatAttNm1: 일반/기본
smkSeatAttCd2: 000
dirSeatAttCd2: 009
locSeatAttCd2: 000
rqSeatAttCd2: 015
etcSeatAttCd2: 000
seatAttNm2: 일반/기본
seatNo1_1:
seatNo1_2:
seatNo1_3:
seatNo1_4:
seatNo1_5:
seatNo1_6:
seatNo1_7:
seatNo1_8:
seatNo1_9:
seatNo2_1:
seatNo2_2:
seatNo2_3:
seatNo2_4:
seatNo2_5:
seatNo2_6:
seatNo2_7:
seatNo2_8:
seatNo2_9:
scarGridcnt1:
scarGridcnt2:
trnNo1: 00379
trnNo2:
runDt1: 20230906
runDt2:
scarNo1:
scarNo2:
psrmClCd1: 1
psrmClCd2:
seatAttCd:
dptStnConsOrdr1: 000001
dptStnConsOrdr2:
arvStnConsOrdr1: 000015
arvStnConsOrdr2:
dptStnRunOrdr1: 000001
dptStnRunOrdr2:
arvStnRunOrdr1: 000006
arvStnRunOrdr2:
choiceSeatCount:
pnrNo:
jrnySqno:
JRNYLIST_KEY:
arvDt:
arvRsStnCd:
arvTm:
dlayAcptFlg:
dptDt:
dptRsStnCd:
dptTm: 000000
lumpStlTgtNo:
proyStlTgtFlg:
stlbTrnClsfCd:
totSeatNum:
trnGpCd: 109
trnNo:
rcvdAmt:
tmpJobSqno1:
tmpJobSqno2:
dcntKndCd:
seatNo1:
seatNo2:
chtnDvCd:
msgTxt:
ymsAplFlg:
reserveType: 11
reserveObjId: https://app.srail.or.kr/ara/selectListAra10007_n.do? (뒤에 query param이 더 붙는데 생략합니다.)
mblPhone:
[1102] 예약대기 요청 시 param
type: 1
jobId: 1102
jrnyTpCd: 11
jrnyTpCd1:
jrnyTpCd2:
jrnyCnt: 1
grpDv: 0
rtnDv: 0
stlbTrnClsfCd1: 17
stlbTrnClsfCd2: 05
stndFlg: N
jrnySqno1: 001
jrnySqno2:
trnGpCd1: 300
trnGpCd2:
trnGpNm1: 전체
trnGpNm2:
dptRsStnCd1: 0551
dptRsStnCd2:
dptRsStnCdNm1: 수서
dptRsStnCdNm2:
arvRsStnCd1: 0015
arvRsStnCd2:
arvRsStnCdNm1: 동대구
arvRsStnCdNm2:
dptDt1: 20230909
dptTm1: 053000
dptDt2:
dptTm2:
arvDt1:
arvTm1: 071100
arvTm2:
dptDtTmNm1: 2023년 9월 6일(수)
back_dptDt1: 20230906
back_dptTm1: 000000
back_dptDtTmNm1: 2023년 9월 6일(수)
totPrnb: 1
totPrnbNm: 1명
psgGridcnt: 1
psgTpCd1: 1
psgInfoPerPrnb1: 1
psgTpCd2:
psgInfoPerPrnb2: 0
psgTpCd3:
psgInfoPerPrnb3: 0
psgTpCd4:
psgInfoPerPrnb4: 0
psgTpCd5:
psgInfoPerPrnb5: 0
infantCnt: 0
smkSeatAttCd1: 000
dirSeatAttCd1: 009
locSeatAttCd1: 000
rqSeatAttCd1: 015
etcSeatAttCd1: 000
seatAttNm1: 일반/기본
smkSeatAttCd2: 000
dirSeatAttCd2: 009
locSeatAttCd2: 000
rqSeatAttCd2: 015
etcSeatAttCd2: 000
seatAttNm2: 일반/기본
seatNo1_1:
seatNo1_2:
seatNo1_3:
seatNo1_4:
seatNo1_5:
seatNo1_6:
seatNo1_7:
seatNo1_8:
seatNo1_9:
seatNo2_1:
seatNo2_2:
seatNo2_3:
seatNo2_4:
seatNo2_5:
seatNo2_6:
seatNo2_7:
seatNo2_8:
seatNo2_9:
scarGridcnt1:
scarGridcnt2:
trnNo1: 00301
trnNo2:
runDt1: 20230909
runDt2:
scarNo1:
scarNo2:
psrmClCd1: 1
psrmClCd2:
seatAttCd:
dptStnConsOrdr1: 000001
dptStnConsOrdr2:
arvStnConsOrdr1: 000015
arvStnConsOrdr2:
dptStnRunOrdr1: 000001
dptStnRunOrdr2:
arvStnRunOrdr1: 000005
arvStnRunOrdr2:
choiceSeatCount:
pnrNo:
jrnySqno:
JRNYLIST_KEY:
arvDt:
arvRsStnCd:
arvTm:
dlayAcptFlg:
dptDt:
dptRsStnCd:
dptTm: 000000
lumpStlTgtNo:
proyStlTgtFlg:
stlbTrnClsfCd:
totSeatNum:
trnGpCd: 109
trnNo:
rcvdAmt:
tmpJobSqno1:
tmpJobSqno2:
dcntKndCd:
seatNo1:
seatNo2:
chtnDvCd:
msgTxt:
ymsAplFlg:
reserveType:
reserveObjId: https://app.srail.or.kr/ara/selectListAra10007_n.do? (뒤에 query param이 더 붙는데 생략합니다.)
smsSndFlg:
mblPhone: 010-****-**** (임의 마스킹처리)
# if ticket not found, it's an error | ||
raise SRTError("Ticket not found: check reservation status") | ||
|
||
def reserve_standby_option_settings( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
예약대기를 하면 기본 알림 설정이 어떻게 되나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아시다시피 해당 내용을 정확하게 파악하기 어려움이 있습니다 ㅠ
웹페이지 예약대기 프로세스 상 기준으로 작업했고, 아래와 같습니다.
예약대기 신청 -> 예약대기에 대한 설정(1: 일반실에 좌석이 없는 경우, 특실로 예약하기 | 2: 연락받을 전화번호)
기본적으로 실제 프로세스에서 예약대기 신청 이후, 진행하지 않은 경우에 따른 작동과 동일합니다.
이해를 돕기위해 간략히 프로세스에 대해 기록합니다.
1. 아래 이미지에서 예약하기 버튼을 클릭하면, 예약대기 신청(reserve_standby) 요청이 전송됩니다.
2. 아래 이미지에서 동의버튼을 누르면, 네트워크 요청없이, 단순히 다음화면으로 진입합니다.
3. 이전 화면에서 동의를 누른 경우, 전화번호가 자동으로 입력되며, 아니오를 누른 경우 전화번호는 비어있으며, textfield에 수동으로 입력이 불가합니다. | 신청하기 버튼을 누르면 예약대기 옵션(reserve_standby_option_settings)이 저장됩니다
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
@ryanking13 reserve_standby 에 대한 response{
"payListMap": [],
"reservListMap": [
{
"proyStlTgtFlg": "",
"totSeatNum": 1,
"stlbTrnClsfCd": "17",
"jrnyTpCd": "11",
"lumpStlTgtNo": "20230906003289425712",
"dptTm": "053000",
"arvRsStnCd": "0015",
"JRNYLIST_KEY": 0,
"pnrNo": "320230929057048",
"dptDt": "20230909",
"trnNo": "301",
"arvDt": "20230909",
"dlayAcptFlg": "N",
"trnGpCd": "300",
"arvTm": "071100",
"dptRsStnCd": "0551"
}
],
"resultMap": [
{
"tmpJobSqno1": 74161,
"tmpJobSqno2": 0,
"msgCd": "IRR000014",
"sprmFare": 0,
"totRcvdAmt": 54200,
"jrnyCnt": 1,
"wctNo": "81301",
"alertMsg": "",
"strResult": "SUCC",
"msgTxt": "예약대기 가능합니다.",
"uuid": "APP0906225605000140100001799192954",
"cgPsId": "korail"
}
],
"commandMap": {
"type": "1",
"jobId": "1102",
"jrnyTpCd": "11",
"jrnyTpCd1": "",
"jrnyTpCd2": "",
"jrnyCnt": "1",
"grpDv": "0",
"rtnDv": "0",
"stlbTrnClsfCd1": "17",
"stlbTrnClsfCd2": "05",
"stndFlg": "N",
"jrnySqno1": "001",
"jrnySqno2": "",
"trnGpCd1": "300",
"trnGpCd2": "",
"trnGpNm1": "전체",
"trnGpNm2": "",
"dptRsStnCd1": "0551",
"dptRsStnCd2": "",
"dptRsStnCdNm1": "수서",
"dptRsStnCdNm2": "",
"arvRsStnCd1": "0015",
"arvRsStnCd2": "",
"arvRsStnCdNm1": "동대구",
"arvRsStnCdNm2": "",
"dptDt1": "20230909",
"dptTm1": "053000",
"dptDt2": "",
"dptTm2": "",
"arvDt1": "",
"arvTm1": "071100",
"arvTm2": "",
"dptDtTmNm1": "2023년 9월 7일(목)",
"back_dptDt1": "20230907",
"back_dptTm1": "000000",
"back_dptDtTmNm1": "2023년 9월 7일(목)",
"totPrnb": "1",
"totPrnbNm": "1명",
"psgGridcnt": "1",
"psgTpCd1": "1",
"psgInfoPerPrnb1": "1",
"psgTpCd2": "",
"psgInfoPerPrnb2": "0",
"psgTpCd3": "",
"psgInfoPerPrnb3": "0",
"psgTpCd4": "",
"psgInfoPerPrnb4": "0",
"psgTpCd5": "",
"psgInfoPerPrnb5": "0",
"infantCnt": "0",
"smkSeatAttCd1": "000",
"dirSeatAttCd1": "009",
"locSeatAttCd1": "000",
"rqSeatAttCd1": "015",
"etcSeatAttCd1": "000",
"seatAttNm1": "일반/기본",
"smkSeatAttCd2": "000",
"dirSeatAttCd2": "009",
"locSeatAttCd2": "000",
"rqSeatAttCd2": "015",
"etcSeatAttCd2": "000",
"seatAttNm2": "일반/기본",
"seatNo1_1": "",
"seatNo1_2": "",
"seatNo1_3": "",
"seatNo1_4": "",
"seatNo1_5": "",
"seatNo1_6": "",
"seatNo1_7": "",
"seatNo1_8": "",
"seatNo1_9": "",
"seatNo2_1": "",
"seatNo2_2": "",
"seatNo2_3": "",
"seatNo2_4": "",
"seatNo2_5": "",
"seatNo2_6": "",
"seatNo2_7": "",
"seatNo2_8": "",
"seatNo2_9": "",
"scarGridcnt1": "",
"scarGridcnt2": "",
"trnNo1": "00301",
"trnNo2": "",
"runDt1": "20230909",
"runDt2": "",
"scarNo1": "",
"scarNo2": "",
"psrmClCd1": "2",
"psrmClCd2": "",
"seatAttCd": "",
"dptStnConsOrdr1": "000001",
"dptStnConsOrdr2": "",
"arvStnConsOrdr1": "000015",
"arvStnConsOrdr2": "",
"dptStnRunOrdr1": "000001",
"dptStnRunOrdr2": "",
"arvStnRunOrdr1": "000005",
"arvStnRunOrdr2": "",
"choiceSeatCount": "",
"pnrNo": "",
"jrnySqno": "",
"JRNYLIST_KEY": "",
"arvDt": "",
"arvRsStnCd": "",
"arvTm": "",
"dlayAcptFlg": "",
"dptDt": "",
"dptRsStnCd": "",
"dptTm": "000000",
"lumpStlTgtNo": "",
"proyStlTgtFlg": "",
"stlbTrnClsfCd": "",
"totSeatNum": "",
"trnGpCd": "109",
"trnNo": "",
"rcvdAmt": "",
"tmpJobSqno1": "",
"tmpJobSqno2": "",
"dcntKndCd": "",
"seatNo1": "",
"seatNo2": "",
"chtnDvCd": "",
"msgTxt": "",
"ymsAplFlg": "",
"reserveType": "",
"reserveObjId": "https://app.srail.or.kr/ara/selectListAra10007_n.do? (생략)",
"smsSndFlg": "",
"mblPhone": "010-****-**** (생략)"
},
"trainListMap": [
{
"rcvdAmt": 0,
"scarNo": 0,
"seatPrc": 0,
"psrmClCd": "2",
"rqSeatAttCd": "",
"JRNYLIST_KEY": 0,
"psgTpCd": "1",
"SEATLIST_KEY": 0,
"seatNo": "",
"psgTpDvCd": "",
"dcntKndCd": "",
"dcntAmt": 0,
"seatFare": 0
}
]
} reserve_standby_option_settings 에 대한 response{
"ERROR_MSG": "",
"ERROR_CODE": "0",
"dsResultMap": {
"dsOutput": {
"msgCd": "IRZ000003",
"intgMsgCd": "IRZ000003",
"strResult": "SUCC",
"msgTxt": "정상적으로 수정 되었습니다."
}
}
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
감사합니다~
안녕하세요.
특실/일반실 전석 매진 시 사용할 수 있는, 예약대기 신청 기능을 추가했습니다.