Update main.py
Browse files
main.py
CHANGED
@@ -478,8 +478,7 @@ async def construction_NCS(competenceList, chatProfile):
|
|
478 |
emploisST = context.to_string(index = False)
|
479 |
if chatProfile == 'ROMESKILLS':
|
480 |
romeListArray = cl.user_session.get("codeRomeArray")
|
481 |
-
|
482 |
-
print(stringSecteur)
|
483 |
ficheClesMetier = await document_chiffres_cles_emplois("https://dataemploi.francetravail.fr/metier/chiffres-cles/NAT/FR/", romeListArray)
|
484 |
contentChatBot = str(emploisST).replace('[','').replace(']','').replace('{','').replace('}','') + ficheClesMetier
|
485 |
finals_df = context[['intitule','typeContratLibelle','experienceLibelle','competences','description','qualitesProfessionnelles','salaire','lieuTravail','formations']].copy()
|
@@ -495,6 +494,13 @@ async def construction_NCS(competenceList, chatProfile):
|
|
495 |
)
|
496 |
await cl.Message(author="Datapcc : 🌐🌐🌐",content="👨💼 Source France Travail : " + listEmplois_name, elements=text_elements).send()
|
497 |
await cl.sleep(1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
498 |
listClesMetier_name = f"Chiffres clés des emplois"
|
499 |
text_ClesMetier = []
|
500 |
text_ClesMetier.append(
|
@@ -746,11 +752,45 @@ async def API_France_Travail(romeListArray):
|
|
746 |
@cl.step(type="tool")
|
747 |
async def creation_liste_entreprises(arrayOfsecteur):
|
748 |
docsearch = await connexion_vector_database()
|
749 |
-
for
|
750 |
-
retrieve_comp = docsearch.similarity_search(arrayOfsecteur[
|
751 |
codeSecteur = int(retrieve_comp[0].metadata['codefinal'])
|
752 |
-
|
753 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
754 |
|
755 |
@cl.step(type="tool")
|
756 |
async def creation_liste_code_Rome(competence, categorie):
|
@@ -863,6 +903,17 @@ async def creation_liste_skills_Esco(competence, categorie):
|
|
863 |
await cl.Message(author="Datapcc : 🌐🌐🌐",content="Votre saisie est erronée. Nous continuons l'action avec les métiers sélectionnés automatiquement pour vous : " + codeRomeString).send()
|
864 |
cl.user_session.set("codeRomeArray", arrayCodeRome)
|
865 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
866 |
@cl.step(type="tool")
|
867 |
async def connexion_France_Travail():
|
868 |
client = Api(client_id=os.environ['POLE_EMPLOI_CLIENT_ID'],
|
|
|
478 |
emploisST = context.to_string(index = False)
|
479 |
if chatProfile == 'ROMESKILLS':
|
480 |
romeListArray = cl.user_session.get("codeRomeArray")
|
481 |
+
stringLsitOfEntreprise = await creation_liste_entreprises(arrayOfSecteur(romeListArray))
|
|
|
482 |
ficheClesMetier = await document_chiffres_cles_emplois("https://dataemploi.francetravail.fr/metier/chiffres-cles/NAT/FR/", romeListArray)
|
483 |
contentChatBot = str(emploisST).replace('[','').replace(']','').replace('{','').replace('}','') + ficheClesMetier
|
484 |
finals_df = context[['intitule','typeContratLibelle','experienceLibelle','competences','description','qualitesProfessionnelles','salaire','lieuTravail','formations']].copy()
|
|
|
494 |
)
|
495 |
await cl.Message(author="Datapcc : 🌐🌐🌐",content="👨💼 Source France Travail : " + listEmplois_name, elements=text_elements).send()
|
496 |
await cl.sleep(1)
|
497 |
+
listEntreprise_name = f"Liste des entreprises"
|
498 |
+
entreprise_elements = []
|
499 |
+
entreprise_elements.append(
|
500 |
+
cl.Text(content="Question : " + competenceList + "\n\nRéponse :\n" + stringLsitOfEntreprise, name=listEntreprise_name)
|
501 |
+
)
|
502 |
+
await cl.Message(author="Datapcc : 🌐🌐🌐",content="🏭 Source Registre National des Entreprises : " + listEntreprise_name, elements=entreprise_elements).send()
|
503 |
+
await cl.sleep(1)
|
504 |
listClesMetier_name = f"Chiffres clés des emplois"
|
505 |
text_ClesMetier = []
|
506 |
text_ClesMetier.append(
|
|
|
752 |
@cl.step(type="tool")
|
753 |
async def creation_liste_entreprises(arrayOfsecteur):
|
754 |
docsearch = await connexion_vector_database()
|
755 |
+
for j in range(0, len(arrayOfsecteur)):
|
756 |
+
retrieve_comp = docsearch.similarity_search(arrayOfsecteur[j][0], k=1, filter={"categorie": {"$eq": "inpiSecteur"}})
|
757 |
codeSecteur = int(retrieve_comp[0].metadata['codefinal'])
|
758 |
+
if len(codeSecteur) == 7:
|
759 |
+
codeSecteurSTR = "0" + str(codeSecteur)
|
760 |
+
else:
|
761 |
+
codeSecteurSTR = str(codeSecteur)
|
762 |
+
token = await connexion_registre_national_entreprises()
|
763 |
+
url = f"https://registre-national-entreprises.inpi.fr/api/companies?page=1&pageSize=500&codeCategory={codeSecteurSTR}"
|
764 |
+
print(url)
|
765 |
+
headers = {"Authorization": f"Bearer {token}"}
|
766 |
+
response = requests.get(url, headers=headers)
|
767 |
+
if response.status_code == 200:
|
768 |
+
print('OK')
|
769 |
+
documents = response.json()
|
770 |
+
df = pd.DataFrame(documents)
|
771 |
+
ficheEntreprise = ''
|
772 |
+
for i in range (0, len(df)):
|
773 |
+
if str(df['formality'][i]['content']).find('cessation') == -1 and str(df['formality'][i]['content']).find('personneMorale') != -1:
|
774 |
+
if str(df['formality'][i]['content']['personneMorale']).find('adresseEntreprise') != -1:
|
775 |
+
ficheEntreprise += "\n🏭 Dénomination : " + str(df['formality'][i]['content']['personneMorale']['identite']['entreprise']['denomination']) + "; Code SIREN : " + str(df['formality'][i]['content']['personneMorale']['identite']['entreprise']['siren']) + "\n\tAdresse : "
|
776 |
+
if str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']).find("'numVoie'") != -1:
|
777 |
+
ficheEntreprise += "n° " + str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']['numVoie'])
|
778 |
+
if str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']).find("'typeVoie'") != -1:
|
779 |
+
ficheEntreprise += " " + str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']['typeVoie'])
|
780 |
+
if str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']).find("'voie'") != -1:
|
781 |
+
ficheEntreprise += " " + str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']['voie'])
|
782 |
+
if str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']).find("'complementLocalisation'") != -1:
|
783 |
+
ficheEntreprise += ", " + str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']['complementLocalisation'])+ ","
|
784 |
+
if str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']).find("'codePostal'") != -1:
|
785 |
+
ficheEntreprise += " " + str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']['codePostal'])
|
786 |
+
if str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']).find("'commune'") != -1:
|
787 |
+
ficheEntreprise += " " + str(df['formality'][i]['content']['personneMorale']['adresseEntreprise']['adresse']['commune'])
|
788 |
+
if str(df['formality'][i]['content']['personneMorale']).find("autresEtablissements") != -1:
|
789 |
+
ficheEntreprise += "\n\tActivités : " + str(df['formality'][101]['content']['personneMorale']['autresEtablissements'][0]['activites'][0]['descriptionDetaillee']) + "\n\tCode APE : " + str(df['formality'][101]['content']['personneMorale']['autresEtablissements'][0]['activites'][0]['codeApe'])
|
790 |
+
else:
|
791 |
+
ficheEntreprise += "Il n'y a pas d'entreprises pour le secteur sélectionné : " + arrayOfsecteur[i][0]
|
792 |
+
return ficheEntreprise
|
793 |
+
|
794 |
|
795 |
@cl.step(type="tool")
|
796 |
async def creation_liste_code_Rome(competence, categorie):
|
|
|
903 |
await cl.Message(author="Datapcc : 🌐🌐🌐",content="Votre saisie est erronée. Nous continuons l'action avec les métiers sélectionnés automatiquement pour vous : " + codeRomeString).send()
|
904 |
cl.user_session.set("codeRomeArray", arrayCodeRome)
|
905 |
|
906 |
+
@cl.step(type="tool")
|
907 |
+
async def connexion_registre_national_entreprises():
|
908 |
+
url = "https://registre-national-entreprises.inpi.fr/api/sso/login"
|
909 |
+
headers = {"Content-Type": "application/json"}
|
910 |
+
data = {"username": os.environ['RNE_CLIENT_ID'], "password": os.environ['RNE_CLIENT_SECRET']}
|
911 |
+
response = requests.post(url, json=data, headers=headers)
|
912 |
+
if response.status_code == 200:
|
913 |
+
return response.json()["token"]
|
914 |
+
else:
|
915 |
+
raise Exception(f"Échec de l'authentification. Code d'erreur : {response.status_code}")
|
916 |
+
|
917 |
@cl.step(type="tool")
|
918 |
async def connexion_France_Travail():
|
919 |
client = Api(client_id=os.environ['POLE_EMPLOI_CLIENT_ID'],
|