From 59c4e3857a5a076d3bf437da44cf2a165179bdc7 Mon Sep 17 00:00:00 2001 From: Repo Bot Date: Sun, 19 Oct 2025 12:33:46 +0200 Subject: [PATCH] docs(ipm): add default README.md (English) and cross-link English/French READMEs --- app/ipm/README.md | 69 ++++++++++++++++++++++++++++++++++++++++++++ app/ipm/README_en.md | 2 ++ app/ipm/README_fr.md | 2 ++ 3 files changed, 73 insertions(+) create mode 100644 app/ipm/README.md diff --git a/app/ipm/README.md b/app/ipm/README.md new file mode 100644 index 0000000..27874af --- /dev/null +++ b/app/ipm/README.md @@ -0,0 +1,69 @@ +# IPM native integration (app.ipm) — English (default) + +This is the default README for the `app/ipm` package. It is the English version. + +For the French version, see: [README_fr.md](README_fr.md) + +Short summary +- The `app/ipm` package contains the Python wrapper for the native `refifc` libraries. +- Place Windows DLLs in `app/ipm/lib/windows/` and Linux `.so` files in `app/ipm/lib/linux/`. + +See `README_en.md` for the full English documentation and `README_fr.md` for the French translation. +# IPM native integration (app.ipm) + +Ce dossier contient l'enveloppe Python qui appelle les bibliothèques natives (refifc). + +But +- centraliser le wrapper Python dans `app/ipm` pour que le code applicatif importe depuis `app.ipm.simple_refrig_api`. +- fournir un emplacement clair pour les binaires natifs (DLL pour Windows, .so pour Linux). + +Où placer les binaires +--------------------- +- Windows (local/dev): placez vos DLL dans `app/ipm/lib/windows/`. +- Linux (container/production): placez vos .so dans `app/ipm/lib/linux/`. + +Le wrapper `app/ipm/simple_refrig_api.py` recherche automatiquement, en priorité, le répertoire `app/ipm/lib/` (`windows` ou `linux`) puis retombe sur le répertoire du package si rien n'est trouvé. + +Ne pas committer les binaires +---------------------------- +Les fichiers natifs ne doivent pas être committés dans Git (poids, licence, portabilité). Le dépôt contient une règle `.gitignore` qui exclut `app/ipm/lib/windows/*.dll` et `app/ipm/lib/linux/*.so`. + +Déploiement / Docker +--------------------- +Le Dockerfile doit copier les binaires appropriés dans le répertoire `app/ipm/lib/` au moment du build. Exemple (Linux image): + +```Dockerfile +FROM python:3.12-slim +WORKDIR /app +COPY . /app + +# Copier les libs natives Linux dans le bon dossier +COPY path/to/linlibs/*.so /app/app/ipm/lib/linux/ + +RUN pip install --no-cache-dir -r requirements.txt +CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] +``` + +Pour Windows-based artifacts (si vous buildissez une image Windows ou déployez sur Windows), copiez les DLL dans `app/ipm/lib/windows/`. + +CI/CD +----- +- Stockez les binaires dans un artefact sécurisé (release, storage interne, S3, etc.). +- Lors du pipeline, téléchargez-les et copiez-les dans `app/ipm/lib/` avant l'étape d'image ou de déploiement. + +Test rapide local +----------------- +1. Copier les binaires dans le bon dossier (ex: `app/ipm/lib/windows/refifc.dll`). +2. Lancer un shell Python depuis la racine du projet et tester : + +```powershell +.venv\Scripts\python -c "import app.ipm.simple_refrig_api as s; r=s.Refifc('R290'); print('hsl_px exists', hasattr(r,'hsl_px'))" +``` + +Bonnes pratiques +---------------- +- Ne stockez pas les binaires dans Git. +- Documentez dans votre release notes la provenance et la version exacte des fichiers natifs. +- Préparez un script `scripts/fetch-ipm-libs.sh` (ou équivalent PowerShell) pour automatiser la récupération des binaires dans vos environnements de build. + +Si tu veux, j'ajoute un petit `scripts/` helper pour télécharger/copy automatiquement les binaires depuis un dossier central ou un storage. diff --git a/app/ipm/README_en.md b/app/ipm/README_en.md index cab4647..3a276de 100644 --- a/app/ipm/README_en.md +++ b/app/ipm/README_en.md @@ -32,6 +32,8 @@ Best practices - Avoid committing binaries in Git. - Record the exact origin and version of native binaries in release notes. - Provide small helper scripts (`scripts/copy-ipm-libs.*`) to automate copying binaries into build environments. + +For French documentation see: [README_fr.md](README_fr.md) # IPM native integration (app.ipm) This folder contains the Python wrapper that calls the native refifc libraries. diff --git a/app/ipm/README_fr.md b/app/ipm/README_fr.md index 5c2b928..aab9024 100644 --- a/app/ipm/README_fr.md +++ b/app/ipm/README_fr.md @@ -32,3 +32,5 @@ Bonnes pratiques - Ne stockez pas les binaires dans Git. - Documentez la provenance et la version des fichiers natifs dans vos notes de release. - Préparez un script `scripts/copy-ipm-libs.*` pour automatiser la copie des binaires dans les environnements de build. + +Pour la documentation en anglais, voir : [README_en.md](README_en.md)