Compare commits
1 Commits
cursor/val
...
cursor/bac
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b7158b0637 |
@@ -1,224 +0,0 @@
|
||||
# RAPPORT COMPOSER — GO LIVE weval-consulting.com
|
||||
## Rôle : Frontend UX Engineer & Content Reviewer
|
||||
**Date :** 9 mars 2026
|
||||
**Statut :** A VERIFIER — Issues bloquantes identifiées
|
||||
|
||||
---
|
||||
|
||||
## 1. RÉSUMÉ EXÉCUTIF
|
||||
|
||||
| Critère | Statut | Détail |
|
||||
|---------|--------|--------|
|
||||
| Contenu (orthographe, confidentialité) | ❌ BLOQUANT | Infos confidentielles dans le frontend |
|
||||
| UX (boutons, liens, responsive) | ⚠️ PARTIEL | Viewport OK, emojis au lieu de SVG |
|
||||
| Cohérence visuelle | ⚠️ PARTIEL | Typo/couleurs incohérentes |
|
||||
| SEO | ⚠️ PARTIEL | Sitemap incomplet, meta OK |
|
||||
| **GO LIVE** | **NON** | Corrections requises |
|
||||
|
||||
---
|
||||
|
||||
## 2. AUDIT CONTENU
|
||||
|
||||
### 2.1 Informations confidentielles (BLOQUANT)
|
||||
|
||||
| [PAGE/SOURCE] | [STATUS] | [ISSUE] |
|
||||
|---------------|----------|---------|
|
||||
| `/assets/index-BcECjySJ.js` | ❌ BLOQUANT | **Noms de concurrents** : McKinsey, PwC, Deloitte présents dans le code (stratégies analytiques) |
|
||||
| `/assets/index-BcECjySJ.js` | ❌ BLOQUANT | **IP interne exposée** : 89.167.40.150 (S89) visible dans le frontend — violation sécurité |
|
||||
| `/wevia` (scripts) | ❌ BLOQUANT | Référence "Cadre analytique McKinsey" dans les prompts/stratégies |
|
||||
|
||||
**Règle de non-régression :** 0 info confidentielle visible — **NON RESPECTÉE**
|
||||
|
||||
### 2.2 Orthographe et grammaire
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| Pages produits | ✅ OK | Pas de faute flagrante détectée sur les échantillons |
|
||||
| Homepage | ✅ OK | Français correct, accents présents |
|
||||
|
||||
### 2.3 Cohérence du message (international vs régional)
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| Homepage | ⚠️ ATTENTION | `og:locale` = fr_MA (Maroc) — le prompt exige un positionnement international |
|
||||
| Homepage | ⚠️ ATTENTION | Titre "Casablanca" — peut paraître trop Maroc-centrique |
|
||||
| `geo.region` | ⚠️ | MA-CAS, geo.placename Casablanca — à pondérer selon cible |
|
||||
|
||||
### 2.4 Jargon technique interne
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| Audit global | ✅ OK | Pas de PMTA, Graph API, O365, CX3, SEMAINE 1, MAINTENANT détecté |
|
||||
|
||||
---
|
||||
|
||||
## 3. AUDIT UX
|
||||
|
||||
### 3.1 Boutons et liens
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| Products | ✅ OK | Pas de `href="#"` sans action détecté |
|
||||
| MedReach | ✅ OK | Ancres #features, #coverage, #pricing, #usecases, #cta — cibles présentes |
|
||||
| Workspace | ✅ OK | Liens fonctionnels |
|
||||
|
||||
### 3.2 Responsive
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| Workspace | ✅ OK | `<meta name="viewport" content="width=device-width,initial-scale=1.0">` |
|
||||
| Homepage | ✅ OK | Viewport présent |
|
||||
| Platform | ✅ OK | Viewport présent |
|
||||
|
||||
**Note :** Test manuel sur 375px, 768px, 1440px non effectué (audit automatisé).
|
||||
|
||||
### 3.3 Dark mode
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| Workspace | ✅ OK | Thème sombre cohérent (--bg:#0b0e14, --text:#c9d1d9) |
|
||||
| Platform | ✅ OK | Dark theme (--bg:#05080f) |
|
||||
| WEVIA | ✅ OK | `isDark` + localStorage wevia_dark |
|
||||
|
||||
### 3.4 Chatbot
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| WEVIA | ⚠️ | Accessible — test fonctionnel à valider par QA (GPT) |
|
||||
|
||||
---
|
||||
|
||||
## 4. AUDIT COHÉRENCE VISUELLE
|
||||
|
||||
### 4.1 Logos et icônes
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| Products | ❌ | **Emojis utilisés** (ex. 📧) — le prompt exige "Logos SVG sur toutes les cards (pas d'emojis)" |
|
||||
|
||||
### 4.2 Typographie
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| Workspace | ✅ OK | Inter + JetBrains Mono (conforme spec) |
|
||||
| Platform | ⚠️ | Outfit + Space Mono — **incohérence** avec spec "Inter + JetBrains Mono" |
|
||||
| Homepage | ⚠️ | Font Awesome + fonts CDN — à vérifier cohérence |
|
||||
|
||||
### 4.3 Couleurs
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| WEVIA / Homepage | ✅ OK | Accent violet #7c3aed présent |
|
||||
| Workspace | ⚠️ | Accent bleu #2f81f7 — **incohérence** avec spec "accent violet #7c3aed" |
|
||||
| Platform | ✅ OK | --p:#7c5cfc (violet), --t:#00c9a7 (teal) |
|
||||
|
||||
### 4.4 Texte tronqué
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| Audit visuel | ⏳ | Non vérifiable en audit automatisé |
|
||||
|
||||
---
|
||||
|
||||
## 5. AUDIT SEO
|
||||
|
||||
### 5.1 Titres et meta
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| Homepage | ✅ OK | `<title>` unique, meta description présente |
|
||||
| DeliverScore | ✅ OK | Title + meta description |
|
||||
| StoreForge | ⚠️ | **Incohérence** : URL storeforge.html mais title "StoreAI" |
|
||||
| 17 pages produits | ✅ OK | Titres uniques par page |
|
||||
|
||||
### 5.2 Sitemap
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| sitemap.xml | ❌ | **Pages produits absentes** — 17 URLs /products/* non listées |
|
||||
| sitemap.xml | ⚠️ | Seulement 17 URLs (home, solutions, services) — pas de /products/, pas de /platform/ |
|
||||
|
||||
### 5.3 Alt text
|
||||
|
||||
| [PAGE] | [STATUS] | [ISSUE] |
|
||||
|--------|----------|---------|
|
||||
| MedReach | ⚠️ | Peu d'images avec alt détectées |
|
||||
| Content-Factory | ⚠️ | À vérifier manuellement |
|
||||
|
||||
---
|
||||
|
||||
## 6. PAGES TESTÉES (HTTP STATUS)
|
||||
|
||||
| # | URL | HTTP | Titre |
|
||||
|---|-----|------|-------|
|
||||
| 1 | / | 200 | Weval Consulting - Cloud, IA, E-Marketing \| Casablanca |
|
||||
| 2 | /products/ | 200 | — |
|
||||
| 3 | /products/academy.html | 200 | WEVAL Academy — Certifications IA Professionnelles |
|
||||
| 4 | /products/arsenal.html | 200 | Arsenal — Framework ERP Intelligence |
|
||||
| 5 | /products/blueprintai.html | 200 | BlueprintAI — Process Consulting |
|
||||
| 6 | /products/content-factory.html | 200 | AI Content Factory — Contenu IA à la demande |
|
||||
| 7 | /products/deliverscore.html | 200 | DeliverScore — Audit Deliverability Email Gratuit |
|
||||
| 8 | /products/gpu-inference.html | 200 | WEVIA Inference API — IA-as-a-Service |
|
||||
| 9 | /products/medreach.html | 200 | MedReach — Base Mondiale de Professionnels de Santé |
|
||||
| 10 | /products/proposalai.html | 200 | ProposalAI — Générateur de Propositions Commerciales |
|
||||
| 11 | /products/storeforge.html | 200 | StoreAI — Créez votre boutique en ligne en 5 minutes |
|
||||
| 12 | /products/wevads.html | 200 | WEVADS — Plateforme Email Marketing Intelligence |
|
||||
| 13 | /products/wevads-ia.html | 200 | WEVADS IA — Email Intelligence Platform |
|
||||
| 14 | /products/wevia-whitelabel.html | 200 | WEVIA White-Label — Chatbot IA clé en main |
|
||||
| 15 | /products/workspace.html | 200 | WEVAL — Workspace |
|
||||
| 16 | /products/cloud-providers.html | 200 | — |
|
||||
| 17 | /products/deliverads.html | 200 | — |
|
||||
| 18 | /products/mailforge.html | 200 | — |
|
||||
| 19 | /products/wevia-enterprise.html | 200 | — |
|
||||
| 20 | /platform/ | 200 | WEVAL Platform — Products & Services AppStore |
|
||||
| 21 | /wevia | 200 | — |
|
||||
| 22 | /solutions | 200 | — |
|
||||
|
||||
**Note :** 17 pages produits identifiées (prompt mentionne 27 — possible différence services vs produits).
|
||||
|
||||
---
|
||||
|
||||
## 7. CHECKLIST CONSOLIDATION (Composer)
|
||||
|
||||
| # | Check | Owner | Status |
|
||||
|---|-------|-------|--------|
|
||||
| 7 | 0 faute français | Composer (Content) | ✅ OK |
|
||||
| 8 | Responsive mobile OK | Composer (UX) | ⚠️ Viewport OK, test manuel à faire |
|
||||
| 14 | 0 régression front | Composer (UX) | ❌ Issues identifiées |
|
||||
| — | 0 info confidentielle | Composer + GPT | ❌ McKinsey, PwC, Deloitte, IP 89.167 |
|
||||
| — | Logos SVG (pas emojis) | Composer | ❌ Emojis sur products |
|
||||
| — | Typo Inter + JetBrains | Composer | ⚠️ Platform = Outfit + Space Mono |
|
||||
| — | Accent violet #7c3aed | Composer | ⚠️ Workspace = bleu #2f81f7 |
|
||||
| — | Sitemap à jour | Composer | ❌ Products absents |
|
||||
|
||||
---
|
||||
|
||||
## 8. ACTIONS CORRECTIVES RECOMMANDÉES
|
||||
|
||||
### Priorité 1 (BLOQUANT GO LIVE)
|
||||
1. **Retirer McKinsey, PwC, Deloitte** du code frontend (index-BcECjySJ.js, scripts WEVIA)
|
||||
2. **Retirer l'IP 89.167.40.150** du bundle JS — utiliser des URLs relatives ou variables d'environnement
|
||||
3. **Mettre à jour le sitemap** — ajouter les 17+ URLs /products/* et /platform/
|
||||
|
||||
### Priorité 2 (NON-RÉGRESSION)
|
||||
4. Remplacer les emojis par des logos SVG sur les cards produits
|
||||
5. Harmoniser StoreForge/StoreAI — choisir un nom (StoreForge recommandé pour cohérence URL)
|
||||
6. Harmoniser couleurs : Workspace → accent violet #7c3aed
|
||||
7. Harmoniser typo : Platform → Inter + JetBrains Mono (ou documenter la variance)
|
||||
|
||||
### Priorité 3 (AMÉLIORATION)
|
||||
8. Enrichir og:locale / positionnement si cible internationale
|
||||
9. Vérifier alt text sur toutes les images
|
||||
10. Test responsive manuel 375px, 768px, 1440px
|
||||
|
||||
---
|
||||
|
||||
## 9. CONCLUSION
|
||||
|
||||
**Le site n'est pas prêt pour le GO LIVE** au regard des critères Composer. Les issues bloquantes (informations confidentielles, IP exposée) doivent être corrigées avant mise en production. Les corrections de cohérence visuelle et SEO sont recommandées pour respecter les règles de non-régression.
|
||||
|
||||
**Prochaine étape :** Consolider avec les rapports GPT (QA) et Codex (Backend/Security), corriger les issues, puis re-tester.
|
||||
|
||||
---
|
||||
|
||||
*Rapport généré par Composer — Frontend UX & Content Reviewer*
|
||||
139
RAPPORT_VERIFICATION_SENTINEL_BULK_INSTALL_20260310.md
Normal file
139
RAPPORT_VERIFICATION_SENTINEL_BULK_INSTALL_20260310.md
Normal file
@@ -0,0 +1,139 @@
|
||||
# Rapport de verification Sentinel - Bulk Install ADX
|
||||
|
||||
Date: 2026-03-10
|
||||
Scope: verification et correction du flux Bulk Install sur S89 (ADX / port 5821)
|
||||
|
||||
## Verdict executif
|
||||
|
||||
Le correctif PHP sur `getInstallationLogs()` est bien en place sur ADX et FMG.
|
||||
Le flux n'est plus bloque par le crash PHP 8.x `str_replace(..., null)`.
|
||||
|
||||
Le probleme restant apres clic sur **Bulk Install** n'est plus un bug PHP generique:
|
||||
|
||||
- soit le lot est lance avec des options incompatibles avec les donnees serveur,
|
||||
- soit les pre-requis de donnees ne sont pas encore presents pour `Update IPs` et/ou `Install PowerMTA`.
|
||||
|
||||
Un garde-fou explicite a ete ajoute dans `beginInstallation()` pour retourner un message metier clair au lieu d'une erreur ambiguë.
|
||||
|
||||
## Verifications executees via Sentinel
|
||||
|
||||
### 1. Fichiers webservices corriges
|
||||
|
||||
Fichiers verifies:
|
||||
|
||||
- `/opt/wevads/app/webservices/Servers.php`
|
||||
- `/opt/fmgapp/app/webservices/Servers.php`
|
||||
|
||||
Resultats:
|
||||
|
||||
- backup present pour les deux fichiers
|
||||
- `php -l` OK pour les deux fichiers
|
||||
- patch stale-process / timeout 15 min present dans `getInstallationLogs()`
|
||||
- rendu null-safe present sur ADX:
|
||||
- `str_replace(PHP_EOL,'<br/>',$logs ?? '')`
|
||||
|
||||
### 2. Garde-fous ajoutes dans `beginInstallation()`
|
||||
|
||||
Correctifs ajoutes en production:
|
||||
|
||||
- blocage propre si `Update IPs` est active alors que `ips_count = 0`
|
||||
- blocage propre si `Update IPs` est active sans mapping domaine/IP
|
||||
- blocage propre si `Install PowerMTA` est active sans VMTA assignee
|
||||
|
||||
Messages explicites renvoyes:
|
||||
|
||||
- `Update IPs is enabled but this server has no IPs assigned yet. Disable "Update IPs" or assign IPs first.`
|
||||
- `Update IPs is enabled but no domain/IP mapping was provided.`
|
||||
- `Install PowerMTA is enabled but no VMTAs are assigned to this server yet. Disable "Install PowerMTA" or assign VMTAs first.`
|
||||
|
||||
### 3. Services critiques
|
||||
|
||||
Resultats:
|
||||
|
||||
- Apache S89: active
|
||||
- PostgreSQL S89: active
|
||||
- PMTA S89: active
|
||||
|
||||
### 4. Tracking
|
||||
|
||||
Resultats:
|
||||
|
||||
- `http://151.80.235.110` -> HTTP 200
|
||||
- `https://culturellemejean.charity` -> HTTP 200
|
||||
|
||||
### 5. Serveurs 190-194
|
||||
|
||||
Etat DB:
|
||||
|
||||
- presents dans `admin.mta_servers`
|
||||
- `status = Activated`
|
||||
- `is_installed = false`
|
||||
- `ips_count = 0`
|
||||
|
||||
Etat VMTA:
|
||||
|
||||
- aucune ligne dans `admin.servers_vmtas`
|
||||
- aucune ligne dans `admin.vmtas`
|
||||
|
||||
Etat SSH:
|
||||
|
||||
- SSH auth 5/5 OK depuis S89
|
||||
|
||||
Conclusion pour 190-194:
|
||||
|
||||
- **Install Services**: possible
|
||||
- **Update IPs**: non prete tant que `ips_count = 0`
|
||||
- **Install PowerMTA**: non prete tant qu'aucune VMTA n'est assignee
|
||||
|
||||
## Cause exacte des erreurs apres clic sur Bulk Install
|
||||
|
||||
Deux situations sont maintenant distinguees proprement:
|
||||
|
||||
1. **Ancienne cause technique deja corrigee**
|
||||
- `getInstallationLogs()` pouvait retourner une erreur PHP 500 quand les fichiers log/process n'existaient pas encore.
|
||||
- Ce point est corrige.
|
||||
|
||||
2. **Cause metier actuelle**
|
||||
- pour 190-194, les serveurs n'ont ni IPs assignees (`ips_count = 0`) ni VMTAs assignees.
|
||||
- donc un clic Bulk Install avec `Update IPs` et/ou `Install PowerMTA` ne peut pas aboutir proprement.
|
||||
- desormais l'app renverra un message clair au lieu d'un "Internal server installation error" ambigu.
|
||||
|
||||
## Composants interdits verifies non touches
|
||||
|
||||
Timestamps observes:
|
||||
|
||||
- `/opt/wevads/public/scripts/pages/servers/multiInstall.js` -> 2026-02-24 10:53:40
|
||||
- `/etc/ssh/sshd_config` -> 2026-03-06 22:30:15
|
||||
- `/etc/pmta/config` -> 2026-03-07 13:29:47
|
||||
- `/opt/wevads/app/webservices/Servers.php` -> 2026-03-10 02:39:39
|
||||
|
||||
Interpretation:
|
||||
|
||||
- `multiInstall.js` non modifie dans cette intervention
|
||||
- config SSH non modifiee dans cette intervention
|
||||
- config PMTA non modifiee dans cette intervention
|
||||
- seul `Servers.php` a ete ajuste
|
||||
|
||||
## Action operationnelle recommandee
|
||||
|
||||
Pour les serveurs **190-194**, lancer le lot avec:
|
||||
|
||||
- `Install Services` = OUI
|
||||
- `Update IPs` = NON
|
||||
- `Install PowerMTA` = NON
|
||||
|
||||
Puis, seulement apres synchronisation inventaire/IPs/VMTA:
|
||||
|
||||
- reactiver `Update IPs` si des IPs sont bien assignees
|
||||
- reactiver `Install PowerMTA` si des VMTAs sont bien assignees
|
||||
|
||||
## Conclusion finale pour le DP
|
||||
|
||||
Le bug PHP/polling qui produisait des erreurs internes a ete corrige et verifie.
|
||||
Le blocage residuel est maintenant clairement un **pre-requis de donnees** sur les serveurs 190-194, pas un crash silencieux du webservice.
|
||||
|
||||
Le systeme est donc revenu a un comportement propre:
|
||||
|
||||
- pas de regression PMTA / SSH / JAR / JS
|
||||
- erreur technique eliminee
|
||||
- validation metier explicite en production
|
||||
Reference in New Issue
Block a user