Example #1
0
def chatbot(msg):
    if 'dialog' in msg:
        dialog = byteArrayToStr(msg['dialog'])
    if 'callState' in msg:
        callState = byteArrayToStr(msg['callState'])
    if 'filename' in msg:
        filename = byteArrayToStr(msg['filename'])
    print(callState)
    print('Inner Chatbot : ')
    print(filename)
    # check state
    if callState == 'termTest':
        caller = get_term_ready(dialog, filename)
        if caller['sign']:
            print(caller['subject'])
            print(caller['termCount'])
            return {
                'dialog': '그럼 시험을 시작하겠습니다. 과목은 ' + caller['subject'] + '입니다. 총' + str(
                    caller['termCount']) + '문제 입니다. 문제의 입력은 \'n번 m\'같은 형식으로 입력하시면됩니다.'
                                           '채점시에는 \'채점\' 혹은 \'완료\'라고 입력하시면 됩니다.',
                'callState': 'testTermOK', 'subject': caller['subject'], 'termCount': str(caller['termCount'])}
        return {'dialog': '그럼 문제를 일단 저장해두겠습니다. 다음부터 동일 문제의 조회가 빨라집니다', 'callState': 'None'}
    elif callState == 'testTermOK':
        data = get_term_input(dialog)
        return data
    elif callState == 'testTermMarking':
        if 'test' in msg:
            if msg['test'] == True:
                if msg['sub'] == 'math':
                    data = test_marking_term_math(msg)
                elif msg['sub'] == 'kor':
                    data = test_marking_term_kor(msg)
                elif msg['sub'] == 'eng':
                    data = test_marking_term_eng(msg)
            else:
                data = marking_term(msg)
        else:
            data = marking_term(msg)
        print(data)
        return {'dialog': '채점이 완료되었습니다.<br>이번 시험의 점수는 ' + str(data['total']) + '입니다.<br>등급은 ' + str(
            data['grade']) + '등급 입니다', 'callState': 'myPage', 'data': data}
    # check None state
    if dialog.find('상황') >= 0 or dialog.find('점수') >= 0 or dialog.find('정보') >= 0:
        return {'dialog': '개인 정보를 불러 오겠습니다.', 'callState': 'myPage'}
    elif dialog.find('한준') >= 0:
        return {'dialog': '회장님', 'callState': 'None'}
    elif dialog.find('진하') >= 0:
        return {'dialog': '임지짜입니다', 'callState': 'None'}
    elif dialog.find('현영') >= 0:
        return {'dialog': '안마노예', 'callState': 'None'}
    elif dialog.find('모의고사') >= 0 or dialog.find('수능') >= 0:
        filename = term(dialog)
        print('filename : ')
        print(filename)
        emit('loadTerm', {'filename': filename})
        return {'dialog': '문제를 가져왔습니다.', 'callState': 'None', 'filename': filename}
    else:
        return {'dialog': '무슨 말인지 모르겠습니다.', 'callState': 'None'}
Example #2
0
def dialog(msg):
    dialog = byteArrayToStr(msg['data'])
    name = byteArrayToStr(msg['name'])
    email = byteArrayToStr(msg['email'])
    callState = byteArrayToStr(msg['callState'])
    time = str(datetime.datetime.now())
    print('socket on dialog : ')
    print(dialog, name, email, time, callState)
    if 'isLogin' in session:
        if addDialog(dialog, name, email, time, callState):
            emit(
                'dialogConfirm', {
                    'confirm': True,
                    'dialog': dialog,
                    'time': time,
                    'callState': callState
                })
        else:
            emit('dialogConfirm', {'confirm': False})
    else:
        emit('dialogConfirm', {'confirm': False})
Example #3
0
def callTermTest(msg):
    if 'state' in msg:
        if msg['state']:
            # tmp = chatbot(msg['filename'])
            filename = byteArrayToStr(msg['filename'])
            print('socket on callTermTest : ')
            print(filename)
            emit(
                'ansChatbot', {
                    'dialog': '문제를 푸시겠습니까?',
                    'callState': 'termTest',
                    'filename': filename
                })
Example #4
0
def test_marking_term_eng(msg):
    filename = byteArrayToStr(msg['filename'])
    subject = byteArrayToStr(msg['subject'])
    termCount = byteArrayToStr(msg['termCount'])
    termData = filename.split('/')
    termData = termData[len(termData) - 1]
    termData = termData.split('.')[0]
    termData = termData.split(' ')
    if termData[len(termData) - 1].find('수능') >= 0:
        year = termData[0]
        term_type = '수능'
    elif termData[len(termData) - 1].find('모의고사') >= 0:
        year = termData[0]
        month = termData[1]
        term_type = '모의고사'
    termArr = [
        2, 1, 1, 3, 1, 5, 1, 1, 4, 4, 4, 2, 3, 5, 5, 3, 3, 2, 1, 2, 5, 5, 1, 3,
        4, 4, 4, 4, 3, 4, 2, 3, 1, 4, 2, 4, 5, 5, 3, 2, 1, 2, 5, 2, 5
    ]
    print(termArr)
    print(session)

    if term_type == '수능':
        data = {'year': year, 'subject': subject, 'term_type': term_type}
        jsonData = bytes(json.dumps(data).encode())
        req = urllib.request.Request("http://localhost:5001/wrong-answer",
                                     data=jsonData)
        req.get_method = lambda: 'get'
        jsonResult = urllib.request.urlopen(req).read()
        resultW = json.loads(jsonResult.decode())
        print(resultW)

        jsonData = bytes(json.dumps(data).encode())
        req = urllib.request.Request("http://localhost:5001/point-cut",
                                     data=jsonData)
        req.get_method = lambda: 'get'
        jsonResult = urllib.request.urlopen(req).read()
        resultP = json.loads(jsonResult.decode())
        print(resultP)
    elif term_type == '모의고사':
        data = {
            'year': year,
            'month': month,
            'subject': subject,
            'term_type': term_type
        }
        jsonData = bytes(json.dumps(data).encode())
        req = urllib.request.Request("http://localhost:5001/wrong-answer",
                                     data=jsonData)
        req.get_method = lambda: 'get'
        jsonResult = urllib.request.urlopen(req).read()
        resultW = json.loads(jsonResult.decode('utf-8'))
        print(resultW)

        jsonData = bytes(json.dumps(data).encode())
        req = urllib.request.Request("http://localhost:5001/point-cut",
                                     data=jsonData)
        req.get_method = lambda: 'get'
        jsonResult = urllib.request.urlopen(req).read()
        resultP = json.loads(jsonResult.decode())
        print(resultP)
    total = 0
    origin = []
    print(termArr)
    for i in range(len(termArr)):
        if str(termArr[i]) == str(resultW[str(i + 1)]['정답']):
            origin.append(int(resultW[str(i + 1)]['배점']))
            total += int(resultW[str(i + 1)]['배점'])
    print(total)
    grade = 1
    for i in range(len(resultP)):
        if int(resultP[str(i + 1)]['원점수']) >= total:
            grade = int(resultP[str(i + 1)]['등급'])
    data = {
        'email': session['email'],
        'subject': subject,
        'termCount': termCount,
        'filename': filename,
        'termArr': termArr,
        'grade': grade,
        'total': total
    }
    jsonData = bytes(json.dumps(data).encode())
    req = urllib.request.Request("http://localhost:5001/answer", data=jsonData)
    req.get_method = lambda: 'post'
    jsonResult = urllib.request.urlopen(req).read()
    result = json.loads(jsonResult.decode())
    print(result)
    term_type = result['term_type']
    return {
        'origin': origin,
        'termArr': termArr,
        'total': total,
        'grade': grade
    }
Example #5
0
def markingTermChatbot(msg):
    filename = byteArrayToStr(msg['filename'])
    termCount = byteArrayToStr(msg['termCount'])
    termArr = []
    if 'test' in msg:
        test = msg['test']
    else:
        test = None
    i = 0
    size = 0
    addStr = ''
    for termE in msg['termArr']:
        if termE is None:
            termArr.append(None)
        else:
            termArr.append(byteArrayToStr(termE))
            size += 1
            addStr += str(i + 1) + '번 '
        i += 1
    print('size:' + str(size))
    print('termCount:' + str(termCount))
    print(test)
    if test:
        emit(
            'ansChatbot', {
                'dialog': '문제를 모두 푸셨습니다. 채점을 시작합니다.',
                'callState': 'testTermMarking',
                'filename': filename,
                'test': msg['test']
            })
        msg['callState'] = b'testTermMarking'
        tmp = chatbot(msg)
        emit(
            'ansChatbot', {
                'dialog': tmp['dialog'],
                'callState': tmp['callState'],
                'filename': filename,
                'test': msg['test']
            })
    elif str(termCount) != str(size):
        emit(
            'ansChatbot', {
                'dialog': '아직 문제를 다 풀지 못했습니다.<br> 푼 문제는 ' + addStr + '입니다.',
                'callState': 'testTermOK',
                'filename': filename
            })
    elif size == 0:
        emit(
            'ansChatbot', {
                'dialog': '아직 문제를 다 풀지 못했습니다.<br> 푼 문제는 없습니다.',
                'callState': 'testTermOK',
                'filename': filename
            })
    else:
        emit(
            'ansChatbot', {
                'dialog': '문제를 모두 푸셨습니다. 채점을 시작합니다.',
                'callState': 'testTermMarking',
                'filename': filename,
                'test': msg['test']
            })
        msg['callState'] = b'testTermMarking'
        tmp = chatbot(msg)
        emit(
            'ansChatbot', {
                'dialog': tmp['dialog'],
                'callState': tmp['callState'],
                'filename': filename,
                'test': msg['test']
            })