diff --git a/.cursor/rules/entreprise/00-checklist-nouveau-projet.mdc b/.cursor/rules/entreprise/00-checklist-nouveau-projet.mdc new file mode 100644 index 0000000..8ccb7f4 --- /dev/null +++ b/.cursor/rules/entreprise/00-checklist-nouveau-projet.mdc @@ -0,0 +1,21 @@ +--- +description: Checklist agent — monter un nouveau projet sur le modèle Progiweb +alwaysApply: true +--- + +# Checklist nouveau projet (agent) + +Quand l'utilisateur demande de reproduire le modèle Reader / Inscription / CRM : + +1. Créer la structure `.cursor/rules/{entreprise,projet,ops}/` (copier `entreprise/` depuis un projet déjà aligné). +2. Remplir `ops/20-parametres.mdc` (URLs Gitea, Bitbucket, chemins serveur, webhook, SSH). +3. Remplir `ops/20-git-deploy-playbook.mdc` (layout git root : `$HOME` vs `public_html`). +4. Remplir `projet/` (stack, conventions, préfixe JIRA). +5. Windows : remote Gitea, branche `dev`, `.gitignore` secrets / runtime. +6. Versionner `deploy_dev.php` au bon endroit (docroot) **avant** d'activer le webhook. +7. Serveur : `~/deploy/deploy_dev.sh` (chemins absolus), git init/fetch sur le bon root, tester `curl` webhook. +8. Gitea : webhook push → URL `deploy_dev.php` ; miroir Bitbucket avec sync **à chaque soumission** + intervalle filet (ex. `1h`). +9. Test bout en bout : push `dev` → commit visible sur Gitea, serveur, Bitbucket. +10. Secrets uniquement dans 1Password (référencer le titre de l'item dans `ops/20-parametres.mdc`). + +Ne pas inventer Bitbucket SSH sur le serveur : le serveur tire depuis Gitea local (`127.0.0.1:3000`) en général. diff --git a/.cursor/rules/entreprise/00-git-modele.mdc b/.cursor/rules/entreprise/00-git-modele.mdc new file mode 100644 index 0000000..42bcc9b --- /dev/null +++ b/.cursor/rules/entreprise/00-git-modele.mdc @@ -0,0 +1,43 @@ +--- +description: Progiweb — modèle Git / Gitea / Bitbucket / serveur (entreprise) +alwaysApply: true +--- + +# Modèle Git entreprise (Progiweb) + +Référentiel agent. Détails par projet → `ops/20-parametres.mdc` et `ops/20-git-deploy-playbook.mdc`. + +## Rôles + +| Système | Rôle | +|---|---| +| **Gitea** (`git.progiweb.ca`) | Source de vérité — push depuis Windows | +| **Bitbucket** | Miroir / backup opérationnel hors serveurs | +| **Serveur (cPanel)** | Déploiement uniquement — **jamais** de commits sur le serveur | + +## Branches + +- Travail quotidien : **`dev`** +- Prod : **`master`** (quand le projet l'utilise ; ne pas inventer le flux prod) +- Ne pas pousser `master` sans demande explicite + +## Flux nominal + +``` +Windows --push--> Gitea(dev) --webhook--> serveur (deploy_dev) + | + +--miroir push--> Bitbucket(dev) +``` + +## Déploiement (règles absolues) + +- Script shell hors webroot : typiquement `~/deploy/deploy_dev.sh` +- Déclencheur versionné dans le **docroot** : `deploy_dev.php` (sinon `git clean -fd` le détruit) +- Le script fait : `git fetch` → `git reset --hard FETCH_HEAD` → `git clean` **ciblé** (jamais un clean aveugle sur tout le home cPanel) +- Via PHP/Apache, **`HOME` est souvent absent** → chemins **absolus** dans le `.sh` +- Auth Gitea Windows : token (éviter OAuth HTTP « Bad Request ») +- Auth miroir Bitbucket : user `x-token-auth` + Repository Access Token (1Password) — pas le mot de passe web + +## Nouveau projet + +Suivre `entreprise/00-checklist-nouveau-projet.mdc` et recopier `entreprise/` + remplir `ops/` + `projet/`. diff --git a/.cursor/rules/entreprise/00-workflow.mdc b/.cursor/rules/entreprise/00-workflow.mdc new file mode 100644 index 0000000..e8976d4 --- /dev/null +++ b/.cursor/rules/entreprise/00-workflow.mdc @@ -0,0 +1,30 @@ +--- +description: Progiweb — workflow agent (entreprise). Toujours s'y référer. +alwaysApply: true +--- + +# Workflow entreprise (Progiweb) + +Référentiel agent — pas une doc humaine. S'appliquer à tous les projets Progiweb montés sur ce modèle. + +## Avant de modifier du code + +- Demander le **numéro JIRA** si l'utilisateur ne l'a pas fourni (préfixe selon le projet, voir `projet/`). +- Ne pas bloquer une simple question ou une lecture seule. + +## Portée + +- **Changement minimal** : uniquement ce qui est demandé. +- Pas de refactor large, renommage massif ou nettoyage opportuniste sans accord explicite. +- Cohérence locale (fichier / module) plutôt que modernisation globale. + +## Incohérences voisines + +1. Signaler brièvement. +2. Proposer une correction ciblée. +3. Attendre confirmation avant de sortir du périmètre. + +## Fin de tâche + +- Résumer : quoi, où, déploiement / SQL / étapes manuelles restantes. +- Ne pas créer de README ou docs hors demande explicite (les règles agent vivent dans `.cursor/rules/`). diff --git a/.cursor/rules/ops/20-git-deploy-playbook.mdc b/.cursor/rules/ops/20-git-deploy-playbook.mdc new file mode 100644 index 0000000..38fe85e --- /dev/null +++ b/.cursor/rules/ops/20-git-deploy-playbook.mdc @@ -0,0 +1,23 @@ +--- +description: MS1 Inscription — playbook Git/deploy (ops) +alwaysApply: true +--- + +# Playbook Git / deploy — MS1 Inscription + +## Layout + +- Le dépôt Git **est** le site (racine web = racine git), modèle historique MS1. +- Différent de Reader (git root = `$HOME` avec `ci4app` + `public_html` frères). + +## Deploy + +1. `~/deploy/deploy_dev.sh` : fetch `dev` → reset --hard → clean (adapter les chemins au docroot Inscription). +2. `deploy_dev.php` versionné à la racine — obligatoire avant webhook (sinon `git clean` l'efface). +3. Chemins absolus dans le `.sh` (PHP sans `HOME`). + +## À vérifier / aligner si besoin + +- Miroir Bitbucket : case « Synchroniser quand les révisions sont soumis » + intervalle `1h`. +- Webhook Gitea → URL HTTPS du `deploy_dev.php` d'environnement dev. +- Même philosophie entreprise que Reader (voir `entreprise/00-git-modele.mdc`). diff --git a/.cursor/rules/ops/20-parametres.mdc b/.cursor/rules/ops/20-parametres.mdc new file mode 100644 index 0000000..3b7c969 --- /dev/null +++ b/.cursor/rules/ops/20-parametres.mdc @@ -0,0 +1,41 @@ +--- +description: MS1 Inscription — paramètres figés (ops) +alwaysApply: true +--- + +# Paramètres — MS1 Inscription + +Secrets → 1Password uniquement. + +## Git / remotes + +| Clé | Valeur | +|---|---| +| Gitea (Windows) | `http://git.progiweb.ca/stephan/ms1inscription-v5.git` | +| Branche travail | `dev` | +| Branche prod | `master` | +| Bitbucket miroir | `https://bitbucket.org/progiwebinc/ms1inscription-v5.git` | + +## Miroir + +| Clé | Valeur | +|---|---| +| Modèle | Comme Reader : sync **à chaque soumission** + intervalle filet (ex. `1h`) | +| Auth Bitbucket | `x-token-auth` + access token (item 1Password dédié Inscription si distinct) | + +## Déploiement + +| Clé | Valeur | +|---|---| +| User / home typique | `devinscription` / `/home/devinscription` | +| Git root serveur | **Docroot du site** (pas le home entier — layout ≠ Reader) | +| Script | `/home/devinscription/deploy/deploy_dev.sh` | +| Webhook PHP | `deploy_dev.php` à la **racine du dépôt** (versionné) | +| Contenu PHP | `shell_exec('/home/devinscription/deploy/deploy_dev.sh 2>&1')` | + +## SSH / SQLTools + +| Clé | Valeur | +|---|---| +| Port SSH | **7822** | +| Exemple | `.vscode/settings.json.example` | diff --git a/.cursor/rules/css-js-version-bump.mdc b/.cursor/rules/projet/10-css-js-version-bump.mdc similarity index 100% rename from .cursor/rules/css-js-version-bump.mdc rename to .cursor/rules/projet/10-css-js-version-bump.mdc diff --git a/.cursor/rules/ms1-documentation.mdc b/.cursor/rules/projet/10-documentation.mdc similarity index 100% rename from .cursor/rules/ms1-documentation.mdc rename to .cursor/rules/projet/10-documentation.mdc diff --git a/.cursor/rules/ms1-php-conventions.mdc b/.cursor/rules/projet/10-php-conventions.mdc similarity index 100% rename from .cursor/rules/ms1-php-conventions.mdc rename to .cursor/rules/projet/10-php-conventions.mdc diff --git a/.cursor/rules/projet/10-stack.mdc b/.cursor/rules/projet/10-stack.mdc new file mode 100644 index 0000000..39aed6a --- /dev/null +++ b/.cursor/rules/projet/10-stack.mdc @@ -0,0 +1,11 @@ +--- +description: MS1 Inscription — stack et préfixe JIRA (projet) +alwaysApply: true +--- + +# Projet MS1 Inscription — stack + +- Stack : PHP legacy (racine / `php/` / `superadm/`) + modules CI4 optionnels (`v3_ci4/`). +- Préfixe JIRA : **`MSIN-xxxx`**. +- Scripts SQL : `sql/MSIN-xxxx-description-courte.sql`. +- Workspace local typique : `C:\dev_v4\ms1inscription4`. diff --git a/.cursor/rules/ms1-v2.mdc b/.cursor/rules/projet/10-v2.mdc similarity index 100% rename from .cursor/rules/ms1-v2.mdc rename to .cursor/rules/projet/10-v2.mdc diff --git a/.cursor/rules/ms1-workflow.mdc b/.cursor/rules/projet/10-workflow.mdc similarity index 100% rename from .cursor/rules/ms1-workflow.mdc rename to .cursor/rules/projet/10-workflow.mdc