# Système de Questions d'Entretien - Documentation

## Vue d'ensemble

Ce système permet de gérer une todo liste de questions d'entretien avec:
- Ajout/Suppression de questions
- Marquage des questions comme complétées
- Prise de notes personnelles
- Sauvegarde en base de données Oracle

## Installation

### 1. Initialiser la base de données

Exécutez le script d'initialisation en visitant:
```
http://localhost/pack-solutions/api/init-questions-db.php
```

Ce script va:
- Créer la table `INTERVIEW_QUESTIONS` pour stocker les questions
- Créer la table `INTERVIEW_NOTES` pour stocker les notes
- Insérer 5 questions d'exemple

### 2. Vérifier la configuration

Assurez-vous que le fichier `.env` à la racine contient les bonnes informations de connexion Oracle:
```
ORDS_BASE_URL=votre_url_ords
ORACLE_CLOUD_USER=votre_user
ORACLE_CLOUD_PASSWORD=votre_password
```

## Structure de la base de données

### Table INTERVIEW_QUESTIONS
```sql
ID             NUMBER        (Clé primaire, auto-incrémenté)
QUESTION_TEXT  VARCHAR2(1000) (Texte de la question)
IS_COMPLETED   NUMBER(1)      (0=non complétée, 1=complétée)
CREATED_AT     TIMESTAMP      (Date de création)
UPDATED_AT     TIMESTAMP      (Date de dernière modification)
SORT_ORDER     NUMBER         (Ordre d'affichage)
```

### Table INTERVIEW_NOTES
```sql
ID             NUMBER        (Toujours = 1, une seule ligne)
NOTES_CONTENT  CLOB          (Contenu des notes)
UPDATED_AT     TIMESTAMP      (Date de dernière modification)
```

## API Endpoints

### GET - Récupérer les données

#### Récupérer toutes les questions
```
GET /api/questions-notes.php?action=questions
```

Réponse:
```json
{
  "success": true,
  "data": [
    {
      "ID": 1,
      "QUESTION_TEXT": "Qu'est-ce qu'une clé primaire ?",
      "IS_COMPLETED": 0,
      "SORT_ORDER": 1,
      "CREATED_AT": "11/01/2026 15:30",
      "UPDATED_AT": "11/01/2026 15:30"
    }
  ]
}
```

#### Récupérer les notes
```
GET /api/questions-notes.php?action=notes
```

Réponse:
```json
{
  "success": true,
  "notes": "Mes notes personnelles...",
  "updated_at": "11/01/2026 15:30"
}
```

#### Récupérer les statistiques
```
GET /api/questions-notes.php?action=stats
```

Réponse:
```json
{
  "success": true,
  "stats": {
    "TOTAL": 10,
    "COMPLETED": 3,
    "REMAINING": 7
  }
}
```

### POST - Créer/Sauvegarder

#### Ajouter une question
```
POST /api/questions-notes.php
Content-Type: multipart/form-data

action=add_question
question_text=Nouvelle question ?
```

#### Sauvegarder les notes
```
POST /api/questions-notes.php
Content-Type: multipart/form-data

action=save_notes
notes_content=Mes notes...
```

### PUT - Modifier

#### Toggle le statut d'une question
```
PUT /api/questions-notes.php
Content-Type: application/json

{
  "action": "toggle",
  "id": 1
}
```

#### Modifier le texte d'une question
```
PUT /api/questions-notes.php
Content-Type: application/json

{
  "action": "update_text",
  "id": 1,
  "question_text": "Nouveau texte"
}
```

### DELETE - Supprimer

#### Supprimer une question
```
DELETE /api/questions-notes.php
Content-Type: application/json

{
  "action": "delete_one",
  "id": 1
}
```

#### Supprimer toutes les questions complétées
```
DELETE /api/questions-notes.php
Content-Type: application/json

{
  "action": "delete_completed"
}
```

## Utilisation de la page

### Accéder à la page
```
http://localhost/pack-solutions/pages/questions/notes.php
```

### Fonctionnalités disponibles

1. **Ajouter une question**: Tapez dans le champ et cliquez sur "Ajouter"
2. **Cocher une question**: Cliquez sur la checkbox pour marquer comme complétée
3. **Supprimer une question**: Cliquez sur l'icône poubelle
4. **Supprimer les complétées**: Bouton "Supprimer les complétées"
5. **Prendre des notes**: Écrivez dans la zone de texte
6. **Sauvegarder les notes**: Cliquez sur le bouton "Sauvegarder"

## Fichiers du système

```
pack-solutions/
├── sql/
│   └── create_interview_questions.sql    # Script de création des tables
├── api/
│   ├── questions-notes.php               # API CRUD
│   └── init-questions-db.php             # Script d'initialisation
└── pages/
    └── questions/
        ├── notes.php                      # Page principale
        └── README.md                      # Cette documentation
```

## Sécurité

⚠️ **Important**: Cette version est pour un environnement de développement local.

Pour la production, ajoutez:
- Validation et sanitization des inputs
- Protection CSRF
- Authentification utilisateur
- Limitation du taux de requêtes
- Logs d'audit

## Dépannage

### Erreur de connexion à la BDD
- Vérifiez le fichier `.env`
- Assurez-vous que ORDS est accessible
- Vérifiez les credentials Oracle

### Les questions ne s'affichent pas
- Ouvrez la console du navigateur (F12)
- Vérifiez les erreurs JavaScript
- Testez l'API directement: `/api/questions-notes.php?action=questions`

### Erreur lors de la sauvegarde
- Vérifiez que les tables existent (exécutez `init-questions-db.php`)
- Vérifiez les permissions de l'utilisateur Oracle
