diff --git a/backend/main.py b/backend/main.py index 68e3f15..b67d706 100644 --- a/backend/main.py +++ b/backend/main.py @@ -2,18 +2,14 @@ from fastapi import FastAPI, Depends, HTTPException, status, Request, Response from fastapi.responses import RedirectResponse, FileResponse from fastapi.staticfiles import StaticFiles from sqlalchemy.orm import Session +from typing import List import os # Importation de nos modules locaux from .database import engine, Base, get_db -from .models import User +from .models import User, Project, Message from .auth import get_password_hash, generate_totp_secret, get_totp_uri, verify_password, verify_totp, create_access_token, verify_token -from .schemas import AdminCreate, LoginRequest - -# MAJ BDD -from typing import List -from .schemas import AdminCreate, LoginRequest, ProjectCreate, ProjectResponse -from .models import User, Project +from .schemas import AdminCreate, LoginRequest, ProjectCreate, ProjectResponse, MessageCreate, MessageResponse # Création des tables dans la base de données Base.metadata.create_all(bind=engine) @@ -196,4 +192,27 @@ def delete_project(project_id: int, db: Session = Depends(get_db), current_user: db.delete(project) db.commit() - return {"message": "Projet supprimé"} \ No newline at end of file + return {"message": "Projet supprimé"} + +# --- GESTION DES MESSAGES --- + +@app.get("/api/projects/{project_id}/messages", response_model=List[MessageResponse]) +def get_messages(project_id: int, db: Session = Depends(get_db), current_user: User = Depends(get_current_user)): + """Récupère tous les messages d'un projet spécifique.""" + project = db.query(Project).filter(Project.id == project_id, Project.user_id == current_user.id).first() + if not project: + raise HTTPException(status_code=404, detail="Projet introuvable") + return db.query(Message).filter(Message.project_id == project_id).order_by(Message.created_at.asc()).all() + +@app.post("/api/projects/{project_id}/messages", response_model=MessageResponse) +def create_message(project_id: int, message: MessageCreate, db: Session = Depends(get_db), current_user: User = Depends(get_current_user)): + """Ajoute un message à un projet.""" + project = db.query(Project).filter(Project.id == project_id, Project.user_id == current_user.id).first() + if not project: + raise HTTPException(status_code=404, detail="Projet introuvable") + + new_message = Message(role=message.role, content=message.content, project_id=project_id) + db.add(new_message) + db.commit() + db.refresh(new_message) + return new_message \ No newline at end of file diff --git a/backend/schemas.py b/backend/schemas.py index 6c05cf6..7e34133 100644 --- a/backend/schemas.py +++ b/backend/schemas.py @@ -24,5 +24,21 @@ class ProjectResponse(ProjectBase): created_at: datetime is_pinned: bool + class Config: + from_attributes = True + + # --- NOUVEAU : Schémas pour les Messages --- +class MessageBase(BaseModel): + role: str + content: str + +class MessageCreate(MessageBase): + pass + +class MessageResponse(MessageBase): + id: int + created_at: datetime + project_id: int + class Config: from_attributes = True \ No newline at end of file diff --git a/frontend/dashboard.html b/frontend/dashboard.html index 415dd25..bb2bd02 100644 --- a/frontend/dashboard.html +++ b/frontend/dashboard.html @@ -8,9 +8,7 @@ @@ -26,9 +24,9 @@
-
+
@@ -53,14 +48,14 @@

Épinglés

@@ -70,67 +65,76 @@

Récents

    -
  • Aucun projet pour le moment.
  • -
  • +
  • Aucun projet.
  • +
  • {{ project.title }}
- -
-
-
- {{ username.charAt(0).toUpperCase() }} -
- {{ username }} -
- + +
+
{{ username.charAt(0).toUpperCase() }}
+ {{ username }}
+
- +
Logo AETHAS38
+
{{ activeProject.title }}
-
+ +
AETHAS38 Logo

Comment puis-je vous aider aujourd'hui ?

-

L'orchestrateur Multi-IA est prêt.

+

Sélectionnez ou créez un projet pour commencer.

+ +
+
Démarrez la conversation ci-dessous.
+ +
+
+ + + {{ msg.role === 'user' ? 'Vous' : 'AETHAS38' }} +
+
{{ msg.content }}
+
+
+ +
- + - +

AETHAS38 peut faire des erreurs. Vérifiez toujours les informations importantes.

@@ -138,7 +142,6 @@