Checkpoint: Correction des erreurs tRPC qui retournaient du HTML au lieu de JSON :

- Changement du champ 'nom' en 'titre' pour les questionnaires (backend et frontend)
- Suppression de la propriété 'complete' inexistante dans reponsesQuestionnaires
- Correction du type 'provider' dans la configuration email
- Gestion des valeurs null pour le champ 'fonction' des apprenants
- Résolution de l'erreur logsRappels.email après redémarrage du serveur
This commit is contained in:
Manus
2026-01-13 03:21:23 -05:00
parent 97aeacab29
commit bd9cb15f44
5 changed files with 133 additions and 20 deletions

View File

@@ -140,7 +140,7 @@ export default function AdminQuestionnaireAnalyse() {
<div className="container mx-auto py-8">
<div className="mb-6 flex justify-between items-start">
<div>
<h1 className="text-3xl font-bold">{questionnaire.nom}</h1>
<h1 className="text-3xl font-bold">{questionnaire.titre}</h1>
<p className="text-muted-foreground mt-1">Analyse des réponses</p>
</div>
<div className="flex gap-2">

View File

@@ -35,7 +35,7 @@ export default function AdminQuestionnaireEdit() {
const [, navigate] = useLocation();
const questionnaireId = params?.id === "nouveau" ? null : parseInt(params?.id || "0");
const [nom, setNom] = useState("");
const [titre, setTitre] = useState("");
const [type, setType] = useState<"satisfaction" | "evaluation_pre" | "evaluation_post">("satisfaction");
const [description, setDescription] = useState("");
const [actif, setActif] = useState(true);
@@ -101,7 +101,7 @@ export default function AdminQuestionnaireEdit() {
useEffect(() => {
if (questionnaire) {
setNom(questionnaire.nom);
setTitre(questionnaire.titre);
setType(questionnaire.type);
setDescription(questionnaire.description || "");
setActif(questionnaire.actif);
@@ -130,8 +130,8 @@ export default function AdminQuestionnaireEdit() {
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
if (!nom.trim()) {
toast.error("Le nom du questionnaire est obligatoire");
if (!titre.trim()) {
toast.error("Le titre du questionnaire est obligatoire");
return;
}
@@ -141,7 +141,7 @@ export default function AdminQuestionnaireEdit() {
}
const data = {
nom,
titre,
type,
description: description || undefined,
actif,
@@ -208,11 +208,11 @@ export default function AdminQuestionnaireEdit() {
</CardHeader>
<CardContent className="space-y-4">
<div>
<Label htmlFor="nom">Nom du questionnaire *</Label>
<Label htmlFor="titre">Titre du questionnaire *</Label>
<Input
id="nom"
value={nom}
onChange={(e) => setNom(e.target.value)}
id="titre"
value={titre}
onChange={(e) => setTitre(e.target.value)}
placeholder="Ex: Questionnaire de satisfaction Manager Itinova"
required
/>

View File

@@ -90,7 +90,7 @@ export default function AdminQuestionnaires() {
<div className="flex justify-between items-start">
<div className="flex-1">
<div className="flex items-center gap-2 mb-2">
<CardTitle>{questionnaire.nom}</CardTitle>
<CardTitle>{questionnaire.titre}</CardTitle>
{getTypeBadge(questionnaire.type)}
{!questionnaire.actif && (
<Badge variant="outline" className="bg-gray-100">