diff --git a/RAPPORT_CHANTIERS_FINAL.md b/RAPPORT_CHANTIERS_FINAL.md index 51cde9a..8fbe25a 100644 --- a/RAPPORT_CHANTIERS_FINAL.md +++ b/RAPPORT_CHANTIERS_FINAL.md @@ -94,3 +94,22 @@ Corrections additionnelles faites: - `/opt/wevads/config/application.json`: `tracking_url` aligne sur `https://culturellemejean.charity` - `/opt/wevads/scripts/ethica/ethica-source-fallback.sh`: ajout `scraper-tabibi.php` +--- + +## 6) WEVADS IA v2 backend/API (front laisse a Claude) + +Statut: +- backend v2 actif et stable sur S88 (`wevads-v2-backend`) +- endpoints v2 passes en mode live (plus seulement scaffold) + +Valide en smoke E2E: +- auth JWT (`register/login/me`) +- contacts (list + CRUD) +- templates (list + CRUD) +- campaigns (list + create/update/schedule/send-simulate) +- analytics (`overview`, `deliverability`) +- AI (`/api/v2/ai/*` et `/api/v2/brain/ai/*`) + +Livrable de handoff front: +- `WEVADS_V2_BACKEND_API_CONTRACT.md` + diff --git a/RAPPORT_DP_CLAUDE_FINAL.md b/RAPPORT_DP_CLAUDE_FINAL.md index 9f37c89..92ba973 100644 --- a/RAPPORT_DP_CLAUDE_FINAL.md +++ b/RAPPORT_DP_CLAUDE_FINAL.md @@ -125,6 +125,15 @@ Impact: - endpoint public: `https://weval-consulting.com/api/v2/health` => 200 - backups GOLD realises avant modification `.env` et nginx + Mise a niveau executee: + - Auth JWT live: `/api/v2/auth/register|login|me` + - Contacts live: `/api/v2/contacts/list` + CRUD + - Campaigns live: `/api/v2/campaigns/list` + create/update/schedule/send-simulate + - Templates live: `/api/v2/templates/list` + CRUD + - Analytics live: `/api/v2/analytics/overview|deliverability` + - AI live: `/api/v2/ai/*` + `/api/v2/brain/ai/*` + - Bridge configs robustifie: fallback Sentinel si `controller-not-found` + 2. **S89 - fiabilisation Ethica** - script fallback sources: `/opt/wevads/scripts/ethica/ethica-source-fallback.sh` - cron renfort: @@ -152,6 +161,14 @@ Constat additionnel critique: --- +## 6.2) Handoff frontend v2 (a Claude) + +- Contrat API formalise: `WEVADS_V2_BACKEND_API_CONTRACT.md` +- Decision: backend/API v2 pret pour integration front +- Scope restant: implementation UI v2 (auth/dashboard/CRM/campaigns/templates/analytics) + +--- + ## 7) Decision DP recommandee Decision operationnelle proposee: diff --git a/RAPPORT_WEVADS_V2_BACKEND_EXECUTION_20260310.md b/RAPPORT_WEVADS_V2_BACKEND_EXECUTION_20260310.md new file mode 100644 index 0000000..b029332 --- /dev/null +++ b/RAPPORT_WEVADS_V2_BACKEND_EXECUTION_20260310.md @@ -0,0 +1,55 @@ +# Rapport execution - WEVADS IA v2 backend/API + +Date: 2026-03-10 +Scope: faire tout le backend/API v2, laisser le frontend a Claude. + +## 1) Actions executees + +Sur S88 (`/opt/wevads-v2/backend`): + +- ajout services: + - `src/services/store.js` (persistence JSON) + - `src/services/wevia.js` (+ fallback) + - `src/middleware/auth.js` (JWT bearer) +- remplacement routes scaffold par routes live: + - `src/routes/auth.js` + - `src/routes/contacts.js` + - `src/routes/campaigns.js` + - `src/routes/templates.js` + - `src/routes/analytics.js` + - `src/routes/ai.js` + - `bridges/brain-bridge.js` (via symlink route), avec fallback Sentinel sur `/brain/configs` +- update `src/server.js` (rate limit, data init, error handler) +- restart service systemd avec verification active + +## 2) Validation technique + +### Service +- `systemctl is-active wevads-v2-backend` => `active` +- endpoint health => `https://weval-consulting.com/api/v2/health` = 200 + +### Smoke E2E API v2 (live) +- metas: `/auth`, `/contacts`, `/campaigns`, `/templates`, `/analytics`, `/ai` => 200 +- `POST /auth/register` => 201 + token +- `POST /contacts` + `GET /contacts/list` => 201 / 200 +- `POST /templates` + `GET /templates/list` => 201 / 200 +- `POST /campaigns` + `schedule` + `send-simulate` + `list` => 201 / 200 / 200 / 200 +- `GET /analytics/overview` => 200 +- `POST /ai/subject-optimizer` => 200 +- `POST /brain/ai/content-generator` => 200 +- `GET /brain/status` => 200 (`brain_api` et `sentinel_api` reachables) +- `GET /brain/configs` => 200 (source `sentinel_fallback`) + +### Non-regression globale +- `reports/nonreg_20260310_012904.md` => PASS (0 FAIL) + +## 3) Ce qui reste (front uniquement) + +- UI v2 a implementer cote Claude: + - login/register/me + - dashboard analytics + - gestion contacts + - gestion campagnes + - templates + - integration AI +- Contrat API livre: `WEVADS_V2_BACKEND_API_CONTRACT.md` diff --git a/README.md b/README.md index e9f85c5..d5206df 100644 --- a/README.md +++ b/README.md @@ -16,3 +16,4 @@ - `REGLES_EXECUTION_OBLIGATOIRES.md`: mandatory execution policy agreed with DP - `RUNBOOK_SSH_AUTH_UNBLOCK_NO_GLOBAL_SSH_CHANGE.md`: SSH unblock steps without global SSH config changes - `FACTORY_SAAS_PRODUCT_STATUS.md`: public LIVE/BETA/LANDING status by product +- `WEVADS_V2_BACKEND_API_CONTRACT.md`: backend v2 endpoint contract for frontend handoff diff --git a/WEVADS_V2_BACKEND_API_CONTRACT.md b/WEVADS_V2_BACKEND_API_CONTRACT.md new file mode 100644 index 0000000..60b68f1 --- /dev/null +++ b/WEVADS_V2_BACKEND_API_CONTRACT.md @@ -0,0 +1,91 @@ +# WEVADS IA v2 - Backend/API contract (handoff front a Claude) + +Date: 2026-03-10 +Scope: backend et API v2 finalises; frontend v2 a realiser cote Claude. + +## 1) Base API + +- Base URL: `https://weval-consulting.com/api/v2` +- Health: `GET /health` +- Auth: JWT Bearer token (`Authorization: Bearer `) + +## 2) Auth + +- `POST /auth/register` + - body: `{ "email", "password", "name", "company?" }` + - output: `{ status, token, user }` +- `POST /auth/login` + - body: `{ "email", "password" }` + - output: `{ status, token, user }` +- `GET /auth/me` (auth) + - output: `{ status, user }` + +## 3) Contacts + +- `GET /contacts` (meta) +- `GET /contacts/list?page=1&limit=25&q=` (auth) +- `POST /contacts` (auth) + - body: `{ email, first_name?, last_name?, company?, phone?, country?, tags?[] }` +- `PATCH /contacts/:id` (auth) +- `DELETE /contacts/:id` (auth) + +## 4) Templates + +- `GET /templates` (meta) +- `GET /templates/list` (auth) +- `POST /templates` (auth) + - body: `{ name, category?, html?, text? }` +- `PATCH /templates/:id` (auth) +- `DELETE /templates/:id` (auth) + +## 5) Campaigns + +- `GET /campaigns` (meta) +- `GET /campaigns/list?page=1&limit=20&q=` (auth) +- `POST /campaigns` (auth) + - body: `{ name, subject, content_html?, audience_size? }` +- `GET /campaigns/:id` (auth) +- `PATCH /campaigns/:id` (auth) +- `POST /campaigns/:id/schedule` (auth) + - body: `{ scheduled_at }` +- `POST /campaigns/:id/send-simulate` (auth) + +## 6) Analytics + +- `GET /analytics` (meta) +- `GET /analytics/overview` (auth) +- `GET /analytics/deliverability` (auth) + +## 7) AI endpoints + +### AI module +- `GET /ai` (meta) +- `POST /ai/subject-optimizer` +- `POST /ai/content-generator` +- `POST /ai/send-time` + +### Brain bridge +- `GET /brain/status` +- `GET /brain/configs` + - fallback Sentinel actif si `BrainEngine/getConfigs` retourne controller-not-found +- `POST /brain/ai/subject-optimizer` +- `POST /brain/ai/content-generator` +- `POST /brain/ai/send-time` +- `GET /brain/pmta/status` + +## 8) Etat de validation + +Valide en live (smoke E2E): +- health/meta endpoints: OK +- register/login + bearer auth: OK +- CRUD contacts/templates/campaigns: OK +- analytics overview: OK +- AI + brain AI endpoints: OK +- non-regression globale apres deploiement: PASS (`reports/nonreg_20260310_012904.md`) + +## 9) Travail restant (front a Claude) + +1. Construire UI v2 (auth, dashboard, contacts, campaigns, templates, analytics) +2. Brancher formulaires et tables sur les endpoints ci-dessus +3. Gestion token front (login/register/logout + refresh UX) +4. Ecrans d'erreur/loading v2 et validations formulaire