This commit is contained in:
Ladebeze66 2025-03-27 14:59:28 +01:00
parent ade575f825
commit 768d1b0e15
79 changed files with 4946 additions and 3370 deletions

View File

@ -0,0 +1,65 @@
# SpecStory Artifacts Directory
This directory is automatically created and maintained by the SpecStory extension to preserve your Cursor composer and chat history.
## What's Here?
- `.specstory/history`: Contains markdown files of your AI coding sessions
- Each file represents a separate chat or composer session
- Files are automatically updated as you work
- `.specstory/cursor_rules_backups`: Contains backups of the `.cursor/rules/derived-cursor-rules.mdc` file
- Backups are automatically created each time the `.cursor/rules/derived-cursor-rules.mdc` file is updated
- You can enable/disable the Cursor Rules feature in the SpecStory settings, it is disabled by default
## Valuable Uses
- Capture: Keep your context window up-to-date when starting new Chat/Composer sessions via @ references
- Search: For previous prompts and code snippets
- Learn: Meta-analyze your patterns and learn from your past experiences
- Derive: Keep Cursor on course with your past decisions by automatically deriving Cursor rules from your AI interactions
## Version Control
We recommend keeping this directory under version control to maintain a history of your AI interactions. However, if you prefer not to version these files, you can exclude them by adding this to your `.gitignore`:
```
.specstory
```
We recommend not keeping the `.specstory/cursor_rules_backups` directory under version control if you are already using git to version the `.cursor/rules` directory, and committing regularly. You can exclude it by adding this to your `.gitignore`:
```
.specstory/cursor_rules_backups
```
## Searching Your Codebase
When searching your codebase in Cursor, search results may include your previous AI coding interactions. To focus solely on your actual code files, you can exclude the AI interaction history from search results.
To exclude AI interaction history:
1. Open the "Find in Files" search in Cursor (Cmd/Ctrl + Shift + F)
2. Navigate to the "files to exclude" section
3. Add the following pattern:
```
.specstory/*
```
This will ensure your searches only return results from your working codebase files.
## Notes
- Auto-save only works when Cursor/sqlite flushes data to disk. This results in a small delay after the AI response is complete before SpecStory can save the history.
- Auto-save does not yet work on remote WSL workspaces.
## Settings
You can control auto-saving behavior in Cursor:
1. Open Cursor → Settings → VS Code Settings (Cmd/Ctrl + ,)
2. Search for "SpecStory"
3. Find "Auto Save" setting to enable/disable
Auto-save occurs when changes are detected in Cursor's sqlite database, or every 2 minutes as a safety net.

136
README.md
View File

@ -1,80 +1,108 @@
# Gestionnaire de Tickets Odoo # Extracteur de Tickets Odoo
## Description Ce script permet d'extraire et de filtrer les données d'un ticket Odoo par son code. Il est complètement autonome et ne dépend pas d'autres fichiers du projet.
Ce projet est un gestionnaire de tickets simplifié pour Odoo, permettant de gérer les tickets de manière efficace. Il inclut des fonctionnalités essentielles pour l'exportation, la recherche et l'extraction d'informations détaillées sur les tickets.
## Fonctionnalités ## Fonctionnalités
1. **Exporter les tickets par projet et/ou étape** : - Extraction des données d'un ticket par son code
- Permet d'exporter les tickets en fonction de critères de projet et d'étape, organisés dans des répertoires dédiés. - Filtrage des messages système et OdooBot
- Nettoyage du HTML dans les messages
2. **Rechercher un ticket par ID** : - Conservation des images importantes
- Récupère les détails d'un ticket spécifique en utilisant son ID. - Extraction des pièces jointes
- Organisation structurée des données exportées
3. **Rechercher un ticket par code** :
- Permet de trouver un ticket en utilisant son code unique (ex: T102558).
4. **Afficher la liste des modèles disponibles** :
- Récupère et affiche tous les modèles disponibles dans Odoo.
5. **Afficher les champs d'un modèle donné** :
- Récupère et affiche les champs d'un modèle spécifique, en filtrant ceux qui ne sont pas exploitables.
6. **Extraire les pièces jointes, messages et informations détaillées d'un ticket** :
- Récupère toutes les pièces jointes, messages, activités et informations de contact associées à un ticket.
- Les informations sont sauvegardées dans des fichiers JSON organisés par ticket.
## Structure du projet
- `main.py` - Point d'entrée principal du programme
- `menu_principal.py` - Gestion du menu principal
- `menu_handlers.py` - Gestionnaires d'actions pour chaque option du menu
- `ticket_manager.py` - Classe principale pour la gestion des tickets et modèles
- `odoo_connection.py` - Gestion de la connexion à l'instance Odoo
- `data_filter.py` - Fonctions pour filtrer et nettoyer les données des tickets //Retiré pour le moment
- `utils.py` - Fonctions utilitaires diverses
- `config.py` - Configuration de l'application (connexion Odoo, chemins d'export, etc.)
## Prérequis ## Prérequis
- Python 3.6 ou supérieur - Python 3.6 ou supérieur
- Package `odoorpc` pour la connexion à Odoo - Accès à une instance Odoo via son API XML-RPC
- Package `bs4` (BeautifulSoup) pour le nettoyage des données HTML
## Installation ## Installation
1. Clonez le dépôt : 1. Clonez ce dépôt ou téléchargez les fichiers
```bash 2. Installez les dépendances :
git clone <URL_DU_DEPOT> ```bash
cd <NOM_DU_DOSSIER> pip install -r requirements.txt
``` ```
2. Installez les dépendances nécessaires (si applicable). ## Configuration
3. Configurez votre connexion Odoo dans le fichier `config.py`. Le script utilise les variables d'environnement suivantes pour la connexion à Odoo :
- `ODOO_HOST` : L'hôte de l'instance Odoo (par défaut : odoo.cbao.fr)
- `ODOO_DB` : Le nom de la base de données (par défaut : production_cbao)
- `ODOO_USER` : Le nom d'utilisateur (par défaut : fernand@cbao.fr)
- `ODOO_PASSWORD` : Le mot de passe
Vous pouvez soit :
1. Modifier ces valeurs directement dans le script
2. Définir ces variables d'environnement avant d'exécuter le script
## Utilisation ## Utilisation
Pour exécuter le gestionnaire de tickets, utilisez la commande suivante : Le script s'utilise en ligne de commande en spécifiant le code du ticket comme argument :
```bash ```bash
python main.py python ticket_extractor.py T12546
``` ```
Suivez les instructions à l'écran pour naviguer dans le menu et utiliser les différentes fonctionnalités. `T12546` est le code du ticket à extraire.
## Exemple d'utilisation ### Format du code de ticket
- Le code doit commencer par la lettre 'T'
- Suivi de chiffres uniquement
- Exemple : T12546, T102558, etc.
### Exporter les tickets d'un projet par étape ### Aide en ligne
Pour voir l'aide du script :
```bash
python ticket_extractor.py --help
```
1. Sélectionner l'option 4 dans le menu ## Structure des données exportées
2. Entrer l'ID du projet (par exemple, "5")
3. Confirmer l'action
4. Les tickets seront exportés dans le répertoire `exported_tickets/project_5_NomDuProjet/`, classés par étape
## Contributions Les données seront extraites dans le dossier `exported_tickets` avec la structure suivante :
```
exported_tickets/
└── ticket_[ID]_[NOM]/
├── ticket_info.json
├── contact_info.json
├── activities.json
├── messages/
│ └── message_[ID]_[DATE].json
├── followers.json
├── attachments_info.json
├── attachments/
│ └── [ID]_[NOM]
└── timesheets.json
```
Les contributions sont les bienvenues ! N'hésitez pas à soumettre des demandes de tirage (pull requests) pour ajouter des fonctionnalités ou corriger des bogues. ## Structure des données
## License ### Messages
- Les messages système et OdooBot sont filtrés
- Le HTML est nettoyé tout en préservant le texte
- Les images importantes sont conservées avec leur description
- Les pièces jointes mentionnées sont identifiées
Ce projet est sous licence MIT. Voir le fichier `LICENSE` pour plus de détails. ### Pièces jointes
- Toutes les pièces jointes sont extraites
- Les métadonnées sont sauvegardées dans `attachments_info.json`
- Les fichiers sont stockés dans le dossier `attachments`
### Informations de contact
- Détails du contact principal
- Coordonnées et adresse
### Activités
- Historique des activités
- Dates et utilisateurs
### Timesheets
- Historique des temps passés
- Utilisateurs et départements
## Notes
- Le script crée automatiquement les dossiers nécessaires
- Les erreurs sont gérées et affichées clairement
- Les données sont sauvegardées au format JSON pour une meilleure lisibilité

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

View File

@ -1,172 +0,0 @@
[
{
"id": 143501,
"name": "Outlook-CBAO - dév",
"mimetype": "image/png",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-CBAO - dév",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143501_Outlook-CBAO - dév"
},
{
"id": 143499,
"name": "Outlook-Descriptio",
"mimetype": "image/jpeg",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-Descriptio",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143499_Outlook-Descriptio"
},
{
"id": 143497,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143497_Outlook-Descriptio.png"
},
{
"id": 143495,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143495_Outlook-Descriptio.png"
},
{
"id": 143493,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143493_Outlook-Descriptio.png"
},
{
"id": 143491,
"name": "Outlook-cuypyicx",
"mimetype": "image/jpeg",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-cuypyicx",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143491_Outlook-cuypyicx"
},
{
"id": 143414,
"name": "image.png",
"mimetype": "image/png",
"create_date": "2025-02-20 13:13:30",
"description": false,
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143414_image.png"
},
{
"id": 143378,
"name": "Outlook-Descriptio",
"mimetype": "image/jpeg",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143378_Outlook-Descriptio"
},
{
"id": 143376,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143376_Outlook-Descriptio.png"
},
{
"id": 143374,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143374_Outlook-Descriptio.png"
},
{
"id": 143372,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143372_Outlook-Descriptio.png"
},
{
"id": 143370,
"name": "Outlook-k20pxmqj",
"mimetype": "image/jpeg",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-k20pxmqj",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143370_Outlook-k20pxmqj"
},
{
"id": 143368,
"name": "Outlook-Descriptio",
"mimetype": "image/jpeg",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143368_Outlook-Descriptio"
},
{
"id": 143366,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143366_Outlook-Descriptio.png"
},
{
"id": 143364,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143364_Outlook-Descriptio.png"
},
{
"id": 143362,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143362_Outlook-Descriptio.png"
},
{
"id": 143360,
"name": "Outlook-nppfhufh",
"mimetype": "image/jpeg",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-nppfhufh",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143360_Outlook-nppfhufh"
}
]

View File

@ -1,15 +0,0 @@
{
"id": 5654,
"name": "Olivier ANTONI",
"email": "Olivier.ANTONI@egis-group.com",
"phone": false,
"mobile": false,
"street": "Le carat 168-170 Avenue Thiers",
"city": "Lyon Cedex 06",
"zip": "69455",
"country_id": [
75,
"France"
],
"comment": ""
}

View File

@ -1,146 +0,0 @@
[
{
"id": 88384,
"partner_id": [
28961,
"Fabien LAFAY"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 28961,
"name": "Fabien LAFAY",
"email": "fabien@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
},
{
"id": 88385,
"partner_id": [
29833,
"backoffice"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 29833,
"name": "backoffice",
"email": "quentin.faivre@cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
},
{
"id": 88404,
"partner_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 5654,
"name": "Olivier ANTONI",
"email": "Olivier.ANTONI@egis-group.com",
"phone": false,
"function": "Laborantin",
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
},
{
"id": 88405,
"partner_id": [
32165,
"Romuald GRUSON"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
}
]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,37 +0,0 @@
{
"id": 225611,
"body": "",
"date": "2025-02-20 09:37:16",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": [],
"author_details": {
"id": 2,
"name": "OdooBot",
"email": "odoobot@example.com",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 16,
"name": "Task Created",
"description": "Task Created",
"default": false
}
]
}

View File

@ -1,37 +0,0 @@
{
"id": 225613,
"body": "",
"date": "2025-02-20 09:37:17",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 2,
"name": "OdooBot",
"email": "odoobot@example.com",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -1,37 +0,0 @@
{
"id": 225614,
"body": "",
"date": "2025-02-20 09:37:17",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 2,
"name": "OdooBot",
"email": "odoobot@example.com",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -1,37 +0,0 @@
{
"id": 225634,
"body": "",
"date": "2025-02-20 13:13:32",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -1,37 +0,0 @@
{
"id": 225635,
"body": "",
"date": "2025-02-20 13:13:34",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -1,40 +0,0 @@
{
"id": 225636,
"body": "",
"date": "2025-02-20 13:13:34",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "notification",
"subtype_id": [
19,
"Stage Changed"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 19,
"name": "Stage Changed",
"description": "Stage changed",
"default": false
}
]
}

View File

@ -1,40 +0,0 @@
{
"id": 225756,
"body": "",
"date": "2025-02-21 15:17:55",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 16,
"name": "Task Created",
"description": "Task Created",
"default": false
}
]
}

View File

@ -1,37 +0,0 @@
{
"id": 227288,
"body": "",
"date": "2025-03-12 08:14:38",
"author_id": [
28961,
"Fabien LAFAY"
],
"email_from": "\"Fabien LAFAY\" <fabien@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 28961,
"name": "Fabien LAFAY",
"email": "fabien@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -1,163 +0,0 @@
{
"id": 10908,
"active": true,
"name": "TR: MAJ BRGlab",
"description": "<p><br></p>",
"sequence": 0,
"stage_id": [
5,
"En attente de résolution"
],
"kanban_state": "normal",
"create_date": "2025-02-20 09:37:13",
"write_date": "2025-03-19 08:35:02",
"date_start": "2025-02-20 09:37:16",
"date_end": false,
"date_assign": "2025-02-20 13:13:32",
"date_deadline": false,
"date_last_stage_update": "2025-02-21 15:17:55",
"project_id": [
3,
"Demandes"
],
"notes": false,
"planned_hours": 0.0,
"user_id": [
32,
"Romuald GRUSON"
],
"partner_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"company_id": [
1,
"CBAO S.A.R.L."
],
"color": 0,
"displayed_image_id": false,
"parent_id": false,
"child_ids": [],
"email_from": "ANTONI Olivier <Olivier.ANTONI@egis-group.com>",
"email_cc": "",
"working_hours_open": 2.379627116111111,
"working_hours_close": 0.0,
"working_days_open": 0.09915112983796297,
"working_days_close": 0.0,
"website_message_ids": [
225765,
225755,
225633,
225612
],
"remaining_hours": 0.0,
"effective_hours": 0.0,
"total_hours_spent": 0.0,
"progress": 0.0,
"subtask_effective_hours": 0.0,
"timesheet_ids": [],
"priority": "0",
"code": "T10929",
"milestone_id": false,
"sale_line_id": false,
"sale_order_id": false,
"billable_type": "no",
"activity_ids": [],
"message_follower_ids": [
88384,
88385,
88404,
88405
],
"message_ids": [
227288,
225765,
225756,
225755,
225636,
225635,
225634,
225633,
225614,
225613,
225612,
225611
],
"message_main_attachment_id": [
143360,
"Outlook-nppfhufh"
],
"failed_message_ids": [],
"rating_ids": [],
"rating_last_value": 0.0,
"access_token": "3307e367-64be-4943-9682-db68a0a1efbd",
"create_uid": [
1,
"OdooBot"
],
"write_uid": [
32,
"Romuald GRUSON"
],
"x_CBAO_windows_maj_ID": false,
"x_CBAO_version_signalement": false,
"x_CBAO_version_correction": false,
"x_CBAO_DateCorrection": false,
"x_CBAO_Scoring_Facilite": 0,
"x_CBAO_Scoring_Importance": 0,
"x_CBAO_Scoring_Urgence": 0,
"x_CBAO_Scoring_Incidence": 0,
"x_CBAO_Scoring_Resultat": 0,
"x_CBAO_InformationsSup": false,
"kanban_state_label": "En cours",
"subtask_planned_hours": 0.0,
"manager_id": [
22,
"Fabien LAFAY"
],
"user_email": "romuald@mail.cbao.fr",
"attachment_ids": [],
"legend_blocked": "Bloquéé",
"legend_done": "Planifiée",
"legend_normal": "En cours",
"subtask_project_id": [
3,
"Demandes"
],
"subtask_count": 0,
"analytic_account_active": true,
"allow_timesheets": true,
"use_milestones": false,
"show_time_control": "start",
"is_project_map_empty": true,
"activity_state": false,
"activity_user_id": false,
"activity_type_id": false,
"activity_date_deadline": false,
"activity_summary": false,
"message_is_follower": false,
"message_unread": false,
"message_unread_counter": 0,
"message_needaction": false,
"message_needaction_counter": 0,
"message_has_error": false,
"message_has_error_counter": 0,
"message_attachment_count": 17,
"rating_last_feedback": false,
"rating_last_image": false,
"rating_count": 0,
"access_url": "/my/task/10908",
"access_warning": "",
"display_name": "[T10929] TR: MAJ BRGlab",
"__last_update": "2025-03-19 08:35:02",
"stage_id_value": "En attente de résolution",
"project_id_value": "Demandes",
"user_id_value": "Romuald GRUSON",
"partner_id_value": "EGIS SA, Olivier ANTONI",
"manager_id_value": "Fabien LAFAY",
"company_id_value": "CBAO S.A.R.L.",
"subtask_project_id_value": "Demandes",
"message_main_attachment_id_value": "Outlook-nppfhufh",
"create_uid_value": "OdooBot",
"write_uid_value": "Romuald GRUSON"
}

View File

@ -1,163 +0,0 @@
{
"id": 10908,
"active": true,
"name": "TR: MAJ BRGlab",
"description": "<p><br></p>",
"sequence": 0,
"stage_id": [
5,
"En attente de résolution"
],
"kanban_state": "normal",
"create_date": "2025-02-20 09:37:13",
"write_date": "2025-03-19 08:35:02",
"date_start": "2025-02-20 09:37:16",
"date_end": false,
"date_assign": "2025-02-20 13:13:32",
"date_deadline": false,
"date_last_stage_update": "2025-02-21 15:17:55",
"project_id": [
3,
"Demandes"
],
"notes": false,
"planned_hours": 0.0,
"user_id": [
32,
"Romuald GRUSON"
],
"partner_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"company_id": [
1,
"CBAO S.A.R.L."
],
"color": 0,
"displayed_image_id": false,
"parent_id": false,
"child_ids": [],
"email_from": "ANTONI Olivier <Olivier.ANTONI@egis-group.com>",
"email_cc": "",
"working_hours_open": 2.379627116111111,
"working_hours_close": 0.0,
"working_days_open": 0.09915112983796297,
"working_days_close": 0.0,
"website_message_ids": [
225765,
225755,
225633,
225612
],
"remaining_hours": 0.0,
"effective_hours": 0.0,
"total_hours_spent": 0.0,
"progress": 0.0,
"subtask_effective_hours": 0.0,
"timesheet_ids": [],
"priority": "0",
"code": "T10929",
"milestone_id": false,
"sale_line_id": false,
"sale_order_id": false,
"billable_type": "no",
"activity_ids": [],
"message_follower_ids": [
88384,
88385,
88404,
88405
],
"message_ids": [
227288,
225765,
225756,
225755,
225636,
225635,
225634,
225633,
225614,
225613,
225612,
225611
],
"message_main_attachment_id": [
143360,
"Outlook-nppfhufh"
],
"failed_message_ids": [],
"rating_ids": [],
"rating_last_value": 0.0,
"access_token": "3307e367-64be-4943-9682-db68a0a1efbd",
"create_uid": [
1,
"OdooBot"
],
"write_uid": [
32,
"Romuald GRUSON"
],
"x_CBAO_windows_maj_ID": false,
"x_CBAO_version_signalement": false,
"x_CBAO_version_correction": false,
"x_CBAO_DateCorrection": false,
"x_CBAO_Scoring_Facilite": 0,
"x_CBAO_Scoring_Importance": 0,
"x_CBAO_Scoring_Urgence": 0,
"x_CBAO_Scoring_Incidence": 0,
"x_CBAO_Scoring_Resultat": 0,
"x_CBAO_InformationsSup": false,
"kanban_state_label": "En cours",
"subtask_planned_hours": 0.0,
"manager_id": [
22,
"Fabien LAFAY"
],
"user_email": "romuald@mail.cbao.fr",
"attachment_ids": [],
"legend_blocked": "Bloquéé",
"legend_done": "Planifiée",
"legend_normal": "En cours",
"subtask_project_id": [
3,
"Demandes"
],
"subtask_count": 0,
"analytic_account_active": true,
"allow_timesheets": true,
"use_milestones": false,
"show_time_control": "start",
"is_project_map_empty": true,
"activity_state": false,
"activity_user_id": false,
"activity_type_id": false,
"activity_date_deadline": false,
"activity_summary": false,
"message_is_follower": false,
"message_unread": false,
"message_unread_counter": 0,
"message_needaction": false,
"message_needaction_counter": 0,
"message_has_error": false,
"message_has_error_counter": 0,
"message_attachment_count": 17,
"rating_last_feedback": false,
"rating_last_image": false,
"rating_count": 0,
"access_url": "/my/task/10908",
"access_warning": "",
"display_name": "[T10929] TR: MAJ BRGlab",
"__last_update": "2025-03-19 08:35:02",
"stage_id_value": "En attente de résolution",
"project_id_value": "Demandes",
"user_id_value": "Romuald GRUSON",
"partner_id_value": "EGIS SA, Olivier ANTONI",
"manager_id_value": "Fabien LAFAY",
"company_id_value": "CBAO S.A.R.L.",
"subtask_project_id_value": "Demandes",
"message_main_attachment_id_value": "Outlook-nppfhufh",
"create_uid_value": "OdooBot",
"write_uid_value": "Romuald GRUSON"
}

View File

@ -1,3 +0,0 @@
[
10908
]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

View File

@ -1,172 +0,0 @@
[
{
"id": 143501,
"name": "Outlook-CBAO - dév",
"mimetype": "image/png",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-CBAO - dév",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143501_Outlook-CBAO - dév"
},
{
"id": 143499,
"name": "Outlook-Descriptio",
"mimetype": "image/jpeg",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-Descriptio",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143499_Outlook-Descriptio"
},
{
"id": 143497,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143497_Outlook-Descriptio.png"
},
{
"id": 143495,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143495_Outlook-Descriptio.png"
},
{
"id": 143493,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143493_Outlook-Descriptio.png"
},
{
"id": 143491,
"name": "Outlook-cuypyicx",
"mimetype": "image/jpeg",
"create_date": "2025-02-21 15:16:35",
"description": "Outlook-cuypyicx",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143491_Outlook-cuypyicx"
},
{
"id": 143414,
"name": "image.png",
"mimetype": "image/png",
"create_date": "2025-02-20 13:13:30",
"description": false,
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143414_image.png"
},
{
"id": 143378,
"name": "Outlook-Descriptio",
"mimetype": "image/jpeg",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143378_Outlook-Descriptio"
},
{
"id": 143376,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143376_Outlook-Descriptio.png"
},
{
"id": 143374,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143374_Outlook-Descriptio.png"
},
{
"id": 143372,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143372_Outlook-Descriptio.png"
},
{
"id": 143370,
"name": "Outlook-k20pxmqj",
"mimetype": "image/jpeg",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-k20pxmqj",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143370_Outlook-k20pxmqj"
},
{
"id": 143368,
"name": "Outlook-Descriptio",
"mimetype": "image/jpeg",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143368_Outlook-Descriptio"
},
{
"id": 143366,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143366_Outlook-Descriptio.png"
},
{
"id": 143364,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143364_Outlook-Descriptio.png"
},
{
"id": 143362,
"name": "Outlook-Descriptio.png",
"mimetype": "image/png",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-Descriptio.png",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143362_Outlook-Descriptio.png"
},
{
"id": 143360,
"name": "Outlook-nppfhufh",
"mimetype": "image/jpeg",
"create_date": "2025-02-20 09:37:13",
"description": "Outlook-nppfhufh",
"res_name": "[T10929] TR: MAJ BRGlab",
"type": "binary",
"file_path": "attachments/143360_Outlook-nppfhufh"
}
]

View File

@ -1,15 +0,0 @@
{
"id": 5654,
"name": "Olivier ANTONI",
"email": "Olivier.ANTONI@egis-group.com",
"phone": false,
"mobile": false,
"street": "Le carat 168-170 Avenue Thiers",
"city": "Lyon Cedex 06",
"zip": "69455",
"country_id": [
75,
"France"
],
"comment": ""
}

View File

@ -1,146 +0,0 @@
[
{
"id": 88384,
"partner_id": [
28961,
"Fabien LAFAY"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 28961,
"name": "Fabien LAFAY",
"email": "fabien@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
},
{
"id": 88385,
"partner_id": [
29833,
"backoffice"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 29833,
"name": "backoffice",
"email": "quentin.faivre@cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
},
{
"id": 88404,
"partner_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 5654,
"name": "Olivier ANTONI",
"email": "Olivier.ANTONI@egis-group.com",
"phone": false,
"function": "Laborantin",
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
},
{
"id": 88405,
"partner_id": [
32165,
"Romuald GRUSON"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
}
]

View File

@ -1,258 +0,0 @@
{
"227288": {
"main_message": {
"id": 227288,
"body": "",
"date": "2025-03-12 08:14:38",
"author_id": [
28961,
"Fabien LAFAY"
],
"email_from": "\"Fabien LAFAY\" <fabien@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
"replies": []
},
"225611": {
"main_message": null,
"replies": [
{
"id": 225765,
"body": "Bonjour , Je tiens à m'excuser pour ce désagrément. J'ai relancé Quentin, qui s'engage à le mettre en ligne au plus vite. Je garde ce ticket ouvert jusqu'à sa mise à disposition afin de suivre votre demande de près. Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit.",
"date": "2025-02-21 15:51:53",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "support@cbao.fr",
"subject": "Re: [T10929] - TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "comment",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": []
},
{
"id": 225756,
"body": "",
"date": "2025-02-21 15:17:55",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": []
},
{
"id": 225755,
"body": "Bonjour, L'essai présent dans notre base de données est une tentative d'essai réalisée par moi qui ne fonctionne pas. En cause le module ZK qui ne gère pas efficacement l'affichage des résultats en puissance de 10. J'avais fait un ticket en ce sens il y a 2 ans et demi à ce sujet. Le ticket avait été marqué comme étant une priorité il y a déjà plusieurs mois, et Quentin devait le passer en mode système en le créant en code. Lors de notre entretien sur Teams le 05/02, Quentin m'avait informé que l'essai serait disponible lors de la mise à jour prévue le lundi 10/02. Pouvez-vous me donner plus d'informations au sujet de cet essai ? Je tiens à préciser qu'après 2 ans et demi d'attente, le critère d'urgence peut paraitre relatif, mais à ce jour nous en avons un besoin impératif. Cordialement, Olivier Antoni Technicien Egis Géotechnique ( 07 88 25 39 98 olivier.antoni@egis -group.com I www.egis.fr Egis Géotechnique 3 rue docteur Schweitzer 38180 Seyssins FRANCE Suivez Egis sur : P Afin de contribuer au respect de l'environnement, merci de n'imprimer ce mail qu'en cas de nécessité De : support@cbao.fr <support@cbao.fr> Envoyé : jeudi 20 février 2025 14:13 À : ANTONI Olivier <Olivier.ANTONI@egis-group.com> Objet : Re: [T10929] - TR: MAJ BRGlab /!\\ Courriel externe - Merci d'être prudent avec les liens et les pièces jointes /!\\ External email - Please be careful with links and attachments /!\\ Bonjour , Je constate que la norme est déjà présente dans votre base de données. Est-ce sur un type de matériau spécifique que vous ne pouvez pas y accéder ? Pouvez-vous préciser le contexte afin que nous puissions identifier l'origine du problème ? Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit. Envoyé par CBAO S.A.R.L. . Ce message et ses pièces jointes peuvent contenir des informations confidentielles ou privilégiées et ne doivent donc pas être diffusés, exploités ou copiés sans autorisation. Si vous avez reçu ce message par erreur, merci de le signaler à l'expéditeur et le détruire ainsi que les pièces jointes. Les messages électroniques étant susceptibles d'altération, Egis décline toute responsabilité si ce message a été altéré, déformé ou falsifié. Merci. This message and its attachments may contain confidential or privileged information that may be protected by law; they should not be distributed, used or copied without authorisation. If you have received this email in error, please notify the sender and delete this message and its attachments. As emails may be altered, Egis is not liable for messages that have been modified, changed or falsified. Thank you.",
"date": "2025-02-21 15:14:30",
"author_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"email_from": "ANTONI Olivier <Olivier.ANTONI@egis-group.com>",
"subject": "RE: [T10929] - TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "email",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
143501,
143499,
143497,
143495,
143493,
143491
]
},
{
"id": 225636,
"body": "",
"date": "2025-02-20 13:13:34",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "notification",
"subtype_id": [
19,
"Stage Changed"
],
"attachment_ids": []
},
{
"id": 225633,
"body": "Bonjour , Je constate que la norme est déjà présente dans votre base de données. Est-ce sur un type de matériau spécifique que vous ne pouvez pas y accéder ? Pouvez-vous préciser le contexte afin que nous puissions identifier l'origine du problème ? Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit.",
"date": "2025-02-20 13:13:30",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "support@cbao.fr",
"subject": "Re: [T10929] - TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "comment",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
143414
]
},
{
"id": 225612,
"body": "Bonjour Quentin, Je constate que l'essai de perméabilité n'a pas été ajouté, penses-tu qu'il puisse l'être rapidement ? Cordialement, Olivier Antoni Technicien Egis Géotechnique ( 07 88 25 39 98 olivier.antoni@egis -group.com I www.egis.fr Egis Géotechnique 3 rue docteur Schweitzer 38180 Seyssins FRANCE Suivez Egis sur : P Afin de contribuer au respect de l'environnement, merci de n'imprimer ce mail qu'en cas de nécessité De : ANTONI Olivier <Olivier.ANTONI@egis-group.com> Envoyé : lundi 17 février 2025 11:23 À : Quentin Faivre <quentin.faivre@cbao.fr> Objet : MAJ BRGlab Salut Quentin, Est-ce que tu as pu faire la mise à jour de BRGLab, avec notamment l'ajout de l'essai de perméabilité (NF EN ISO 17892-11) ? Cordialement, Olivier. Olivier Antoni Technicien Egis Géotechnique ( 07 88 25 39 98 olivier.antoni@egis -group.com I www.egis.fr Egis Géotechnique 3 rue docteur Schweitzer 38180 Seyssins FRANCE Suivez Egis sur : P Afin de contribuer au respect de l'environnement, merci de n'imprimer ce mail qu'en cas de nécessité Ce message et ses pièces jointes peuvent contenir des informations confidentielles ou privilégiées et ne doivent donc pas être diffusés, exploités ou copiés sans autorisation. Si vous avez reçu ce message par erreur, merci de le signaler à l'expéditeur et le détruire ainsi que les pièces jointes. Les messages électroniques étant susceptibles d'altération, Egis décline toute responsabilité si ce message a été altéré, déformé ou falsifié. Merci. This message and its attachments may contain confidential or privileged information that may be protected by law; they should not be distributed, used or copied without authorisation. If you have received this email in error, please notify the sender and delete this message and its attachments. As emails may be altered, Egis is not liable for messages that have been modified, changed or falsified. Thank you.",
"date": "2025-02-20 09:36:33",
"author_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"email_from": "ANTONI Olivier <Olivier.ANTONI@egis-group.com>",
"subject": "TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "email",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
143378,
143376,
143374,
143372,
143370,
143368,
143366,
143364,
143362,
143360
]
}
]
},
"225635": {
"main_message": {
"id": 225635,
"body": "",
"date": "2025-02-20 13:13:34",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
"replies": []
},
"225634": {
"main_message": {
"id": 225634,
"body": "",
"date": "2025-02-20 13:13:32",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
"replies": []
},
"225614": {
"main_message": {
"id": 225614,
"body": "",
"date": "2025-02-20 09:37:17",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
"replies": []
},
"225613": {
"main_message": {
"id": 225613,
"body": "",
"date": "2025-02-20 09:37:17",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
"replies": []
}
}

View File

@ -1,256 +0,0 @@
[
{
"id": 227288,
"body": "",
"date": "2025-03-12 08:14:38",
"author_id": [
28961,
"Fabien LAFAY"
],
"email_from": "\"Fabien LAFAY\" <fabien@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
{
"id": 225765,
"body": "Bonjour , Je tiens à m'excuser pour ce désagrément. J'ai relancé Quentin, qui s'engage à le mettre en ligne au plus vite. Je garde ce ticket ouvert jusqu'à sa mise à disposition afin de suivre votre demande de près. Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit.",
"date": "2025-02-21 15:51:53",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "support@cbao.fr",
"subject": "Re: [T10929] - TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "comment",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": []
},
{
"id": 225756,
"body": "",
"date": "2025-02-21 15:17:55",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": []
},
{
"id": 225755,
"body": "Bonjour, L'essai présent dans notre base de données est une tentative d'essai réalisée par moi qui ne fonctionne pas. En cause le module ZK qui ne gère pas efficacement l'affichage des résultats en puissance de 10. J'avais fait un ticket en ce sens il y a 2 ans et demi à ce sujet. Le ticket avait été marqué comme étant une priorité il y a déjà plusieurs mois, et Quentin devait le passer en mode système en le créant en code. Lors de notre entretien sur Teams le 05/02, Quentin m'avait informé que l'essai serait disponible lors de la mise à jour prévue le lundi 10/02. Pouvez-vous me donner plus d'informations au sujet de cet essai ? Je tiens à préciser qu'après 2 ans et demi d'attente, le critère d'urgence peut paraitre relatif, mais à ce jour nous en avons un besoin impératif. Cordialement, Olivier Antoni Technicien Egis Géotechnique ( 07 88 25 39 98 olivier.antoni@egis -group.com I www.egis.fr Egis Géotechnique 3 rue docteur Schweitzer 38180 Seyssins FRANCE Suivez Egis sur : P Afin de contribuer au respect de l'environnement, merci de n'imprimer ce mail qu'en cas de nécessité De : support@cbao.fr <support@cbao.fr> Envoyé : jeudi 20 février 2025 14:13 À : ANTONI Olivier <Olivier.ANTONI@egis-group.com> Objet : Re: [T10929] - TR: MAJ BRGlab /!\\ Courriel externe - Merci d'être prudent avec les liens et les pièces jointes /!\\ External email - Please be careful with links and attachments /!\\ Bonjour , Je constate que la norme est déjà présente dans votre base de données. Est-ce sur un type de matériau spécifique que vous ne pouvez pas y accéder ? Pouvez-vous préciser le contexte afin que nous puissions identifier l'origine du problème ? Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit. Envoyé par CBAO S.A.R.L. . Ce message et ses pièces jointes peuvent contenir des informations confidentielles ou privilégiées et ne doivent donc pas être diffusés, exploités ou copiés sans autorisation. Si vous avez reçu ce message par erreur, merci de le signaler à l'expéditeur et le détruire ainsi que les pièces jointes. Les messages électroniques étant susceptibles d'altération, Egis décline toute responsabilité si ce message a été altéré, déformé ou falsifié. Merci. This message and its attachments may contain confidential or privileged information that may be protected by law; they should not be distributed, used or copied without authorisation. If you have received this email in error, please notify the sender and delete this message and its attachments. As emails may be altered, Egis is not liable for messages that have been modified, changed or falsified. Thank you.",
"date": "2025-02-21 15:14:30",
"author_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"email_from": "ANTONI Olivier <Olivier.ANTONI@egis-group.com>",
"subject": "RE: [T10929] - TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "email",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
143501,
143499,
143497,
143495,
143493,
143491
]
},
{
"id": 225636,
"body": "",
"date": "2025-02-20 13:13:34",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "notification",
"subtype_id": [
19,
"Stage Changed"
],
"attachment_ids": []
},
{
"id": 225635,
"body": "",
"date": "2025-02-20 13:13:34",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
{
"id": 225634,
"body": "",
"date": "2025-02-20 13:13:32",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
{
"id": 225633,
"body": "Bonjour , Je constate que la norme est déjà présente dans votre base de données. Est-ce sur un type de matériau spécifique que vous ne pouvez pas y accéder ? Pouvez-vous préciser le contexte afin que nous puissions identifier l'origine du problème ? Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit.",
"date": "2025-02-20 13:13:30",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "support@cbao.fr",
"subject": "Re: [T10929] - TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "comment",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
143414
]
},
{
"id": 225614,
"body": "",
"date": "2025-02-20 09:37:17",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
{
"id": 225613,
"body": "",
"date": "2025-02-20 09:37:17",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
{
"id": 225612,
"body": "Bonjour Quentin, Je constate que l'essai de perméabilité n'a pas été ajouté, penses-tu qu'il puisse l'être rapidement ? Cordialement, Olivier Antoni Technicien Egis Géotechnique ( 07 88 25 39 98 olivier.antoni@egis -group.com I www.egis.fr Egis Géotechnique 3 rue docteur Schweitzer 38180 Seyssins FRANCE Suivez Egis sur : P Afin de contribuer au respect de l'environnement, merci de n'imprimer ce mail qu'en cas de nécessité De : ANTONI Olivier <Olivier.ANTONI@egis-group.com> Envoyé : lundi 17 février 2025 11:23 À : Quentin Faivre <quentin.faivre@cbao.fr> Objet : MAJ BRGlab Salut Quentin, Est-ce que tu as pu faire la mise à jour de BRGLab, avec notamment l'ajout de l'essai de perméabilité (NF EN ISO 17892-11) ? Cordialement, Olivier. Olivier Antoni Technicien Egis Géotechnique ( 07 88 25 39 98 olivier.antoni@egis -group.com I www.egis.fr Egis Géotechnique 3 rue docteur Schweitzer 38180 Seyssins FRANCE Suivez Egis sur : P Afin de contribuer au respect de l'environnement, merci de n'imprimer ce mail qu'en cas de nécessité Ce message et ses pièces jointes peuvent contenir des informations confidentielles ou privilégiées et ne doivent donc pas être diffusés, exploités ou copiés sans autorisation. Si vous avez reçu ce message par erreur, merci de le signaler à l'expéditeur et le détruire ainsi que les pièces jointes. Les messages électroniques étant susceptibles d'altération, Egis décline toute responsabilité si ce message a été altéré, déformé ou falsifié. Merci. This message and its attachments may contain confidential or privileged information that may be protected by law; they should not be distributed, used or copied without authorisation. If you have received this email in error, please notify the sender and delete this message and its attachments. As emails may be altered, Egis is not liable for messages that have been modified, changed or falsified. Thank you.",
"date": "2025-02-20 09:36:33",
"author_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"email_from": "ANTONI Olivier <Olivier.ANTONI@egis-group.com>",
"subject": "TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "email",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
143378,
143376,
143374,
143372,
143370,
143368,
143366,
143364,
143362,
143360
]
},
{
"id": 225611,
"body": "",
"date": "2025-02-20 09:37:16",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": []
}
]

View File

@ -1,37 +0,0 @@
{
"id": 225611,
"body": "",
"date": "2025-02-20 09:37:16",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": [],
"author_details": {
"id": 2,
"name": "OdooBot",
"email": "odoobot@example.com",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 16,
"name": "Task Created",
"description": "Task Created",
"default": false
}
]
}

View File

@ -1,51 +0,0 @@
{
"id": 225612,
"body": "Bonjour Quentin, Je constate que l'essai de perméabilité n'a pas été ajouté, penses-tu qu'il puisse l'être rapidement ? Cordialement, Olivier Antoni Technicien Egis Géotechnique ( 07 88 25 39 98 olivier.antoni@egis -group.com I www.egis.fr Egis Géotechnique 3 rue docteur Schweitzer 38180 Seyssins FRANCE Suivez Egis sur : P Afin de contribuer au respect de l'environnement, merci de n'imprimer ce mail qu'en cas de nécessité De : ANTONI Olivier <Olivier.ANTONI@egis-group.com> Envoyé : lundi 17 février 2025 11:23 À : Quentin Faivre <quentin.faivre@cbao.fr> Objet : MAJ BRGlab Salut Quentin, Est-ce que tu as pu faire la mise à jour de BRGLab, avec notamment l'ajout de l'essai de perméabilité (NF EN ISO 17892-11) ? Cordialement, Olivier. Olivier Antoni Technicien Egis Géotechnique ( 07 88 25 39 98 olivier.antoni@egis -group.com I www.egis.fr Egis Géotechnique 3 rue docteur Schweitzer 38180 Seyssins FRANCE Suivez Egis sur : P Afin de contribuer au respect de l'environnement, merci de n'imprimer ce mail qu'en cas de nécessité Ce message et ses pièces jointes peuvent contenir des informations confidentielles ou privilégiées et ne doivent donc pas être diffusés, exploités ou copiés sans autorisation. Si vous avez reçu ce message par erreur, merci de le signaler à l'expéditeur et le détruire ainsi que les pièces jointes. Les messages électroniques étant susceptibles d'altération, Egis décline toute responsabilité si ce message a été altéré, déformé ou falsifié. Merci. This message and its attachments may contain confidential or privileged information that may be protected by law; they should not be distributed, used or copied without authorisation. If you have received this email in error, please notify the sender and delete this message and its attachments. As emails may be altered, Egis is not liable for messages that have been modified, changed or falsified. Thank you.",
"date": "2025-02-20 09:36:33",
"author_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"email_from": "ANTONI Olivier <Olivier.ANTONI@egis-group.com>",
"subject": "TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "email",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
143378,
143376,
143374,
143372,
143370,
143368,
143366,
143364,
143362,
143360
],
"author_details": {
"id": 5654,
"name": "Olivier ANTONI",
"email": "Olivier.ANTONI@egis-group.com",
"phone": false,
"function": "Laborantin",
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
}
]
}

View File

@ -1,37 +0,0 @@
{
"id": 225613,
"body": "",
"date": "2025-02-20 09:37:17",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 2,
"name": "OdooBot",
"email": "odoobot@example.com",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -1,37 +0,0 @@
{
"id": 225614,
"body": "",
"date": "2025-02-20 09:37:17",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 2,
"name": "OdooBot",
"email": "odoobot@example.com",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -1,42 +0,0 @@
{
"id": 225633,
"body": "Bonjour , Je constate que la norme est déjà présente dans votre base de données. Est-ce sur un type de matériau spécifique que vous ne pouvez pas y accéder ? Pouvez-vous préciser le contexte afin que nous puissions identifier l'origine du problème ? Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit.",
"date": "2025-02-20 13:13:30",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "support@cbao.fr",
"subject": "Re: [T10929] - TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "comment",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
143414
],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
}
]
}

View File

@ -1,37 +0,0 @@
{
"id": 225634,
"body": "",
"date": "2025-02-20 13:13:32",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -1,37 +0,0 @@
{
"id": 225635,
"body": "",
"date": "2025-02-20 13:13:34",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -1,40 +0,0 @@
{
"id": 225636,
"body": "",
"date": "2025-02-20 13:13:34",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "notification",
"subtype_id": [
19,
"Stage Changed"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 19,
"name": "Stage Changed",
"description": "Stage changed",
"default": false
}
]
}

View File

@ -1,47 +0,0 @@
{
"id": 225755,
"body": "Bonjour, L'essai présent dans notre base de données est une tentative d'essai réalisée par moi qui ne fonctionne pas. En cause le module ZK qui ne gère pas efficacement l'affichage des résultats en puissance de 10. J'avais fait un ticket en ce sens il y a 2 ans et demi à ce sujet. Le ticket avait été marqué comme étant une priorité il y a déjà plusieurs mois, et Quentin devait le passer en mode système en le créant en code. Lors de notre entretien sur Teams le 05/02, Quentin m'avait informé que l'essai serait disponible lors de la mise à jour prévue le lundi 10/02. Pouvez-vous me donner plus d'informations au sujet de cet essai ? Je tiens à préciser qu'après 2 ans et demi d'attente, le critère d'urgence peut paraitre relatif, mais à ce jour nous en avons un besoin impératif. Cordialement, Olivier Antoni Technicien Egis Géotechnique ( 07 88 25 39 98 olivier.antoni@egis -group.com I www.egis.fr Egis Géotechnique 3 rue docteur Schweitzer 38180 Seyssins FRANCE Suivez Egis sur : P Afin de contribuer au respect de l'environnement, merci de n'imprimer ce mail qu'en cas de nécessité De : support@cbao.fr <support@cbao.fr> Envoyé : jeudi 20 février 2025 14:13 À : ANTONI Olivier <Olivier.ANTONI@egis-group.com> Objet : Re: [T10929] - TR: MAJ BRGlab /!\\ Courriel externe - Merci d'être prudent avec les liens et les pièces jointes /!\\ External email - Please be careful with links and attachments /!\\ Bonjour , Je constate que la norme est déjà présente dans votre base de données. Est-ce sur un type de matériau spécifique que vous ne pouvez pas y accéder ? Pouvez-vous préciser le contexte afin que nous puissions identifier l'origine du problème ? Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit. Envoyé par CBAO S.A.R.L. . Ce message et ses pièces jointes peuvent contenir des informations confidentielles ou privilégiées et ne doivent donc pas être diffusés, exploités ou copiés sans autorisation. Si vous avez reçu ce message par erreur, merci de le signaler à l'expéditeur et le détruire ainsi que les pièces jointes. Les messages électroniques étant susceptibles d'altération, Egis décline toute responsabilité si ce message a été altéré, déformé ou falsifié. Merci. This message and its attachments may contain confidential or privileged information that may be protected by law; they should not be distributed, used or copied without authorisation. If you have received this email in error, please notify the sender and delete this message and its attachments. As emails may be altered, Egis is not liable for messages that have been modified, changed or falsified. Thank you.",
"date": "2025-02-21 15:14:30",
"author_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"email_from": "ANTONI Olivier <Olivier.ANTONI@egis-group.com>",
"subject": "RE: [T10929] - TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "email",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
143501,
143499,
143497,
143495,
143493,
143491
],
"author_details": {
"id": 5654,
"name": "Olivier ANTONI",
"email": "Olivier.ANTONI@egis-group.com",
"phone": false,
"function": "Laborantin",
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
}
]
}

View File

@ -1,40 +0,0 @@
{
"id": 225756,
"body": "",
"date": "2025-02-21 15:17:55",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 16,
"name": "Task Created",
"description": "Task Created",
"default": false
}
]
}

View File

@ -1,40 +0,0 @@
{
"id": 225765,
"body": "Bonjour , Je tiens à m'excuser pour ce désagrément. J'ai relancé Quentin, qui s'engage à le mettre en ligne au plus vite. Je garde ce ticket ouvert jusqu'à sa mise à disposition afin de suivre votre demande de près. Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit.",
"date": "2025-02-21 15:51:53",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "support@cbao.fr",
"subject": "Re: [T10929] - TR: MAJ BRGlab",
"parent_id": [
225611,
"[T10929] TR: MAJ BRGlab"
],
"message_type": "comment",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
}
]
}

View File

@ -1,37 +0,0 @@
{
"id": 227288,
"body": "",
"date": "2025-03-12 08:14:38",
"author_id": [
28961,
"Fabien LAFAY"
],
"email_from": "\"Fabien LAFAY\" <fabien@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 28961,
"name": "Fabien LAFAY",
"email": "fabien@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -1,163 +0,0 @@
{
"id": 10908,
"active": true,
"name": "TR: MAJ BRGlab",
"description": "<p><br></p>",
"sequence": 0,
"stage_id": [
5,
"En attente de résolution"
],
"kanban_state": "normal",
"create_date": "2025-02-20 09:37:13",
"write_date": "2025-03-19 08:35:02",
"date_start": "2025-02-20 09:37:16",
"date_end": false,
"date_assign": "2025-02-20 13:13:32",
"date_deadline": false,
"date_last_stage_update": "2025-02-21 15:17:55",
"project_id": [
3,
"Demandes"
],
"notes": false,
"planned_hours": 0.0,
"user_id": [
32,
"Romuald GRUSON"
],
"partner_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"company_id": [
1,
"CBAO S.A.R.L."
],
"color": 0,
"displayed_image_id": false,
"parent_id": false,
"child_ids": [],
"email_from": "ANTONI Olivier <Olivier.ANTONI@egis-group.com>",
"email_cc": "",
"working_hours_open": 2.379627116111111,
"working_hours_close": 0.0,
"working_days_open": 0.09915112983796297,
"working_days_close": 0.0,
"website_message_ids": [
225765,
225755,
225633,
225612
],
"remaining_hours": 0.0,
"effective_hours": 0.0,
"total_hours_spent": 0.0,
"progress": 0.0,
"subtask_effective_hours": 0.0,
"timesheet_ids": [],
"priority": "0",
"code": "T10929",
"milestone_id": false,
"sale_line_id": false,
"sale_order_id": false,
"billable_type": "no",
"activity_ids": [],
"message_follower_ids": [
88384,
88385,
88404,
88405
],
"message_ids": [
227288,
225765,
225756,
225755,
225636,
225635,
225634,
225633,
225614,
225613,
225612,
225611
],
"message_main_attachment_id": [
143360,
"Outlook-nppfhufh"
],
"failed_message_ids": [],
"rating_ids": [],
"rating_last_value": 0.0,
"access_token": "3307e367-64be-4943-9682-db68a0a1efbd",
"create_uid": [
1,
"OdooBot"
],
"write_uid": [
32,
"Romuald GRUSON"
],
"x_CBAO_windows_maj_ID": false,
"x_CBAO_version_signalement": false,
"x_CBAO_version_correction": false,
"x_CBAO_DateCorrection": false,
"x_CBAO_Scoring_Facilite": 0,
"x_CBAO_Scoring_Importance": 0,
"x_CBAO_Scoring_Urgence": 0,
"x_CBAO_Scoring_Incidence": 0,
"x_CBAO_Scoring_Resultat": 0,
"x_CBAO_InformationsSup": false,
"kanban_state_label": "En cours",
"subtask_planned_hours": 0.0,
"manager_id": [
22,
"Fabien LAFAY"
],
"user_email": "romuald@mail.cbao.fr",
"attachment_ids": [],
"legend_blocked": "Bloquéé",
"legend_done": "Planifiée",
"legend_normal": "En cours",
"subtask_project_id": [
3,
"Demandes"
],
"subtask_count": 0,
"analytic_account_active": true,
"allow_timesheets": true,
"use_milestones": false,
"show_time_control": "start",
"is_project_map_empty": true,
"activity_state": false,
"activity_user_id": false,
"activity_type_id": false,
"activity_date_deadline": false,
"activity_summary": false,
"message_is_follower": false,
"message_unread": false,
"message_unread_counter": 0,
"message_needaction": false,
"message_needaction_counter": 0,
"message_has_error": false,
"message_has_error_counter": 0,
"message_attachment_count": 17,
"rating_last_feedback": false,
"rating_last_image": false,
"rating_count": 0,
"access_url": "/my/task/10908",
"access_warning": "",
"display_name": "[T10929] TR: MAJ BRGlab",
"__last_update": "2025-03-19 08:35:02",
"stage_id_value": "En attente de résolution",
"project_id_value": "Demandes",
"user_id_value": "Romuald GRUSON",
"partner_id_value": "EGIS SA, Olivier ANTONI",
"manager_id_value": "Fabien LAFAY",
"company_id_value": "CBAO S.A.R.L.",
"subtask_project_id_value": "Demandes",
"message_main_attachment_id_value": "Outlook-nppfhufh",
"create_uid_value": "OdooBot",
"write_uid_value": "Romuald GRUSON"
}

View File

@ -1,163 +0,0 @@
{
"id": 10908,
"active": true,
"name": "TR: MAJ BRGlab",
"description": "<p><br></p>",
"sequence": 0,
"stage_id": [
5,
"En attente de résolution"
],
"kanban_state": "normal",
"create_date": "2025-02-20 09:37:13",
"write_date": "2025-03-19 08:35:02",
"date_start": "2025-02-20 09:37:16",
"date_end": false,
"date_assign": "2025-02-20 13:13:32",
"date_deadline": false,
"date_last_stage_update": "2025-02-21 15:17:55",
"project_id": [
3,
"Demandes"
],
"notes": false,
"planned_hours": 0.0,
"user_id": [
32,
"Romuald GRUSON"
],
"partner_id": [
5654,
"EGIS SA, Olivier ANTONI"
],
"company_id": [
1,
"CBAO S.A.R.L."
],
"color": 0,
"displayed_image_id": false,
"parent_id": false,
"child_ids": [],
"email_from": "ANTONI Olivier <Olivier.ANTONI@egis-group.com>",
"email_cc": "",
"working_hours_open": 2.379627116111111,
"working_hours_close": 0.0,
"working_days_open": 0.09915112983796297,
"working_days_close": 0.0,
"website_message_ids": [
225765,
225755,
225633,
225612
],
"remaining_hours": 0.0,
"effective_hours": 0.0,
"total_hours_spent": 0.0,
"progress": 0.0,
"subtask_effective_hours": 0.0,
"timesheet_ids": [],
"priority": "0",
"code": "T10929",
"milestone_id": false,
"sale_line_id": false,
"sale_order_id": false,
"billable_type": "no",
"activity_ids": [],
"message_follower_ids": [
88384,
88385,
88404,
88405
],
"message_ids": [
227288,
225765,
225756,
225755,
225636,
225635,
225634,
225633,
225614,
225613,
225612,
225611
],
"message_main_attachment_id": [
143360,
"Outlook-nppfhufh"
],
"failed_message_ids": [],
"rating_ids": [],
"rating_last_value": 0.0,
"access_token": "3307e367-64be-4943-9682-db68a0a1efbd",
"create_uid": [
1,
"OdooBot"
],
"write_uid": [
32,
"Romuald GRUSON"
],
"x_CBAO_windows_maj_ID": false,
"x_CBAO_version_signalement": false,
"x_CBAO_version_correction": false,
"x_CBAO_DateCorrection": false,
"x_CBAO_Scoring_Facilite": 0,
"x_CBAO_Scoring_Importance": 0,
"x_CBAO_Scoring_Urgence": 0,
"x_CBAO_Scoring_Incidence": 0,
"x_CBAO_Scoring_Resultat": 0,
"x_CBAO_InformationsSup": false,
"kanban_state_label": "En cours",
"subtask_planned_hours": 0.0,
"manager_id": [
22,
"Fabien LAFAY"
],
"user_email": "romuald@mail.cbao.fr",
"attachment_ids": [],
"legend_blocked": "Bloquéé",
"legend_done": "Planifiée",
"legend_normal": "En cours",
"subtask_project_id": [
3,
"Demandes"
],
"subtask_count": 0,
"analytic_account_active": true,
"allow_timesheets": true,
"use_milestones": false,
"show_time_control": "start",
"is_project_map_empty": true,
"activity_state": false,
"activity_user_id": false,
"activity_type_id": false,
"activity_date_deadline": false,
"activity_summary": false,
"message_is_follower": false,
"message_unread": false,
"message_unread_counter": 0,
"message_needaction": false,
"message_needaction_counter": 0,
"message_has_error": false,
"message_has_error_counter": 0,
"message_attachment_count": 17,
"rating_last_feedback": false,
"rating_last_image": false,
"rating_count": 0,
"access_url": "/my/task/10908",
"access_warning": "",
"display_name": "[T10929] TR: MAJ BRGlab",
"__last_update": "2025-03-19 08:35:02",
"stage_id_value": "En attente de résolution",
"project_id_value": "Demandes",
"user_id_value": "Romuald GRUSON",
"partner_id_value": "EGIS SA, Olivier ANTONI",
"manager_id_value": "Fabien LAFAY",
"company_id_value": "CBAO S.A.R.L.",
"subtask_project_id_value": "Demandes",
"message_main_attachment_id_value": "Outlook-nppfhufh",
"create_uid_value": "OdooBot",
"write_uid_value": "Romuald GRUSON"
}

View File

@ -1,3 +0,0 @@
[
10908
]

2
requirements.txt Normal file
View File

@ -0,0 +1,2 @@
odoorpc>=0.16.0
beautifulsoup4>=4.12.0

535
ticket_extractor.py Normal file
View File

@ -0,0 +1,535 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import json
import base64
import re
import html
import argparse
from typing import Dict, List, Any, Optional
from bs4 import BeautifulSoup
import odoorpc
from datetime import datetime
# Configuration Odoo
ODOO_HOST = os.getenv('ODOO_HOST', 'odoo.cbao.fr')
ODOO_DB = os.getenv('ODOO_DB', 'production_cbao')
ODOO_USER = os.getenv('ODOO_USER', 'fernand@cbao.fr')
ODOO_PASSWORD = os.getenv('ODOO_PASSWORD', 'Lestat66!')
# Configuration des répertoires
EXPORT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "exported_tickets")
FILTERED_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "filtered_tickets")
# Créer les répertoires nécessaires
os.makedirs(EXPORT_DIR, exist_ok=True)
os.makedirs(FILTERED_DIR, exist_ok=True)
class OdooConnection:
"""Gère la connexion à l'instance Odoo"""
def __init__(self):
self.odoo = None
self.connected = False
def connect(self):
"""Établit la connexion à Odoo"""
try:
self.odoo = odoorpc.ODOO(ODOO_HOST, port=443, protocol='jsonrpc+ssl')
print(f"Connexion réussie à {ODOO_HOST}")
self.odoo.login(ODOO_DB, ODOO_USER, ODOO_PASSWORD)
print(f"Authentifié en tant que {ODOO_USER}")
self.connected = True
return True
except odoorpc.error.RPCError as e:
print(f"Erreur RPC Odoo : {e}")
return False
except Exception as e:
print(f"Erreur inattendue : {e}")
return False
def get_odoo_instance(self):
"""Retourne l'instance Odoo connectée"""
if not self.connected:
self.connect()
return self.odoo
class TicketExtractor:
"""Classe pour extraire et filtrer les tickets Odoo"""
def __init__(self):
"""Initialise l'extracteur de tickets"""
self.conn = OdooConnection()
self.odoo = self.conn.get_odoo_instance()
self.model_name = "project.task"
def _ensure_connection(self):
"""Vérifie et établit la connexion si nécessaire"""
if not self.odoo:
self.odoo = self.conn.get_odoo_instance()
return self.odoo is not None
def _safe_execute(self, model, method, *args):
"""
Exécute une méthode Odoo en toute sécurité via odoorpc.
Vérifie la connexion avant d'exécuter.
"""
if not self._ensure_connection():
print("Connexion Odoo indisponible.")
return None
try:
return self.odoo.execute(model, method, *args)
except odoorpc.error.RPCError as e:
print(f"Erreur RPC lors de '{method}' sur '{model}': {e}")
return None
except Exception as e:
print(f"Erreur inattendue lors de '{method}' sur '{model}': {e}")
return None
def get_ticket_by_code(self, ticket_code: str) -> Optional[Dict[str, Any]]:
"""
Récupère un ticket directement par son code.
Args:
ticket_code: Le code du ticket à rechercher
Returns:
Les données du ticket ou None si non trouvé
"""
# Rechercher le ticket par code
domain = [('code', '=', ticket_code)]
ticket_ids = self._safe_execute(self.model_name, 'search', domain, 0, 1)
if not ticket_ids:
print(f"Aucun ticket trouvé avec le code '{ticket_code}'")
return None
# Définir les champs à récupérer
fields_to_read = [
'id', 'name', 'description', 'code', 'stage_id', 'project_id',
'partner_id', 'user_id', 'date_start', 'date_end', 'date_assign',
'date_deadline', 'date_last_stage_update', 'create_date', 'write_date',
'notes', 'planned_hours', 'remaining_hours', 'effective_hours',
'total_hours_spent', 'progress', 'priority', 'color', 'email_from',
'email_cc', 'working_hours_open', 'working_hours_close',
'working_days_open', 'working_days_close', 'website_message_ids',
'message_follower_ids', 'message_ids', 'message_main_attachment_id',
'failed_message_ids', 'rating_ids', 'rating_last_value', 'access_token',
'activity_ids', 'timesheet_ids', 'milestone_id', 'sale_line_id',
'sale_order_id', 'billable_type', 'parent_id', 'child_ids'
]
# Récupérer les données du ticket
ticket_data = self._safe_execute(self.model_name, 'read', ticket_ids[0], fields_to_read)
if not ticket_data:
print(f"Impossible de récupérer les données du ticket {ticket_code}")
return None
return self.resolve_relational_fields(ticket_data[0])
def resolve_relational_fields(self, ticket: Dict[str, Any]) -> Dict[str, Any]:
"""
Résout les champs relationnels du ticket.
Args:
ticket: Les données du ticket
Returns:
Les données du ticket avec les champs relationnels résolus
"""
fields_info = self._safe_execute(self.model_name, 'fields_get', [], ['type'])
for field, info in fields_info.items():
if info.get("type") == "many2one" and isinstance(ticket.get(field), list):
ticket[f"{field}_value"] = ticket[field][1] if len(ticket[field]) > 1 else None
return ticket
def is_odoobot_author(self, message: Dict[str, Any]) -> bool:
"""
Vérifie si l'auteur du message est OdooBot ou un autre système.
Args:
message: Le message à vérifier
Returns:
True si le message provient d'OdooBot, False sinon
"""
# Vérifier le nom de l'auteur
if 'author_id' in message and isinstance(message['author_id'], list) and len(message['author_id']) > 1:
author_name = message['author_id'][1].lower()
if 'odoobot' in author_name or 'bot' in author_name or 'système' in author_name:
return True
# Vérifier le type de message
if message.get('message_type') == 'notification':
return True
# Vérifier le sous-type du message
if 'subtype_id' in message and isinstance(message['subtype_id'], list) and len(message['subtype_id']) > 1:
subtype = message['subtype_id'][1].lower()
if 'notification' in subtype or 'system' in subtype:
return True
# Vérifier le contenu du message
if 'body' in message and isinstance(message['body'], str):
body = message['body'].lower()
system_patterns = [
'assigné à', 'étape changée', 'créé automatiquement',
'assigned to', 'stage changed', 'automatically created',
'updated', 'mis à jour', 'a modifié', 'changed'
]
for pattern in system_patterns:
if pattern in body:
return True
return False
def is_important_image(self, tag, message_text: str) -> bool:
"""
Détermine si une image est importante ou s'il s'agit d'un logo/signature.
Args:
tag: La balise d'image à analyser
message_text: Le texte complet du message pour contexte
Returns:
True si l'image semble importante, False sinon
"""
# Vérifier les attributs de l'image
src = tag.get('src', '')
alt = tag.get('alt', '')
title = tag.get('title', '')
css_class = tag.get('class', '')
# Patterns pour les images inutiles
useless_img_patterns = [
'logo', 'signature', 'outlook', 'footer', 'header', 'icon',
'emoticon', 'emoji', 'cid:', 'pixel', 'spacer', 'vignette',
'banner', 'separator', 'decoration', 'mail_signature'
]
# Vérifier si c'est une image inutile
for pattern in useless_img_patterns:
if (pattern in src.lower() or
pattern in alt.lower() or
pattern in title.lower() or
(css_class and any(pattern in c.lower() for c in css_class if isinstance(c, str)))):
return False
# Vérifier la taille
width = tag.get('width', '')
height = tag.get('height', '')
try:
width = int(width) if width and str(width).isdigit() else None
height = int(height) if height and str(height).isdigit() else None
if width and height and width <= 50 and height <= 50:
return False
except (ValueError, TypeError):
pass
# Vérifier si l'image est mentionnée dans le texte
image_indicators = [
'capture', 'screenshot', 'image', 'photo', 'illustration',
'voir', 'regarder', 'ci-joint', 'écran', 'erreur', 'problème',
'bug', 'pièce jointe', 'attachment', 'veuillez trouver'
]
for indicator in image_indicators:
if indicator in message_text.lower():
return True
return True
def clean_html(self, html_content: str) -> str:
"""
Nettoie le contenu HTML en supprimant toutes les balises mais en préservant le texte.
Traite spécifiquement les images pour garder uniquement celles pertinentes.
Args:
html_content: Contenu HTML à nettoyer
Returns:
Texte nettoyé sans balises HTML
"""
if not html_content:
return ""
# Utiliser BeautifulSoup pour manipuler le HTML
soup = BeautifulSoup(html_content, 'html.parser')
# Supprimer les éléments de signature
signature_elements = [
'div.signature', '.gmail_signature', '.signature',
'hr + div', 'hr + p', '.footer', '.mail-signature'
]
for selector in signature_elements:
for element in soup.select(selector):
element.decompose()
# Supprimer les lignes horizontales
for hr in soup.find_all('hr'):
hr.decompose()
# Récupérer le texte complet pour analyse
full_text = soup.get_text(' ', strip=True)
# Traiter les images
for img in soup.find_all('img'):
if self.is_important_image(img, full_text):
alt_text = img.get('alt', '') or img.get('title', '') or '[Image importante]'
img.replace_with(f" [Image: {alt_text}] ")
else:
img.decompose()
# Traiter les liens vers des pièces jointes
for a in soup.find_all('a', href=True):
href = a.get('href', '').lower()
if 'attachment' in href or 'download' in href or 'file' in href:
a.replace_with(f" [Pièce jointe: {a.get_text()}] ")
# Récupérer le texte sans balises HTML
text = soup.get_text(separator=' ', strip=True)
# Décodage des entités HTML
text = html.unescape(text)
# Nettoyer les espaces multiples
text = re.sub(r'\s+', ' ', text)
# Nettoyer les lignes vides multiples
text = re.sub(r'\n\s*\n', '\n\n', text)
# Supprimer les disclaimers et signatures standards
footer_patterns = [
r'Sent from my .*',
r'Envoyé depuis mon .*',
r'Ce message .*confidentiel.*',
r'This email .*confidential.*',
r'DISCLAIMER.*',
r'CONFIDENTIAL.*',
r'CONFIDENTIEL.*',
r'Le contenu de ce courriel est confidentiel.*',
r'This message and any attachments.*',
r'Ce message et ses pièces jointes.*',
r'AVIS DE CONFIDENTIALITÉ.*',
r'PRIVACY NOTICE.*'
]
for pattern in footer_patterns:
text = re.sub(pattern, '', text, flags=re.IGNORECASE | re.DOTALL)
return text.strip()
def save_json(self, data: Any, filepath: str) -> None:
"""
Sauvegarde des données en JSON.
Args:
data: Les données à sauvegarder
filepath: Le chemin du fichier
"""
with open(filepath, 'w', encoding='utf-8') as f:
json.dump(data, f, indent=4, ensure_ascii=False)
def extract_ticket_data(self, ticket_code: str) -> Optional[str]:
"""
Extrait toutes les données d'un ticket et les sauvegarde dans une structure organisée.
Args:
ticket_code: Le code du ticket à extraire
Returns:
Le chemin du dossier créé ou None en cas d'erreur
"""
# Récupérer les données du ticket
ticket = self.get_ticket_by_code(ticket_code)
if not ticket:
return None
# Créer le répertoire pour ce ticket
ticket_name = ticket.get('name', 'Sans nom').replace('/', '_').replace('\\', '_')
ticket_dir = os.path.join(EXPORT_DIR, f"ticket_{ticket.get('id')}_{ticket_name}")
os.makedirs(ticket_dir, exist_ok=True)
# Sauvegarder les données du ticket
self.save_json(ticket, os.path.join(ticket_dir, "ticket_info.json"))
# Récupérer les informations de contact
if ticket.get('partner_id'):
partner_id = ticket.get('partner_id')[0] if isinstance(ticket.get('partner_id'), list) else ticket.get('partner_id')
partner_details = self._safe_execute('res.partner', 'read', [partner_id],
['name', 'email', 'phone', 'mobile', 'street', 'city', 'zip', 'country_id', 'comment'])
if partner_details:
self.save_json(partner_details[0], os.path.join(ticket_dir, "contact_info.json"))
# Récupérer les activités
activity_ids = ticket.get('activity_ids', [])
if activity_ids:
activities = self._safe_execute('mail.activity', 'read', activity_ids,
['id', 'res_id', 'activity_type_id', 'summary', 'note', 'date_deadline', 'user_id', 'create_date'])
if activities:
self.save_json(activities, os.path.join(ticket_dir, "activities.json"))
# Récupérer les messages
message_ids = ticket.get('message_ids', [])
if message_ids:
messages_dir = os.path.join(ticket_dir, "messages")
os.makedirs(messages_dir, exist_ok=True)
messages = self._safe_execute('mail.message', 'read', message_ids,
['id', 'body', 'date', 'author_id', 'email_from', 'subject', 'parent_id', 'message_type', 'subtype_id', 'attachment_ids'])
if messages:
# Sauvegarder la collection complète
self.save_json(messages, os.path.join(ticket_dir, "messages.json"))
# Sauvegarder chaque message individuellement
for message in messages:
if not self.is_odoobot_author(message):
message_id = message.get('id', 0)
message_date = message.get('date', '').replace(':', '-').replace(' ', '_')
message_path = os.path.join(messages_dir, f"message_{message_id}_{message_date}.json")
# Nettoyer le contenu HTML
if message.get('body'):
message['body'] = self.clean_html(message['body'])
# Récupérer les détails de l'auteur
if message.get('author_id') and isinstance(message.get('author_id'), list) and len(message.get('author_id')) > 0:
author_id = message.get('author_id')[0]
author_details = self._safe_execute('res.partner', 'read', [author_id],
['name', 'email', 'phone', 'function', 'company_id'])
if author_details:
message['author_details'] = author_details[0]
# Récupérer les détails du sous-type
if message.get('subtype_id') and isinstance(message.get('subtype_id'), list) and len(message.get('subtype_id')) > 0:
subtype_id = message.get('subtype_id')[0]
subtype_details = self._safe_execute('mail.message.subtype', 'read', [subtype_id],
['name', 'description', 'default'])
if subtype_details:
message['subtype_details'] = subtype_details
self.save_json(message, message_path)
# Récupérer les suiveurs
follower_ids = ticket.get('message_follower_ids', [])
if follower_ids:
followers = self._safe_execute('mail.followers', 'read', follower_ids,
['id', 'partner_id', 'name', 'email', 'subtype_ids'])
if followers:
# Enrichir les informations des suiveurs
for follower in followers:
if follower.get('partner_id') and isinstance(follower.get('partner_id'), list) and len(follower.get('partner_id')) > 0:
partner_id = follower.get('partner_id')[0]
partner_details = self._safe_execute('res.partner', 'read', [partner_id],
['name', 'email', 'phone', 'function', 'company_id'])
if partner_details:
follower['partner_details'] = partner_details[0]
if follower.get('subtype_ids'):
subtype_details = self._safe_execute('mail.message.subtype', 'read',
follower.get('subtype_ids'),
['name', 'description', 'default'])
if subtype_details:
follower['subtype_details'] = subtype_details
self.save_json(followers, os.path.join(ticket_dir, "followers.json"))
# Récupérer les pièces jointes
attachment_ids = self._safe_execute('ir.attachment', 'search',
[('res_model', '=', self.model_name), ('res_id', '=', ticket.get('id'))])
if attachment_ids:
attachments = self._safe_execute('ir.attachment', 'read', attachment_ids,
['id', 'name', 'datas', 'mimetype', 'create_date', 'create_uid', 'description', 'res_name', 'public', 'type'])
if attachments:
# Sauvegarder les métadonnées des pièces jointes
attachments_info = [{
'id': att.get('id'),
'name': att.get('name'),
'mimetype': att.get('mimetype'),
'create_date': att.get('create_date'),
'description': att.get('description'),
'res_name': att.get('res_name'),
'type': att.get('type'),
'file_path': f"attachments/{att.get('id')}_{att.get('name', '').replace('/', '_')}"
} for att in attachments]
self.save_json(attachments_info, os.path.join(ticket_dir, "attachments_info.json"))
# Créer un répertoire pour les pièces jointes
attachments_dir = os.path.join(ticket_dir, "attachments")
os.makedirs(attachments_dir, exist_ok=True)
# Sauvegarder chaque pièce jointe
for attachment in attachments:
attachment_id = attachment.get('id', 0)
attachment_name = attachment.get('name', f"attachment_{attachment_id}").replace('/', '_')
attachment_data = attachment.get('datas')
if attachment_data:
try:
binary_data = base64.b64decode(attachment_data)
file_path = os.path.join(attachments_dir, f"{attachment_id}_{attachment_name}")
with open(file_path, "wb") as f:
f.write(binary_data)
except Exception as e:
print(f"Erreur lors de la sauvegarde de la pièce jointe {attachment_name}: {e}")
# Extraire les historiques de timesheet
timesheet_ids = ticket.get('timesheet_ids', [])
if timesheet_ids:
timesheets = self._safe_execute('account.analytic.line', 'read', timesheet_ids,
['id', 'date', 'user_id', 'name', 'unit_amount', 'employee_id', 'department_id'])
if timesheets:
self.save_json(timesheets, os.path.join(ticket_dir, "timesheets.json"))
print(f"Extraction terminée. Les fichiers sont disponibles dans: {ticket_dir}")
return ticket_dir
def main():
"""Point d'entrée principal du script"""
# Configuration du parser d'arguments
parser = argparse.ArgumentParser(
description="Extrait et filtre les données d'un ticket Odoo par son code.",
formatter_class=argparse.RawDescriptionHelpFormatter
)
parser.add_argument(
"ticket_code",
help="Code du ticket à extraire (ex: T12546)",
type=str
)
# Parser les arguments
args = parser.parse_args()
# Vérifier le format du code
if not re.match(r'^T\d+$', args.ticket_code):
print("Erreur: Le code du ticket doit être au format T suivi de chiffres (ex: T12546)")
return
print(f"\nExtraction du ticket {args.ticket_code}...")
# Créer l'extracteur et extraire les données
extractor = TicketExtractor()
ticket_dir = extractor.extract_ticket_data(args.ticket_code)
if ticket_dir:
print(f"\nLes données du ticket ont été extraites avec succès dans: {ticket_dir}")
else:
print("\nL'extraction a échoué. Vérifiez le code du ticket et réessayez.")
if __name__ == "__main__":
main()