fix(user): persist updateUser correctly; add setup:api script and README update; seeders tweaks

This commit is contained in:
2025-12-05 01:33:38 +01:00
parent bd263c01b9
commit b710b34569
20 changed files with 1637 additions and 53 deletions
+156
View File
@@ -0,0 +1,156 @@
# Instructions pour les agents Copilot / AI
But : fournir à un agent IA les informations essentielles pour être immédiatement productif dans ce workspace.
## Vue d'ensemble des projets
- **adastra_api/** : API Express/Node.js avec Sequelize (MySQL) + Mongoose (Mongo)
- **adastra_app/** : Frontend Angular 17
## Entrées principales de l'application
### API (adastra_api)
- **Point d'entrée :** `app.js` (racine du projet)
- Charge les variables d'environnement via `APP_ENV` (`.env.${APP_ENV}`)
- Initialise les middlewares (CORS, Morgan, session, etc.)
- Connecte MongoDB et MySQL
- Lance le serveur sur le port (défaut : 3200)
- **Routage Express :** `src/app.js` et `src/routes/`
- Toutes les routes API sont sous `/api/v1`
- Exemple : `GET /api/v1/articles``src/controllers/article.controller.js`
- **Contrôleurs :** `src/controllers/`
- Gèrent la logique métier, validations, réponses JSON
- Suivent le pattern : controller → service → utils → database
### Frontend (adastra_app)
- **Point d'entrée :** `src/main.ts` (bootstrap Angular)
- **Configuration :** `angular.json` (builds, configurations, assets)
- **Routes :** `src/app/app.routes.ts`
- **Composants :** `src/app/components/`
- **Styles globaux :** `src/styles/`
## Architecture et patterns clés
### Structure des données
- **Sequelize (MySQL)** : modèles dans `src/database/models/`
- Utilise `sequelize-cli` pour les migrations (si applicable)
- Auto-généré avec `sequelize-auto`
- **Mongoose (MongoDB)** : modèles dans `src/database/models/mongo`
- Initialisé avec `require('./src/database/models/mongo')`
### Gestion des erreurs
Middleware centralisé dans `src/middlewares/exceptions.handler` :
- `notFoundErrorHandler` : capture 404
- `logErrorHandler` : log des erreurs
- `fianlErrorHandler` : réponse finale au client
### Authentification & configuration
- **Passport :** `src/config/passport-local.js`, `passport-headerapikey.js`
- **Config générale :** `src/config/index.js` (secrets, session lifetime, DB)
- **Variables d'environnement :** `.env.${APP_ENV}` (local, development, production)
## Commandes essentielles
### API (adastra_api)
```bash
# Installation
cd adastra_api && npm install
# Développement (avec hot reload via nodemon)
npm run local # APP_ENV=local nodemon ./app.js (port 3200)
# Production/Staging
npm run dev # APP_ENV=development node ./app.js
npm run start # APP_ENV=production node ./app.js
# Tests
npm test # Newman : exécute tests/adastra-api-tests.postman_collection.json
# Arrêter le serveur
npm run stop # Tue le processus sur le port 3200
# MongoDB (Docker)
npm run mongo:start # Lance le conteneur Mongo (port 27017)
npm run mongo:stop # Arrête et nettoie le conteneur
```
### Frontend (adastra_app)
```bash
# Installation
cd adastra_app && npm install
# Développement
npm run local # ng serve --configuration local --port 4400
npm start # ng serve (port 4200 par défaut)
npm run dev # ng serve --configuration local --port 4201
# Build
npm run build # Production build (dist/)
npm run watch # Watch mode
# Linting
npm run lint # ESLint
```
## Conventions et bonnes pratiques
### Ajout d'une nouvelle route API
1. Créer/modifier la route dans `src/routes/` (ex. `src/routes/api/v2/articles.routes.js`)
2. Implémenter le contrôleur dans `src/controllers/article.controller.js`
3. Ajouter validation dans `src/validations/` si nécessaire
4. Tester via Postman → exporter en `tests/adastra-api-tests.postman_collection.json`
### Ajout d'un modèle de données
- **Sequelize :** créer le fichier dans `src/database/models/`, utiliser `sequelize-cli` si migrations
- **Mongoose :** créer le schéma dans `src/database/models/mongo/`, importer dans `src/database/models/mongo/index.js`
### Structure de réponse API
Vérifier `src/controllers/` pour le format des réponses — généralement :
```javascript
res.status(200).json({ data: [...], message: 'Success' });
res.status(400).json({ error: 'Validation failed', details: [...] });
```
## Variables d'environnement essentielles
À définir dans `.env.local`, `.env.development`, `.env.production` :
- `SERVER_PORT` : port du serveur (défaut 3200)
- `APP_ENV` : `local`, `development`, ou `production`
- `DB_HOST`, `DB_USER`, `DB_PASS`, `DB_NAME` : configuration MySQL
- `MONGO_URI` : URI de MongoDB
- Clés API externes (SendGrid, etc.)
## Points d'attention
- **Ne pas modifier** directement l'ordre des middlewares dans `app.js` sans tester l'intégralité du flow
- **Versions Node :** respecter `engines` dans `package.json` (`^16.20.2 || ^18.19.1 || ^20.11.1`)
- **Dépendances critiques :** `express`, `sequelize`, `mongoose`, `passport`, `jsonwebtoken`
## Ressources utiles pour un agent
Si tu dois ajouter/modifier du code, consulte d'abord :
1. **Contrôleur similaire existant** : ex. `src/controllers/member.controller.js` pour le pattern
2. **Route similaire existante** : `src/routes/` pour voir comment router
3. **Config/Middleware** : vérifier si logique centralisée existe déjà (`src/middlewares/`, `src/config/`)
4. **Tests Postman** : `tests/adastra-api-tests.postman_collection.json` pour valider les endpoints et `tests/adastra-api-tests.postman_environment.json` pour les variables d'environnement
---
**Questions manquantes ?** Demande-moi les détails sur :
- Structure exacte des schémas Sequelize/Mongoose
- Authentification et système d'autorisations
- Workflows de déploiement ou CI/CD
- Intégration frontend/backend (headers, tokens, etc.)