datacipen commited on
Commit
6ceb244
1 Parent(s): 4bcf377

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +75 -2
main.py CHANGED
@@ -67,6 +67,11 @@ def process_file(file: AskFileResponse):
67
  docs = text_splitter.split_documents(documents)
68
  return docs
69
 
 
 
 
 
 
70
  def modele(document):
71
  match document:
72
  case "Note de composante sectorielle":
@@ -900,11 +905,12 @@ async def contexte(romeListArray):
900
  emplois.append("\nEmploi : " + results[i]['intitule'] + "; Contrat : " + results[i]['typeContrat'] + "; Compétences professionnelles : " + arrayToString(results[i]['competences']) if listToString(results[i]).find("'competences':")!=-1 else "; " + "Salaire : " + listToString(results[i]['salaire']) + "; Qualification : " + results[i]['qualificationLibelle'] if listToString(results[i]).find("'qualificationLibelle':")!=-1 else "; " + "; Localisation : " + listToString(results[i]['lieuTravail']) + "; Entreprise : " + listToString(results[i]['entreprise']['nom']) if listToString(results[i]['entreprise']).find("'nom':")!=-1 else "; ")
901
  emplois_list = ''.join(emplois)
902
  context = emplois_list.replace('[','').replace(']','').replace('{','').replace('}','')
903
- ficheMetier = await Fiche_metier("https://www.soi-tc.fr/assets/fiches_pe/FEM_", romeListArray[0])
 
904
  ficheMetiersCompetencesSavoirs = await Fiche_metier_competences_savoirs(romeListArray[0])
905
  #metierSecteurContexteTravail = await Metier_secteur_contexte_travail(romeListArray[0])
906
  cl.user_session.set("EmploiST", context)
907
- return "Fiche métier Compétences Savoirs :\n" + ficheMetiersCompetencesSavoirs + "\nListe des emplois issus de France Travail :\n" + context
908
  #return "Fiche métier Compétences Savoirs :\n" + ficheMetiersCompetencesSavoirs + "\nMetier secteur contexte au travail :\n" + metierSecteurContexteTravail + "\nListe des emplois issus de France Travail :\n" + context
909
  #return "Liste des emplois issus de France Travail :\n" + context
910
  #return "\nMetier secteur contexte au travail :\n" + metierSecteurContexteTravail + "\nListe des emplois issus de France Travail :\n" + context
@@ -984,6 +990,73 @@ async def Fiche_metier_competences_savoirs(codes):
984
  datas = data.decode("utf-8")
985
  dataset += str(datas.replace('"','').replace('{','').replace('}','').replace('[','').replace(']','').replace('code','').replace('libelle','').replace(',:',', ').replace('::',':'))
986
  return dataset
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
987
  @cl.step(type="tool")
988
  async def Fiche_metier(url, codes):
989
  docs = []
 
67
  docs = text_splitter.split_documents(documents)
68
  return docs
69
 
70
+ def removeTags(all):
71
+ for data in all(['style', 'script']):
72
+ data.decompose()
73
+ return ' '.join(all.stripped_strings)
74
+
75
  def modele(document):
76
  match document:
77
  case "Note de composante sectorielle":
 
905
  emplois.append("\nEmploi : " + results[i]['intitule'] + "; Contrat : " + results[i]['typeContrat'] + "; Compétences professionnelles : " + arrayToString(results[i]['competences']) if listToString(results[i]).find("'competences':")!=-1 else "; " + "Salaire : " + listToString(results[i]['salaire']) + "; Qualification : " + results[i]['qualificationLibelle'] if listToString(results[i]).find("'qualificationLibelle':")!=-1 else "; " + "; Localisation : " + listToString(results[i]['lieuTravail']) + "; Entreprise : " + listToString(results[i]['entreprise']['nom']) if listToString(results[i]['entreprise']).find("'nom':")!=-1 else "; ")
906
  emplois_list = ''.join(emplois)
907
  context = emplois_list.replace('[','').replace(']','').replace('{','').replace('}','')
908
+ #ficheMetier = await Fiche_metier("https://www.soi-tc.fr/assets/fiches_pe/FEM_", romeListArray[0])
909
+ ficheMetier = await getTxtFromHTMLMetier("https://candidat.francetravail.fr/metierscope/fiche-metier/", romeListArray[0]) + await getTxtFromHTMLStatsMetier("https://dataemploi.pole-emploi.fr/metier/chiffres-cles/NAT/FR/", romeListArray[0])
910
  ficheMetiersCompetencesSavoirs = await Fiche_metier_competences_savoirs(romeListArray[0])
911
  #metierSecteurContexteTravail = await Metier_secteur_contexte_travail(romeListArray[0])
912
  cl.user_session.set("EmploiST", context)
913
+ return ficheMetier + "Fiche métier Compétences Savoirs :\n" + ficheMetiersCompetencesSavoirs + "\nListe des emplois issus de France Travail :\n" + context
914
  #return "Fiche métier Compétences Savoirs :\n" + ficheMetiersCompetencesSavoirs + "\nMetier secteur contexte au travail :\n" + metierSecteurContexteTravail + "\nListe des emplois issus de France Travail :\n" + context
915
  #return "Liste des emplois issus de France Travail :\n" + context
916
  #return "\nMetier secteur contexte au travail :\n" + metierSecteurContexteTravail + "\nListe des emplois issus de France Travail :\n" + context
 
990
  datas = data.decode("utf-8")
991
  dataset += str(datas.replace('"','').replace('{','').replace('}','').replace('[','').replace(']','').replace('code','').replace('libelle','').replace(',:',', ').replace('::',':'))
992
  return dataset
993
+
994
+ @cl.step(type="tool")
995
+ def getTxtFromHTMLMetier(url, codes):
996
+ if codes.find(',') != -1:
997
+ all = ""
998
+ codeArray = codes.split(',')
999
+ for i in range(0,len(codeArray)):
1000
+ response = requests.get(url + codeArray[i])
1001
+ soup = BeautifulSoup(response.text, "lxml")
1002
+ alljobs = soup.select('div.fm-other-names > ul > li')
1003
+ allKindjobs = ""
1004
+ for i in range(0,len(alljobs)):
1005
+ allKindjobs = allKindjobs + removeTags(alljobs[i]) + ", "
1006
+ allmissions = soup.select('div.fm-presentation-text')
1007
+ allcompetences = soup.select('div#part2')
1008
+ allcontextes = soup.select('div#part3')
1009
+ all = all + "Fiche Métier " + codeArray[i] + ":\nTous les métiers possibles :" + allKindjobs + "\nLes missions principales : " + removeTags(allmissions[0]) + ". Les compétences recherchées : " + removeTags(allcompetences[0]) + ". Les contextes au travail : " + removeTags(allcontextes[0]) + "."
1010
+ else:
1011
+ response = requests.get(url + codes)
1012
+ soup = BeautifulSoup(response.text, "lxml")
1013
+ alljobs = soup.select('div.fm-other-names > ul > li')
1014
+ allKindjobs = ""
1015
+ for i in range(0,len(alljobs)):
1016
+ allKindjobs = allKindjobs + removeTags(alljobs[i]) + ", "
1017
+ allmissions = soup.select('div.fm-presentation-text')
1018
+ allcompetences = soup.select('div#part2')
1019
+ allcontextes = soup.select('div#part3')
1020
+ all = "Fiche Métier " + codes + ":\nTous les métiers possibles :" + allKindjobs + "\nLes missions principales : " + removeTags(allmissions[0]) + ". Les compétences recherchées : " + removeTags(allcompetences[0]) + ". Les contextes au travail : " + removeTags(allcontextes[0]) + "."
1021
+ return all
1022
+
1023
+ @cl.step(type="tool")
1024
+ def getTxtFromHTMLStatsMetier(url, codes):
1025
+ if codes.find(',') != -1:
1026
+ all = ""
1027
+ codeArray = codes.split(',')
1028
+ for i in range(0,len(codeArray)):
1029
+ response = requests.get(url + codeArray[i])
1030
+ soup = BeautifulSoup(response.text, "lxml")
1031
+ alltitre = soup.select('h1#titreMetier')
1032
+ allembauches = soup.select('div.jobs_item-container-flex')
1033
+ allsalaires = soup.select('div.key-number_block.shadow.inset')
1034
+ allsalairesMedian = soup.select('tbody.sectorTable__body')
1035
+ allDiff = soup.select('div.dynamism_canvas-wrapper > p.sr-only')
1036
+ allDiffOrigin = soup.select('div.tabs-main-data_persp-col2')
1037
+ allContrat = soup.find_all("div", class_="hiring-contract_legende_item ng-star-inserted")
1038
+ allTypeContrat = ""
1039
+ for i in range(0,len(allContrat)):
1040
+ allTypeContrat = allTypeContrat + removeTags(allContrat[i]) + ", "
1041
+ allEntreprise = soup.find_all("div", class_="horizontal-graph_patterns")
1042
+ all = all + "\n\nChiffres-clés Métier " + removeTags(alltitre[0]) + ":\nDemandeurs d'emploi et Offres d'emploi : " + removeTags(allembauches[0]) + ". Salaires proposés dans les offres : " + removeTags(allsalaires[0]) + ". Salaires médians constatés : " + removeTags(allsalairesMedian[0]) + ". Difficultés de recrutement pour les entreprises : " + removeTags(allDiff[0]) + ". Origine des difficultés : " + removeTags(allDiffOrigin[0]) + ". Répartition des embauches par type de contrat : " + allTypeContrat + ". Répartition des embauches par taille d'entreprise : " + removeTags(allEntreprise[0]) + "."
1043
+ else:
1044
+ response = requests.get(url + codes)
1045
+ soup = BeautifulSoup(response.text, "lxml")
1046
+ alltitre = soup.select('h1#titreMetier')
1047
+ allembauches = soup.select('div.jobs_item-container-flex')
1048
+ allsalaires = soup.select('div.key-number_block.shadow.inset')
1049
+ allsalairesMedian = soup.select('tbody.sectorTable__body')
1050
+ allDiff = soup.select('div.dynamism_canvas-wrapper > p.sr-only')
1051
+ allDiffOrigin = soup.select('div.tabs-main-data_persp-col2')
1052
+ allContrat = soup.find_all("div", class_="hiring-contract_legende_item ng-star-inserted")
1053
+ allTypeContrat = ""
1054
+ for i in range(0,len(allContrat)):
1055
+ allTypeContrat = allTypeContrat + removeTags(allContrat[i]) + ", "
1056
+ allEntreprise = soup.find_all("div", class_="horizontal-graph_patterns")
1057
+ all = "\n\nChiffres-clés Métier " + removeTags(alltitre[0]) + ":\nDemandeurs d'emploi et Offres d'emploi : " + removeTags(allembauches[0]) + ". Salaires proposés dans les offres : " + removeTags(allsalaires[0]) + ". Salaires médians constatés : " + removeTags(allsalairesMedian[0]) + ". Difficultés de recrutement pour les entreprises : " + removeTags(allDiff[0]) + ". Origine des difficultés : " + removeTags(allDiffOrigin[0]) + ". Répartition des embauches par type de contrat : " + allTypeContrat + ". Répartition des embauches par taille d'entreprise : " + removeTags(allEntreprise[0]) + "."
1058
+ return all
1059
+
1060
  @cl.step(type="tool")
1061
  async def Fiche_metier(url, codes):
1062
  docs = []