KG_Update_API.py 6.6 KB

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