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 = []
|