diff --git a/app/assets/images/impressions/agencement4.jpg b/app/assets/images/impressions/agencement4.jpg deleted file mode 100644 index 6be7c99..0000000 Binary files a/app/assets/images/impressions/agencement4.jpg and /dev/null differ diff --git a/app/assets/images/imprimante/lampdeath.jpg b/app/assets/images/impressions/lampdeath.jpg similarity index 100% rename from app/assets/images/imprimante/lampdeath.jpg rename to app/assets/images/impressions/lampdeath.jpg diff --git a/app/components/ChatBot.js b/app/components/ChatBot.js new file mode 100644 index 0000000..34acfea --- /dev/null +++ b/app/components/ChatBot.js @@ -0,0 +1,27 @@ +import { useState } from "react"; +import { askAI } from "../utils/askAI"; + +export default function ChatBot() { + const [question, setQuestion] = useState(""); + const [response, setResponse] = useState(""); + + const handleAsk = async () => { + if (!question) return; + const aiResponse = await askAI(question); + setResponse(aiResponse); + }; + + return ( +
+

Chat avec l'IA

+ setQuestion(e.target.value)} + /> + + {response &&

Réponse : {response}

} +
+ ); +} diff --git a/app/components/ModalGlossaire.tsx b/app/components/ModalGlossaire.tsx index 3342731..28cda5e 100644 --- a/app/components/ModalGlossaire.tsx +++ b/app/components/ModalGlossaire.tsx @@ -1,15 +1,16 @@ import { useEffect } from "react"; -import { createPortal } from "react-dom"; // Insère la modale dans -import { getApiUrl } from "../utils/getApiUrl"; // ✅ Import de l'URL dynamique -import CarouselCompetences from "./CarouselCompetences"; // Importation du composant CarouselCompetences +import { createPortal } from "react-dom"; +import CarouselCompetences from "./CarouselCompetences"; +import { getApiUrl } from "../utils/getApiUrl"; -// ✅ Définition des propriétés du composant ModalGlossaire interface ImageData { url: string; - formats?: { - large?: { url: string }; - }; name?: string; + formats?: { + large?: { + url: string; + }; + }; } interface GlossaireMot { @@ -46,26 +47,31 @@ export default function ModalGlossaire({ mot, onClose }: ModalGlossaireProps) { return createPortal(
-
+
{/* Bouton de fermeture */} - - - {/* Titre */} -

{mot.mot_clef}

- {/* Description */} -

{mot.description}

+ {/* Conteneur Flexbox pour la description et le carrousel */} +
+ {/* Description */} +
+

{mot.mot_clef}

+

{mot.description}

+
- {/* Carrousel d'images si disponible */} - {images.length > 0 ? ( - - ) : ( -

Aucune image disponible.

- )} + {/* Carrousel d'images si disponible */} +
+ {images.length > 0 ? ( + + ) : ( +

Aucune image disponible.

+ )} +
+
, document.body ); -} +} \ No newline at end of file diff --git a/app/contact/page.js b/app/contact/page.js index b6ec507..3ad7732 100644 --- a/app/contact/page.js +++ b/app/contact/page.js @@ -14,28 +14,21 @@ export default function ContactPage() { {/* Texte d'introduction */} -

+

Vous pouvez me contacter via ce formulaire ou sur mes réseaux sociaux.

- {/* Liens vers les réseaux sociaux mis à jour */} -
- - LinkedIn - - - Facebook - - - Email - + {/* Informations de contact mises à jour */} +
+

+ LinkedIn: Fernand Gras-Calvet +

+

+ Facebook: Fernand Gras-Calvet +

+

+ Email: grascalvet.fernand@gmail.com +

{/* Formulaire de contact amélioré */} @@ -44,4 +37,4 @@ export default function ContactPage() {
); -} +} \ No newline at end of file diff --git a/app/utils/askAI.js b/app/utils/askAI.js new file mode 100644 index 0000000..e69de29 diff --git a/llm-api/__pycache__/api.cpython-313.pyc b/llm-api/__pycache__/api.cpython-313.pyc new file mode 100644 index 0000000..45388e9 Binary files /dev/null and b/llm-api/__pycache__/api.cpython-313.pyc differ diff --git a/llm-api/api.py b/llm-api/api.py new file mode 100644 index 0000000..cdede33 --- /dev/null +++ b/llm-api/api.py @@ -0,0 +1,16 @@ +from fastapi import FastAPI +import requests + +app = FastAPI() + +OLLAMA_API_URL = "http://localhost:11434/api/generate" + +@app.get("/ask") +async def ask_question(q: str): + data = { + "model": "mistral", + "prompt": q, + "stream": False + } + response = requests.post(OLLAMA_API_URL, json=data) + return response.json() diff --git a/llm-api/web.config b/llm-api/web.config new file mode 100644 index 0000000..28a6eed --- /dev/null +++ b/llm-api/web.config @@ -0,0 +1,13 @@ + + + + + + + + + + + + +