rocketmq.py 7.2 KB

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