.KG_Update_API.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. import uvicorn
  2. from fastapi import FastAPI
  3. from pydantic import BaseModel
  4. from hashlib import md5
  5. from logger import LoggerHandler
  6. logger = LoggerHandler(name="kgupdate")
  7. logger.set_file_handler(filename="kgupdate.log")
  8. app = FastAPI()
  9. global cookie, base_url, pushed
  10. cookie = "JSESSIONID=40225388-b817-471b-8fc0-7afb72389712"
  11. base_url = 'http://180.76.188.39:8284/'
  12. pushed = []
  13. eduback_dict = {
  14. 26:'博士后',
  15. 24:'博士',
  16. 22:'MBA/EMBA',
  17. 20:'硕士',
  18. 18:'本科',
  19. 16:'大专',
  20. 14:'中专/中技',
  21. 12: '高中',
  22. 10:'初中及以下'
  23. }
  24. def post_json(json_obj, token="1654940290763"):
  25. """
  26. 将json数据提交到push接口
  27. :param json_obj:
  28. :return:
  29. """
  30. global pushed
  31. # 是否已推送
  32. if json_obj['@id'] in pushed:
  33. return
  34. # 推送
  35. url = base_url + "data/api/access/push"
  36. headers = {
  37. "token": token,
  38. "Cookie": cookie
  39. }
  40. try:
  41. response = requests.post(url, json=json_obj, headers=headers)
  42. result = response.text
  43. logger.info(result)
  44. except:
  45. logger.error(e)
  46. return "ERROR: {} 数据推送 KG 失败!".format(json)
  47. else:
  48. pushed.append(json_obj['@id'])
  49. return
  50. @app.post("/API/TEST")
  51. async def trans_push(xdpost: dict):
  52. xdpost = xdpost['data']
  53. high_edu = {"schoolName": None, "major": None, "degree": None}
  54. org_list = []
  55. job_list = []
  56. for job in xdpost["hisJob"]:
  57. org_list.append(job['companyName'])
  58. job_list.append(job['companyName'] + job['industry'] + job['jobName'] + job['jobDesc'])
  59. post_json({
  60. "@id": md5(job['companyName'].encode(encoding="UTF-8")).hexdigest(),
  61. "id": md5(job['companyName'].encode(encoding="UTF-8")).hexdigest(),
  62. "@type": "相关机构",
  63. "@contentType": "struct",
  64. "@markdel": "0",
  65. "name": [{"@value": job['companyName']}]
  66. })
  67. post_json({
  68. "@id": md5(job['id'].encode(encoding="UTF-8")).hexdigest(),
  69. "id": job['id'],
  70. "@type": "工作经历demo",
  71. "name": job['companyName'] + job['industry'] + job['jobName'] + job['jobDesc'],
  72. "@markdel": "0",
  73. "@contentType": "struct",
  74. "时间": [{"@value": job['startTime']+job['endTime']}],
  75. "公司": [{"@value": job['companyName']}],
  76. "行业": [{"@value": job['industry']}],
  77. "职位": [{"@value": job['jobName']}],
  78. "工作内容": [{"@value": job['jobDesc']}]
  79. })
  80. edu_list = []
  81. for edu in xdpost["hisEdu"]:
  82. if (not high_edu.get("schoolName")) or (high_edu['degree'] < edu['degree']):
  83. high_edu['schoolName'] = edu['schoolName']
  84. high_edu['major'] = edu['major']
  85. high_edu['degree'] = edu['degree']
  86. org_list.append(edu['schoolName'])
  87. edu_list.append(edu['startTime'] + edu['schoolName'] + edu['major'] + eduback_dict[edu['degree']])
  88. post_json({
  89. "@id": md5(edu['schoolName'].encode(encoding="UTF-8")).hexdigest(),
  90. "id": md5(edu['schoolName'].encode(encoding="UTF-8")).hexdigest(),
  91. "@type": "相关机构",
  92. "@contentType": "struct",
  93. "@markdel": "0",
  94. "name": [{"@value": edu['schoolName']}]
  95. })
  96. post_json({
  97. "@id": md5(edu['id'].encode(encoding="UTF-8")).hexdigest(),
  98. "id": edu['id'],
  99. "@type": "教育经历demo",
  100. "name": edu['startTime'] + edu['schoolName'] + edu['major'] + eduback_dict[edu['degree']],
  101. "@markdel": "0",
  102. "@contentType": "struct",
  103. "时间": [{"@value": edu['startTime']+edu['endTime']}],
  104. "学校": [{"@value": edu['schoolName']}],
  105. "专业": [{"@value": edu['major']}],
  106. "学历": [{"@value": edu['degree']}]
  107. })
  108. pro_list = []
  109. for pro in xdpost["hisProject"]:
  110. pro_list.append(pro['companyName'] + pro['projectName'] + pro['projectOffice'] + pro['projectDuty'])
  111. post_json({
  112. "@id": md5(pro['id'].encode(encoding="UTF-8")).hexdigest(),
  113. "id": pro['id'],
  114. "@type": "项目经历demo",
  115. "name": pro['companyName'] + pro['projectName'] + pro['projectOffice'] + pro['projectDuty'],
  116. "@markdel": "0",
  117. "@contentType": "struct",
  118. "时间": [{"@value": pro['startTime']+pro['endTime']}],
  119. "公司": [{"@value": pro['companyName']}],
  120. "项目": [{"@value": pro['projectName']}],
  121. "职位": [{"@value": pro['projectDuty']}],
  122. "成果": [{"@value": pro['projectOffice']}]
  123. })
  124. tra_list = []
  125. json_obj = {
  126. "@id": md5(xdpost['tId'].encode(encoding='UTF-8')).hexdigest(),
  127. "id": xdpost['tId'],
  128. "@type": "人才特征demo",
  129. "name": xdpost['name'],
  130. "@markdel": '0',
  131. "@contentType": "struct",
  132. "姓名": [{"@value": xdpost['name']}],
  133. "年龄": [{"@value": xdpost['age']}],
  134. "性别": [{"@value": '男' if xdpost['gender'] == "0" else '女'}],
  135. "出生年月": [{"@value": xdpost['birthTime']}],
  136. "手机号码": [{"@value": xdpost['mobile']}],
  137. "电子邮箱": [{"@value": xdpost['email']}],
  138. "政治面貌": [{"@value": xdpost['politics']}],
  139. "参加工作时间": [{"@value": xdpost['workBeginTime']}],
  140. "当前职位": [{"@value": xdpost['currentJob']}],
  141. "意向职位": [{"@value": xdpost['intentJob']}],
  142. "当前年薪": [{"@value": xdpost['currentSalaryYearly']}],
  143. "当前所在城市": [{"@value": None}],
  144. "意向城市": [{"@value": None}],
  145. "意向年薪": [{"@value": xdpost['intentSalaryYearlyMax']}],
  146. "相关机构": org_list,
  147. "教育经历": edu_list,
  148. "工作经历": job_list,
  149. "项目经历": pro_list,
  150. "培训和海外经历": tra_list,
  151. "当前最高学历": [{"@value": eduback_dict[high_edu['degree']]}],
  152. "最高学历学校": [{"@value": high_edu['schoolName']}],
  153. "当前最高学历专业": [{"@value": high_edu['major']}],
  154. "语言能力": [{"@value": val['lanName']} for val in xdpost['language']],
  155. "技术职称": [{"@value": None}],
  156. "研究领域": [{"@value": val['researchName']} for val in xdpost['researchList']],
  157. "研究领域分类": [{"@value": val['researchName']} for val in xdpost['researchList']],
  158. "婚姻状况": [{"@value": None}],
  159. "特长爱好": [{"@value": None}],
  160. "人才标签": [{"@value": None}],
  161. "人才特点": [{"@value": None}],
  162. "当前行业": [{"@value": None}],
  163. "专业证书": [{"@value": None}],
  164. "入选人才": [{"@value": None}],
  165. "知识产权": [{"@value": None}],
  166. "获得荣誉及证明": [{"@value": None}],
  167. "备注信息": [{"@value": None}],
  168. "对报名岗位认识及工作设想": [{"@value": None}],
  169. "自我评价及主要工作业绩": [{"@value": None}],
  170. "当前公司": [{"@value": None}],
  171. "毕业院校分类": [{"@value": None}],
  172. "工作年限": [{"@value": None}],
  173. "专业方向大类": [{"@value": None}],
  174. "报名岗位": [{"@value": None}],
  175. }
  176. return {"errno": 0, "msg": "Success"}
  177. if __name__ == '__main__':
  178. uvicorn.run(app=app, host="0.0.0.0", port=8400)