|
@@ -0,0 +1,194 @@
|
|
|
+import uvicorn
|
|
|
+from typing import Dict,List,Any
|
|
|
+from fastapi import FastAPI
|
|
|
+from pydantic import BaseModel
|
|
|
+from hashlib import md5
|
|
|
+
|
|
|
+app =FastAPI()
|
|
|
+
|
|
|
+# 各种知识集构建
|
|
|
+global cookie, base_url, willpush, pushed, pushlen
|
|
|
+willpush = True
|
|
|
+cookie = "JSESSIONID=40225388-b817-471b-8fc0-7afb72389712"
|
|
|
+base_url = 'http://180.76.188.39:8284/'
|
|
|
+
|
|
|
+pushed = []
|
|
|
+pushlen = 0
|
|
|
+
|
|
|
+def post_json(json_obj, token="1654940290763"):
|
|
|
+ """
|
|
|
+ 将json数据提交到push接口
|
|
|
+ :param json_obj:
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ global willpush, pushed, pushlen
|
|
|
+ # 是否已推送
|
|
|
+ if json_obj['@id'] in pushed:
|
|
|
+ print(len(pushed))
|
|
|
+ return ''
|
|
|
+ # 推送
|
|
|
+ pushed.append(json_obj['@id'])
|
|
|
+
|
|
|
+ url = base_url + "data/api/access/push"
|
|
|
+ headers = {
|
|
|
+ "token": token,
|
|
|
+ "Cookie": cookie
|
|
|
+ }
|
|
|
+ # print(url)
|
|
|
+ if pushlen < 300:
|
|
|
+ return ""
|
|
|
+ else:
|
|
|
+ response = requests.post(url, json=json_obj, headers=headers)
|
|
|
+ result = response.text
|
|
|
+ print(result)
|
|
|
+ pass
|
|
|
+ if json_obj["@type"] == "相关机构":
|
|
|
+ print(json_obj)
|
|
|
+ time.sleep(0.1)
|
|
|
+
|
|
|
+ return ""
|
|
|
+
|
|
|
+eduback_dict = {
|
|
|
+ 26:'博士后',
|
|
|
+ 24:'博士',
|
|
|
+ 22:'MBA/EMBA',
|
|
|
+ 20:'硕士',
|
|
|
+ 18:'本科',
|
|
|
+ 16:'大专',
|
|
|
+ 14:'中专/中技',
|
|
|
+ 12: '高中',
|
|
|
+ 10:'初中及以下'
|
|
|
+}
|
|
|
+
|
|
|
+@app.post("/API/TEST")
|
|
|
+async def trans_push(xdpost: dict):
|
|
|
+ xdpost = xdpost['data']
|
|
|
+ high_edu = {"schoolName": None,"major": None,"degree": None}
|
|
|
+ org_list = []
|
|
|
+ job_list = []
|
|
|
+ for job in xdpost["hisJob"]:
|
|
|
+ org_list.append(job['companyName'])
|
|
|
+ job_list.append(job['companyName'] + job['industry'] + job['jobName'] + job['jobDesc'])
|
|
|
+ post_json({
|
|
|
+ "@id": md5(job['companyName'].encode(encoding="UTF-8")).hexdigest(),
|
|
|
+ "id": md5(job['companyName'].encode(encoding="UTF-8")).hexdigest(),
|
|
|
+ "@type": "相关机构",
|
|
|
+ "@contentType": "struct",
|
|
|
+ "@markdel": "0",
|
|
|
+ "name": [{"@value": job['companyName']}]
|
|
|
+ })
|
|
|
+ post_json({
|
|
|
+ "@id": md5(job['id'].encode(encoding="UTF-8")).hexdigest(),
|
|
|
+ "id": job['id'],
|
|
|
+ "@type": "工作经历demo",
|
|
|
+ "name": job['companyName'] + job['industry'] + job['jobName'] + job['jobDesc'],
|
|
|
+ "@markdel": "0",
|
|
|
+ "@contentType": "struct",
|
|
|
+ "时间": [{"@value": job['startTime']+job['endTime']}],
|
|
|
+ "公司": [{"@value": job['companyName']}],
|
|
|
+ "行业": [{"@value": job['industry']}],
|
|
|
+ "职位": [{"@value": job['jobName']}],
|
|
|
+ "工作内容": [{"@value": job['jobDesc']}]
|
|
|
+ })
|
|
|
+ edu_list = []
|
|
|
+ for edu in xdpost["hisEdu"]:
|
|
|
+ if (not high_edu.get("schoolName")) or (high_edu['degree'] < edu['degree']):
|
|
|
+ high_edu['schoolName'] = edu['schoolName']
|
|
|
+ high_edu['major'] = edu['major']
|
|
|
+ high_edu['degree'] = edu['degree']
|
|
|
+ org_list.append(edu['schoolName'])
|
|
|
+ edu_list.append(edu['startTime'] + edu['schoolName'] + edu['major'] + eduback_dict[edu['degree']])
|
|
|
+ post_json({
|
|
|
+ "@id": md5(edu['schoolName'].encode(encoding="UTF-8")).hexdigest(),
|
|
|
+ "id": md5(edu['schoolName'].encode(encoding="UTF-8")).hexdigest(),
|
|
|
+ "@type": "相关机构",
|
|
|
+ "@contentType": "struct",
|
|
|
+ "@markdel": "0",
|
|
|
+ "name": [{"@value": edu['schoolName']}]
|
|
|
+ })
|
|
|
+ post_json({
|
|
|
+ "@id": md5(edu['id'].encode(encoding="UTF-8")).hexdigest(),
|
|
|
+ "id": edu['id'],
|
|
|
+ "@type": "教育经历demo",
|
|
|
+ "name": edu['startTime'] + edu['schoolName'] + edu['major'] + eduback_dict[edu['degree']],
|
|
|
+ "@markdel": "0",
|
|
|
+ "@contentType": "struct",
|
|
|
+ "时间": [{"@value": edu['startTime']+edu['endTime']}],
|
|
|
+ "学校": [{"@value": edu['schoolName']}],
|
|
|
+ "专业": [{"@value": edu['major']}],
|
|
|
+ "学历": [{"@value": edu['degree']}]
|
|
|
+ })
|
|
|
+ pro_list = []
|
|
|
+ for pro in xdpost["hisProject"]:
|
|
|
+ pro_list.append(pro['companyName'] + pro['projectName'] + pro['projectDesc'] + pro['projectDuty'])
|
|
|
+ post_json({
|
|
|
+ "@id": md5(pro['id'].encode(encoding="UTF-8")).hexdigest(),
|
|
|
+ "id": pro['id'],
|
|
|
+ "@type": "项目经历demo",
|
|
|
+ "name": pro['companyName'] + pro['projectName'] + pro['projectDesc'] + pro['projectDuty'],
|
|
|
+ "@markdel": "0",
|
|
|
+ "@contentType": "struct",
|
|
|
+ "时间": [{"@value": pro['startTime']+pro['endTime']}],
|
|
|
+ "公司": [{"@value": pro['companyName']}],
|
|
|
+ "项目": [{"@value": pro['projectName']}],
|
|
|
+ "职位": [{"@value": pro['projectDuty']}],
|
|
|
+ "成果": [{"@value": pro['projectDesc']}]
|
|
|
+ })
|
|
|
+ tra_list = []
|
|
|
+ json_obj = {
|
|
|
+ "@id": md5(xdpost['tId'].encode(encoding='UTF-8')).hexdigest(),
|
|
|
+ "id": xdpost['tId'],
|
|
|
+ "@type": "人才特征demo",
|
|
|
+ "name": xdpost['name'],
|
|
|
+ "@markdel": '0',
|
|
|
+ "@contentType": "struct",
|
|
|
+ "姓名": [{"@value": xdpost['name']}],
|
|
|
+ "年龄": [{"@value": xdpost['age']}],
|
|
|
+ "性别": [{"@value": '男' if xdpost['gender'] == "0" else '女'}],
|
|
|
+ "出生年月": [{"@value": xdpost['birthTime']}],
|
|
|
+ "手机号码": [{"@value": xdpost['mobile']}],
|
|
|
+ "电子邮箱": [{"@value": xdpost['email']}],
|
|
|
+ "政治面貌": [{"@value": xdpost['politics']}],
|
|
|
+ "参加工作时间": [{"@value": xdpost['workBeginTime']}],
|
|
|
+ "当前职位": [{"@value": xdpost['currentJob']}],
|
|
|
+ "意向职位": [{"@value": xdpost['intentJob']}],
|
|
|
+ "当前年薪": [{"@value": xdpost['currentSalaryYearly']}],
|
|
|
+ "当前所在城市": [{"@value": xdpost['livingCityName']}],
|
|
|
+ "意向城市": [{"@value": xdpost['intentCityName']}],
|
|
|
+ "意向年薪": [{"@value": xdpost['intentSalaryYearlyMax']}],
|
|
|
+
|
|
|
+ "相关机构": org_list,
|
|
|
+ "教育经历": edu_list,
|
|
|
+ "工作经历": job_list,
|
|
|
+ "项目经历": pro_list,
|
|
|
+ "培训和海外经历": tra_list,
|
|
|
+ "当前最高学历": [{"@value": eduback_dict[high_edu['degree']]}],
|
|
|
+ "最高学历学校": [{"@value": high_edu['schoolName']}],
|
|
|
+ "当前最高学历专业": [{"@value": high_edu['major']}],
|
|
|
+ "语言能力": [{"@value": val['lanName']} for val in xdpost['language']],
|
|
|
+ "技术职称": [{"@value": val['name']} for val in xdpost['skills']],
|
|
|
+ "研究领域": [{"@value": val['researchName']} for val in xdpost['researchList']],
|
|
|
+ "研究领域分类": [{"@value": val['researchName']} for val in xdpost['researchList']],
|
|
|
+
|
|
|
+ "婚姻状况": [{"@value": None}],
|
|
|
+ "特长爱好": [{"@value": None}],
|
|
|
+ "人才标签": [{"@value": None}],
|
|
|
+ "人才特点": [{"@value": None}],
|
|
|
+ "当前行业": [{"@value": None}],
|
|
|
+ "专业证书": [{"@value": None}],
|
|
|
+ "入选人才": [{"@value": None}],
|
|
|
+ "知识产权": [{"@value": None}],
|
|
|
+ "获得荣誉及证明": [{"@value": None}],
|
|
|
+ "备注信息": [{"@value": None}],
|
|
|
+ "对报名岗位认识及工作设想": [{"@value": None}],
|
|
|
+ "自我评价及主要工作业绩": [{"@value": None}],
|
|
|
+ "当前公司": [{"@value": None}],
|
|
|
+ "毕业院校分类": [{"@value": None}],
|
|
|
+ "工作年限": [{"@value": None}],
|
|
|
+ "专业方向大类": [{"@value": None}],
|
|
|
+ "报名岗位": [{"@value": None}],
|
|
|
+ }
|
|
|
+ return {"errno": 0, "msg": "Success"}
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ uvicorn.run(app=app, host="0.0.0.0", port=8400)
|