feat(erp): manifeste d'exercice, rejeu à blanc, gardes manquantes, trunk réconcilié #92

Merged
arcodange merged 6 commits from arcodange/compta-rails into main 2026-08-14 22:05:50 +02:00
4 changed files with 21 additions and 23 deletions
Showing only changes of commit 6a5b7baa23 - Show all commits
+4
View File
@@ -1,3 +1,7 @@
# Ansible Collection - arcodange.erp # Ansible Collection - arcodange.erp
Documentation for the collection. Documentation for the collection.
```sh
ansible-playbook playbooks/recurrentBackup.yml -i ~/.ansible/collections/ansible_collections/arcodange/factory/inventory -vv
```
+11 -17
View File
@@ -182,25 +182,19 @@ sync_documents() {
} }
# --- mode vierge ------------------------------------------------------------- # --- mode vierge -------------------------------------------------------------
# ÉTAT : INCOMPLET. La purge fonctionne, l'instance ne se reconstruit PAS. # Vide la base du bac à sable pour qu'un rejeu d'exercice reparte de zéro.
# `refresh-from-prod` réimporterait précisément les défauts que le rejeu doit
# corriger : reconstruire suppose donc une base vide, pas iso-prod.
# #
# Vérifié le 2026-08-14 : après DROP OWNED et retrait de install.lock, Dolibarr # CETTE COMMANDE N'EST QU'UNE ÉTAPE. Seule, elle laisse le bac à sable sans
# sert une page de login sur un schéma à ZÉRO table et l'API répond « Module Api # schéma — Dolibarr sert alors une page de login sur une base vide. La chaîne
# must be enabled ». L'entrypoint de l'image NE LANCE PAS d'installation # complète, déjà outillée dans test/ :
# automatique — retirer le verrou ne suffit pas.
# #
# CE QU'IL MANQUE : un « golden empty », c'est-à-dire un pg_dump d'une instance # 1. sandbox-lifecycle.sh blank --yes purge la base, retire install.lock
# Dolibarr fraîchement installée — schéma + données de référence (dictionnaires, # 2. cd test && deno run -A main.ts pilote l'installeur (/install/), la
# pays, plan comptable) — sans aucune donnée métier. `blank` restaurerait ce dump # société, l'affichage et les modules
# au lieu de laisser la base vide, exactement comme `refresh-from-prod` restaure # 3. touch install.lock dans le pod reverrouille (recette du test/README.md)
# le dump de production. Seule la source change. # 4. deno run -A provisionSandbox.ts agent d'écriture, droits, clé API
#
# En l'état, `blank` laisse le bac à sable INUTILISABLE : ne l'employer que suivi
# de `refresh-from-prod`, ou une fois le golden empty constitué.
#
# Vide la base du bac à sable SANS rien restaurer, pour qu'un rejeu d'exercice
# reparte de zéro. `refresh-from-prod` réimporterait précisément les défauts que
# le rejeu doit corriger : reconstruire suppose donc une base vide, pas iso-prod.
# #
# CE QUI REND L'OPÉRATION SÛRE : elle est ANNULABLE. `refresh-from-prod` restaure # CE QUI REND L'OPÉRATION SÛRE : elle est ANNULABLE. `refresh-from-prod` restaure
# un bac à sable iso-prod en trois minutes. On peut donc casser sans regret — et # un bac à sable iso-prod en trois minutes. On peut donc casser sans regret — et
+2 -2
View File
@@ -6,8 +6,8 @@
"ville": "Evry Courcouronnes", "ville": "Evry Courcouronnes",
"pays": "France (FR)", "pays": "France (FR)",
"telephonePortable": "0664574539", "telephonePortable": "0664574539",
"siteWeb": "gitea.arcodange.duckdns.org", "siteWeb": "arcodange.fr",
"email": "[email protected]", "email": "[email protected]",
"logoFilePath": "$IMG/logo512.png" "logoFilePath": "$IMG/logo512.png"
}, },
"ID": { "ID": {
+2 -2
View File
@@ -27,7 +27,7 @@ const adminCredentials = {
}; };
const rootFolderPath = Deno.env.get("ROOT_FOLDER") || const rootFolderPath = Deno.env.get("ROOT_FOLDER") ||
"/Users/gabrielradureau/Desktop/ARCODANGE/erp"; "/Users/gabrielradureau/Work/Arcodange/erp";
const imgFolderPath = Deno.env.get("IMG_FOLDER") || const imgFolderPath = Deno.env.get("IMG_FOLDER") ||
path.join(rootFolderPath, "static/img"); path.join(rootFolderPath, "static/img");
const configFolderPath = Deno.env.get("CONFIG_FOLDER") || const configFolderPath = Deno.env.get("CONFIG_FOLDER") ||
@@ -78,7 +78,7 @@ const globalCtx = {
try { try {
// await displaySetup.setupDisplay(globalCtx); // await displaySetup.setupDisplay(globalCtx);
await moduleSetup.configureModule(globalCtx, {moduleName: 'TIERS' ,enabled: false, onConfiguration: async () => { await moduleSetup.configureModule(globalCtx, {moduleName: 'TIERS' , enabled: true, onConfiguration: async () => {
await globalCtx.page.screenshot({path: 'save.png'}) await globalCtx.page.screenshot({path: 'save.png'})
}}); }});
} catch (error) { } catch (error) {