rocketmq.py 6.0 KB

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