/
app.py
86 lines (61 loc) · 1.93 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import threading
import client
from data import Data
import database
import ai
import bot
import until
import json
def reinq_process(_id,_data):
doc = database.searchbyID(_id)
category = doc['Category']
print(category)
param_list = ai.extract(category,_data.sent.split(' On')[0])
print(param_list)
param_json = doc['Param_list']
for x in param_list:
param_json[x[0]] = x[1]
miss_list = until.validateParam(category,param_json)
database.update(_id,{"Param_list" : param_json})
if len(miss_list) == 0:
bot.send_init_mail_doc(database.searchbyID(_id))
else:
bot.send_miss_mail_doc(database.searchbyID(_id),miss_list)
def save2DB(_data):
miss_list = _data.validateParam()
valid_data = _data.toJSON()
print(json.dumps(valid_data, indent=2))
_id = database.save(valid_data)
if len(miss_list) == 0:
return (_id , [])
else:
return (_id , miss_list)
def set_interval(func, sec):
def func_wrapper():
set_interval(func, sec)
func()
t = threading.Timer(sec, func_wrapper)
t.start()
return t
def loop():
res = bot.readmail()
print(res)
print ("Total messaged retrived: ", str(len(res)))
if len(res) > 0:
for mess in res:
_data = Data(mess)
_id = _data.isREinq()
if _id:
reinq_process(_id,_data)
continue
category = ai.classify(_data.sent)
print(category)
_data.category = category
param_list = ai.extract(category,_data.sent)
_data.add_param_list(param_list)
_id , miss_list = save2DB(_data)
if _id and len(miss_list) == 0:
bot.send_init_mail_doc(database.searchbyID(_id))
else:
bot.send_miss_mail_doc(database.searchbyID(_id),miss_list)
t = set_interval(loop,3)