Update main.py
Browse files
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 = []
|