Trois défauts trouvés en une heure par le premier lancement réel — c'est ce qu'un test d'intégration doit produire. 1. « --setup-host » a échoué en ZÉRO seconde sur « Unable to locate package qemu-system-x86 », alors que le paquet existe : la VM venait de démarrer et ses listes ne portaient que bookworm-security. Le message envoyait chercher des paquets, pas des listes. Même parade qu'install_proxmox.sh — arrêter apt-daily, puis réessayer. 2. Le réseau « default » de libvirt sert 192.168.122.0/24 à TOUS les étages. L'étage 2, dont l'adresse VENAIT de ce réseau, voyait son propre net-start refusé : « Network is already in use by interface enp1s0 ». Un invité qui vit dans un réseau ne peut pas servir le même. Chaque étage prend le sien, déduit de sa profondeur absolue, et le REDÉFINIT avant de le démarrer. 3. Le mien : l'extraction du moteur avait coupé preparer_systeme sur le « return False » de sa boucle, sans son « return True ». La fonction rendait None, donc l'étape échouait SANS RIEN DIRE, et les deux piles étaient cassées. L'essai à blanc ne pouvait pas le voir — il sort avant. Un test d'AST interdit désormais qu'une étape retombe sur None. long_test/ était introuvable hors du menu : une ligne dans CLAUDE.md, trois entrées au CHANGELOG, deux sections au README. --- EN --- Three defects found in one hour by the first real run — which is what an integration test is for. 1. "--setup-host" failed in ZERO seconds on "Unable to locate package qemu-system-x86" though the package exists: the VM had just booted and its lists carried only bookworm-security. The message sent us looking for packages, not for lists. Same remedy as install_proxmox.sh — stop apt-daily, then retry. 2. libvirt's "default" network serves 192.168.122.0/24 at EVERY level. Level 2, whose own address CAME from that network, had its net-start refused: "Network is already in use by interface enp1s0". A guest living inside a network cannot serve the same one. Each level takes its own, derived from its absolute depth, and REDEFINES it before starting it. 3. Mine: extracting the engine had cut preparer_systeme at its loop's "return False", without the final "return True". The function returned None, so the step failed SAYING NOTHING, and both stacks were broken. The dry run could not see it — it exits earlier. An AST test now forbids a step from falling through to None. long_test/ was undiscoverable outside the menu: one line in CLAUDE.md, three CHANGELOG entries, two README sections. Assisted-by: claude-opus-5 (cherry picked from commit e46bad408143f7511a04ffdc6a20efdb785f4b5e)
2.9 KiB
2.9 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
ERPLibre Multi-Version Odoo Platform
Projet
ERPLibre est un fork communautaire d'Odoo Community Edition (OCE) supportant les versions 12 à 18. Version actuelle : 1.6.0 | Licence : AGPL-3.0+ Version Odoo par défaut : 18.0 (support officiel ERPLibre 1.6.0)
Points d'attention pour Claude
- Toujours vérifier la version Odoo active avant de modifier du code (
cat .odoo-version) - Les addons sont dans
addons/et gérés par Google Repo — ne pas modifier la structure des dépôts - Utiliser le venv approprié pour le code Odoo. Son nom porte les DEUX versions
(
.venv.odoo18.0_python3.12.10/bin/python) : le retrouver parls -d .venv.odoo*plutôt que de le composer de tête - Les scripts ERPLibre utilisent
.venv.erplibre/bin/python - Le Makefile principal inclut des fragments depuis
conf/make.*.Makefile - Les fichiers privés vont dans
private/(non versionné) - La DB PostgreSQL par défaut est sur le port 5432, mot de passe admin :
admin - Port Odoo par défaut : 8069, longpolling : 8072
- Pour les commits : suivre le format
[TYPE] description(ex:[FIX],[UPD],[ADD],[REM]) - Pour la documentation : modifier les
.base.md, jamais les.mdou.fr.mddirectement - Outil mmg disponible via
source .venv.erplibre/bin/activate && mmg - Les tests qui créent de VRAIES machines vivent dans
long_test/et non danstest/: le lanceur unitaire balaietest/test_*.pyet doit rester lançable en quelques secondes, même sans virtualisation. Ils durent des heures et se défont par--detruire— voirlong_test/README.md
Core Principles
- Simplicity First: Make every change as simple as possible. Impact minimal code.
- No Laziness: Find root causes. No temporary fixes. Senior developer standards.
- Minimal Impact: Changes should only touch what's necessary. Avoid introducing bugs.
Règles détaillées
Les instructions détaillées sont dans .claude/rules/ :
| Fichier | Contenu |
|---|---|
01-versions.md |
Versions Odoo supportées, où lit-on la correspondance |
04-code-conventions.md |
Où sont les configs de format, conventions Git |
06-code-generator.md |
Génération de modules Odoo |
07-documentation.md |
Interdit : ne pas éditer les .md générés |
08-deployment.md |
Docker, systemd, nginx, SSL, DNS |
09-workflow.md |
Workflow orchestration + task management |
Chargées à la demande (.claude/skills/) :
| Skill | Contenu |
|---|---|
erplibre-commands |
Commandes make et scripts : versions, run, tests, DB, Docker, repo |
erplibre-doc-i18n |
Mode d'emploi mmg (.base.md) et i18n du CLI TODO |
L'arborescence et la liste des venvs ne sont plus documentées : ls et
ls -d .venv.* en donnent l'état réel, la doc dérivait de la réalité.