rocketmq.py 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. from flask import Blueprint, request, jsonify,current_app
  2. from configs.result import success
  3. from functions.label_number import job_label, enterprise_label, seeker_label
  4. from functions.operate_graph import operate_job, operate_enterprise, operate_seeker
  5. import logging
  6. from functions.similarity_judge import similar_job, similar_seeker, draw_graph, home_job, home_person, draw_person_graph
  7. from functions.solve_graph import llm_client1
  8. from configs.connections import connect_graph
  9. logger = logging.getLogger(__name__)
  10. rocket = Blueprint('rocket', __name__)
  11. @rocket.route('/delete/data', methods=['POST'])
  12. def delete_data():
  13. try:
  14. receiver = request.get_json()
  15. type = receiver.get('type') # job, enterprise, person
  16. if type == 'job':
  17. connect_graph.run('match (n:job) detach delete n')
  18. connect_graph.run('match (n:jobLabel) detach delete n')
  19. elif type == 'enterprise':
  20. connect_graph.run('match (n:enterprise) detach delete n')
  21. connect_graph.run('match (n:enterpriseLabel) detach delete n')
  22. elif type == 'person':
  23. connect_graph.run('match (n:seeker) detach delete n')
  24. connect_graph.run('match (n:seekerLabel) detach delete n')
  25. else:
  26. current_app.logger.error('delete_data Invalid type')
  27. return jsonify(success(True, "success")) # 返回成功响应
  28. except Exception as e:
  29. current_app.logger.error(f'delete_data error: {e}')
  30. return jsonify(success(True, "success"))
  31. @rocket.route('/receive/data', methods=['POST'])
  32. def receive_data():
  33. try:
  34. receiver = request.get_json()
  35. operate = receiver.get('operate') # sync_all, add, update, delete
  36. type = receiver.get('type') # job, enterprise, person,person_all
  37. dataList = receiver.get('dataList', [])
  38. current_app.logger.info(receiver)
  39. if type == 'job':
  40. result = operate_job(operate, dataList)
  41. elif type == 'enterprise':
  42. result = operate_enterprise(operate, dataList)
  43. elif type == 'person':
  44. result = operate_seeker(operate, dataList)
  45. else:
  46. current_app.logger.error('receive_data Invalid type')
  47. return jsonify(success(True, "success")) # 返回成功响应
  48. if result is not None:
  49. return jsonify(success(True, "success"))
  50. else:
  51. current_app.logger.error('operate function returned None')
  52. return jsonify(success(True, "success"))
  53. except Exception as e:
  54. current_app.logger.error(f'receive_data error: {e}')
  55. return jsonify(success(True, "success"))
  56. # 1.人才地图
  57. # 招聘者--->人
  58. # 推荐类型
  59. # 人--->职位
  60. # 人--->企业
  61. # 找人:通过标签去找人
  62. @rocket.route('/query/graph',methods=['POST'])
  63. def query_graph():
  64. try:
  65. receiver = request.get_json()
  66. label = receiver.get('label', []) # 多个标签
  67. description = receiver.get('content', '') # 一段描述内容
  68. type = receiver.get('type', '') # 1.找人 对应类型 person
  69. if description:
  70. label_list = llm_client1(description)
  71. if isinstance(label_list, list) and label_list:
  72. if not label:
  73. label = []
  74. label += label_list
  75. if type == 'person':
  76. id_list = similar_seeker(label)
  77. else:
  78. current_app.logger.error('query_graph Invalid type')
  79. id_list = []
  80. return jsonify(success(id_list, "success"))
  81. except Exception as e:
  82. current_app.logger.error(f'query_graph error: {e}')
  83. return jsonify(success([], "success"))
  84. # 职位详情:职位id--标签--推荐相似职位
  85. @rocket.route('/match/job',methods=['POST'])
  86. def match_job():
  87. try:
  88. receiver = request.get_json()
  89. page = int(receiver.get('current', 1))
  90. page_size = int(receiver.get('size', 10))
  91. uniqueid = receiver.get('id', []) #职位对应的id
  92. type = receiver.get('type', '') # 查找对应的job
  93. draw_graph()
  94. # 起止范围
  95. start = (page - 1) * page_size
  96. end = page * page_size
  97. if type == 'job':
  98. id_list = similar_job(uniqueid,start,end)
  99. else:
  100. current_app.logger.error('match_job Invalid type')
  101. id_list = []
  102. return jsonify(success(id_list, "success"))
  103. except Exception as e:
  104. current_app.logger.error(f'match_job error: {e}')
  105. return jsonify(success([], "success"))
  106. # 人登录之后推荐的职位
  107. @rocket.route('/recommend/job',methods=['POST'])
  108. def recommend_job():
  109. try:
  110. receiver = request.get_json()
  111. page = int(receiver.get('current', 1))
  112. page_size = int(receiver.get('size', 10))
  113. uniqueid = receiver.get('userId', "") # 职位对应的id
  114. type = receiver.get('type', '') # 推荐对应的job
  115. # 起止范围
  116. start = (page-1) * page_size
  117. end = page * page_size
  118. draw_graph()
  119. if type == 'job':
  120. id_list = home_job(uniqueid,start,end)
  121. else:
  122. current_app.logger.error('recommend_job Invalid type')
  123. id_list = []
  124. return jsonify(success(id_list, "success"))
  125. except Exception as e:
  126. current_app.logger.error(f'recommend_job error: {e}')
  127. return jsonify(success([], "success"))
  128. # 人登录之后推荐的职位
  129. @rocket.route('/recommend/person',methods=['POST'])
  130. def recommend_person():
  131. try:
  132. receiver = request.get_json()
  133. page = int(receiver.get('current', 1))
  134. page_size = int(receiver.get('size', 10))
  135. uniqueid = receiver.get('id', "") # 职位对应的id
  136. type = receiver.get('type', '') # 推荐对应的person
  137. # 起止范围
  138. start = (page-1) * page_size
  139. end = page * page_size
  140. draw_person_graph()
  141. if type == 'person':
  142. id_list = home_person(uniqueid,start,end)
  143. else:
  144. current_app.logger.error('match_job Invalid type')
  145. id_list = []
  146. return jsonify(success(id_list, "success"))
  147. except Exception as e:
  148. current_app.logger.error(f'recommend_job error: {e}')
  149. return jsonify(success([], "success"))
  150. # 页面标签列表
  151. @rocket.route('/label/list',methods=['POST'])
  152. def label_list():
  153. try:
  154. receiver = request.get_json()
  155. page = int(receiver.get('current', 1)) # 当前页
  156. page_size = int(receiver.get('size', 10)) # 每页的数量
  157. type = receiver['type']
  158. # 计算跳过的记录的数量
  159. skip_count = (page - 1) * page_size
  160. if type == 'job':
  161. labels,total = job_label(skip_count,page_size)
  162. elif type == 'enterprise':
  163. labels,total = enterprise_label(skip_count,page_size)
  164. elif type == 'person':
  165. labels,total = seeker_label(skip_count,page_size)
  166. else:
  167. current_app.logger.error('label_list Invalid type')
  168. labels,total = [],0
  169. response_data = {'records': labels, 'total': total, 'size': page_size, 'current': page}
  170. return jsonify(success(response_data, "success"))
  171. except Exception as e:
  172. current_app.logger.error(f'label_list error: {e}')
  173. return jsonify(success(True, "success"))