123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- from flask import Blueprint, request, jsonify,current_app
- from configs.result import success
- from functions.label_number import job_label, enterprise_label, seeker_label
- from functions.operate_graph import operate_job, operate_enterprise, operate_seeker
- import logging
- from functions.similarity_judge import similar_job, similar_seeker, draw_graph, home_job
- from functions.solve_graph import llm_client
- logger = logging.getLogger(__name__)
- rocket = Blueprint('rocket', __name__)
- @rocket.route('/receive/data', methods=['POST'])
- def receive_data():
- try:
- receiver = request.get_json()
- operate = receiver.get('operate') # sync_all, add, update, delete
- type = receiver.get('type') # job, enterprise, person,person_all
- dataList = receiver.get('dataList', [])
- if type == 'job':
- result = operate_job(operate, dataList)
- elif type == 'enterprise':
- result = operate_enterprise(operate, dataList)
- elif type == 'person':
- result = operate_seeker(operate, dataList)
- else:
- current_app.logger.error('receive_data Invalid type')
- return jsonify(success(True, "success")) # 返回成功响应
- if result is not None:
- return jsonify(success(True, "success"))
- else:
- current_app.logger.error('operate function returned None')
- return jsonify(success(True, "success"))
- except Exception as e:
- current_app.logger.error(f'receive_data error: {e}')
- return jsonify(success(True, "success"))
- # 1.人才地图
- # 招聘者--->人
- # 推荐类型
- # 人--->职位
- # 人--->企业
- # 找人:通过标签去找人
- @rocket.route('/query/graph',methods=['POST'])
- def query_graph():
- try:
- receiver = request.get_json()
- label = receiver.get('label', []) # 多个标签
- description = receiver.get('content', '') # 一段描述内容
- type = receiver.get('type', '') # 1.找人 对应类型 person
- if description:
- label_list = llm_client(description)
- if isinstance(label_list, list) and label_list:
- if not label:
- label = []
- label += label_list
- if type == 'person':
- id_list = similar_seeker(label)
- else:
- current_app.logger.error('query_graph Invalid type')
- id_list = []
- return jsonify(success(id_list, "success"))
- except Exception as e:
- current_app.logger.error(f'query_graph error: {e}')
- return jsonify(success([], "success"))
- # 职位详情:职位id--标签--推荐相似职位
- @rocket.route('/match/job',methods=['POST'])
- def match_job():
- try:
- receiver = request.get_json()
- page = int(receiver.get('current', 1))
- page_size = int(receiver.get('size', 10))
- uniqueid = receiver.get('id', []) #职位对应的id
- type = receiver.get('type', '') # 查找对应的job
- draw_graph()
- # 起止范围
- start = (page - 1) * page_size
- end = page * page_size
- if type == 'job':
- id_list,total = similar_job(uniqueid,start,end)
- else:
- current_app.logger.error('match_job Invalid type')
- id_list,total = [],0
- return jsonify(success(id_list, "success"))
- except Exception as e:
- current_app.logger.error(f'match_job error: {e}')
- return jsonify(success([], "success"))
- # 首页未登录、人登录之后推荐的职位
- @rocket.route('/recommend/job',methods=['POST'])
- def recommend_job():
- try:
- receiver = request.get_json()
- page = int(receiver.get('current', 1))
- page_size = int(receiver.get('size', 10))
- uniqueid = receiver.get('userId', "") # 职位对应的id
- type = receiver.get('type', '') # 推荐对应的job
- # 起止范围
- start = (page-1) * page_size
- end = page * page_size
- draw_graph()
- if type == 'job':
- id_list,total = home_job(uniqueid,start,end)
- else:
- current_app.logger.error('match_job Invalid type')
- id_list,total = [],0
- return jsonify(success(id_list, "success"))
- except Exception as e:
- current_app.logger.error(f'recommend_job error: {e}')
- return jsonify(success([], "success"))
- # 找职位:通过标签找职位,推荐职位
- @rocket.route('/search/job',methods=['POST'])
- def search_job():
- try:
- receiver = request.get_json()
- uniqueid = receiver.get('id', []) #职位对应的id
- description = receiver.get('content', '') # 一段描述内容
- type = receiver.get('type', '') # 1.找人 job
- draw_graph()
- if type == 'job':
- id_list = similar_job(uniqueid,description)
- else:
- current_app.logger.error('query_graph Invalid type')
- id_list = []
- return jsonify(success(id_list, "success"))
- except Exception as e:
- current_app.logger.error(f'match_job error: {e}')
- return jsonify(success([], "success"))
- # 页面标签列表
- @rocket.route('/label/list',methods=['POST'])
- def label_list():
- try:
- receiver = request.get_json()
- page = int(receiver.get('current', 1)) # 当前页
- page_size = int(receiver.get('size', 10)) # 每页的数量
- type = receiver['type']
- # 计算跳过的记录的数量
- skip_count = (page - 1) * page_size
- if type == 'job':
- labels,total = job_label(skip_count,page_size)
- elif type == 'enterprise':
- labels,total = enterprise_label(skip_count,page_size)
- elif type == 'person':
- labels,total = seeker_label(skip_count,page_size)
- else:
- current_app.logger.error('label_list Invalid type')
- labels,total = [],0
- response_data = {'records': labels, 'total': total, 'size': page_size, 'current': page}
- return jsonify(success(response_data, "success"))
- except Exception as e:
- current_app.logger.error(f'label_list error: {e}')
- return jsonify(success(True, "success"))
|