{"meta":{"title":"Utilisation de GitHub Copilot pour migrer un project vers un autre langage de programmation","intro":"GitHub Copilot Chat peut vous aider à déplacer un projet vers une autre langue. Ce guide décrit ce qui est impliqué dans un processus de migration et donne un exemple de migration PHP vers Python.","product":"GitHub Copilot","breadcrumbs":[{"href":"/fr/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/fr/enterprise-cloud@latest/copilot/tutorials","title":"Tutoriels"},{"href":"/fr/enterprise-cloud@latest/copilot/tutorials/migrate-a-project","title":"Migrer un project"}],"documentType":"article"},"body":"# Utilisation de GitHub Copilot pour migrer un project vers un autre langage de programmation\n\nGitHub Copilot Chat peut vous aider à déplacer un projet vers une autre langue. Ce guide décrit ce qui est impliqué dans un processus de migration et donne un exemple de migration PHP vers Python.\n\n## Introduction\n\nLa migration d’un project vers un nouveau langage de programmation peut être une tâche difficile et fastidieuse.\nGitHub Copilot peut vous aider à suivre ce processus en expliquant les modifications que vous devez apporter et suggérer du code de remplacement dans la nouvelle langue.\n\n## Principes de migration d’un project vers une nouvelle langue\n\nTenez compte des points avant de démarrer un processus de migration :\n\n* **Connaissances en codage**\n\n  Assurez-vous d’avoir une bonne compréhension des deux langages de programmation. Bien que Copilot puisse traduire du code à votre place, vous devez comprendre les options qu’il propose et décider si vous souhaitez utiliser ses suggestions ou en demander une autre.\n\n* **Connaissance du système que vous migrez**\n\n  Veillez à comprendre l’architecture et la logique du système actuel, ainsi que les fonctionnalités et les caractéristiques qu’il offre aux utilisateurs. Vous devez être en mesure de vérifier que le code traduit effectue toutes les mêmes opérations que le code d’origine et produit les mêmes résultats.\n\n* **Utiliser l’IA pour vous aider**\n\n  Si vous ne comprenez pas une partie particulière du code que vous êtes sur le point de traduire, utilisez Copilotla fonctionnalité « expliquer », soit sur l’ensemble du fichier, soit une partie sélectionnée du code dans un fichier. Consultez [Poser des questions à GitHub Copilot dans votre IDE](/fr/enterprise-cloud@latest/copilot/how-tos/chat-with-copilot/chat-in-ide).\n\n* **Planifier l’heure de fin de la migration**\n\n  La conversion est un processus en plusieurs étapes. Plus le projet que vous convertissez est grand, plus grand sera le nombre d'étapes que vous devrez effectuer. Assurez-vous de prévoir suffisamment de temps pour terminer l’ensemble du processus.\n\n* **Travailler de manière itérative**\n\n  Visez à convertir des parties discrètes de votre project séparément. Assurez-vous que vous avez vérifié toutes les modifications que vous avez apportées avant de passer à une autre partie du project. Écrivez des tests pour les parties individuelles de la project à mesure que vous procédez afin de pouvoir confirmer que chacun des nouveaux composants fonctionne comme prévu.\n\n* **Éviter d’introduire de la complexité dans le processus**\n\n  Au départ, vous devez viser à faire une conversion équivalente. Cela ne sera pas possible pour tout le code de votre project. Toutefois, pour éviter de compliquer la tâche de migration, vous devriez essayer de limiter le nombre de nouvelles modifications que vous introduisez, à l’exception de la traduction du code et de l’utilisation d’un nouveau framework et des dépendances appropriées.\n\n* **Réaliser des tests de performance et refactoriser du code traduit**\n\n  Une fois la conversion initiale terminée et le système opérationnel, vous pouvez réaliser des tests de performance afin de comparer l’ancien et le nouveau système. Vous pouvez maintenant refactoriser le code dans le nouveau langage. C'est l’occasion d’optimiser le code et de réduire la dette technique.\n\n## Utilisation Copilot pour vous aider à migrer un projet vers une nouvelle langue\n\nEn supposant que vous vous êtes déjà familiarisé avec le projet existant, une bonne façon de démarrer une migration consiste à ouvrir une branche du référentiel dans votre éditeur et à demander Copilot de l’aide.\n\n1. Dans votre éditeur, ouvrez le Copilot Chat panneau. Consultez [Poser des questions à GitHub Copilot dans votre IDE](/fr/enterprise-cloud@latest/copilot/how-tos/chat-with-copilot/chat-in-ide).\n\n2. Demandez Copilot à décrire les étapes à suivre pour migrer le projet vers la nouvelle langue.\n\n   Par exemple, pour une migration de PHP vers Python, vous pouvez demander :\n\n   ```copilot copy\n   @workspace I want to migrate this project from PHP to Python. Give me a high-level overview of the steps I need to take. Don't go into detail at this stage.\n   ```\n\n   > \\[!NOTE]\n   > Le participant de conversation `@workspace` définit les fichiers dans l’espace de travail actuel comme contexte pour la question que vous posez.\n\nCopilot revient généralement avec une liste des étapes que vous devez effectuer pour migrer le projet.\n\n1. Copiez Copilotla réponse et enregistrez-la quelque part pour faire référence tout au long du processus.\n\n2. Parcourez chaque étape du processus, en demandant de Copilot l’aide détaillée dès que vous en avez besoin.\n\n   Examinez avec soin chaque suggestion de Copilot. Vérifiez que vous comprenez le code qu'il suggère et évaluez s'il convient à votre project. Si vous n’êtes pas sûr, demandez à Copilot de vous expliquer le code.\n\n   Si vous pensez qu’un changement suggéré par Copilot n’est pas correct d’une certaine façon, demandez une autre suggestion.\n\n3. Dès que vous avez migré un composant vers un état que vous pouvez exécuter, vérifiez qu’il fonctionne comme prévu. S’il génère une erreur, copiez l’erreur dans la Copilot Chat vue et demandez-lui Copilot de vous aider à le corriger.\n\n4. Une fois la conversion initiale terminée, utilisez Copilot cette option pour vous aider à refactoriser le code dans la nouvelle langue. Pour plus d’informations, consultez [Refactorisation du code avec GitHub Copilot](/fr/enterprise-cloud@latest/copilot/tutorials/refactor-code).\n\n## Exemple : migration d’un project PHP vers Python\n\nL’exemple suivant décrit la migration d’une application web simple de PHP vers Python. Même si ce ne sont pas les langages de programmation que vous utilisez pour votre migration, vous pouvez trouver utile de suivre les étapes décrites ici pour vous familiariser avec une migration project. Les étapes seront similaires pour migrer d’autres petits projets d’un langage à un autre.\n\n![Capture d’écran du « site web PHP simple » avant la migration de PHP vers Python.](/assets/images/help/copilot/migration-original-website.png)\n\nCet exemple se base sur les hypothèses suivantes :\n\n* Tu travailles dans Visual Studio Code.\n* Les deux langages sont installés : PHP et la version 3.12 ou ultérieure de Python.\n\n### Migration d’un projet de site web simple\n\nNous allons migrer le code dans ce référentiel public sur GitHub: [docs/simple-php-website](https://github.com/docs/simple-php-website).\n\nLe référentiel se compose des fichiers suivants.\n\n```text\n.gitignore\n.htaccess\nLICENSE\ncontent\n├── 404.phtml\n├── about-us.phtml\n├── contact.phtml\n├── home.phtml\n└── products.phtml\nincludes\n├── config.php\n└── functions.php\nindex.php\nreadme.md\ntemplate\n├── style.css\n└── template.php\n```\n\nCet exemple fournit les prompts que vous pouvez entrer dans Copilot Chat pour terminer la migration, ainsi que les réponses Copilot renvoyées pour un cas de cette migration. Le GPT-4.1 modèle a été utilisé pour générer ces réponses.\nCopilot Chat les réponses ne sont pas déterministes, donc vous obtiendrez probablement des réponses légèrement différentes aux réponses présentées ici.\n\nPendant un processus de migration, vous êtes susceptible d’obtenir des erreurs que vous devez corriger avant de poursuivre.\nCopilot peut vous aider avec cela. L’exemple inclut certaines erreurs et montre comment vous pouvez obtenir Copilot pour vous aider à les corriger.\n\nÉtant donné que les réponses que vous obtiendrez Copilot Chat sont susceptibles d’être différentes de celles affichées ici, vous pouvez rencontrer différentes erreurs. Vous pouvez, par conséquent, trouver plus facile de parcourir cet exemple de migration à l’aide des réponses affichées ici, plutôt que celles que vous obtenez de Copilot vous-même.\n\nAprès avoir terminé cet exemple de migration, vous pouvez utiliser la même méthodologie sur votre propre project.\n\n1. Commencez par cloner une copie du référentiel sur votre ordinateur local.\n\n2. Exécutez l’application pour vérifier qu’elle fonctionne.\n\n   To do cela, dans un terminal, accédez à la racine du référentiel cloné et exécutez la commande suivante :\n\n   ```shell copy\n    php -S localhost:8000\n   ```\n\n   Ensuite, dans un navigateur, accédez à : <http://localhost:8000>.\n\n3. Parcourez le site web pour vous familiariser avec celui-ci, afin de pouvoir vérifier que la migration a réussi.\n\n4. Créez une branche de travail dans votre référentiel et ouvrez-la en tant qu’espace de travail dans Visual Studio Code.\n\n5. Familiarisez-vous avec le contenu et l’architecture du projet existant.\n   Copilot peut vous aider à procéder comme suit :\n\n   1. Ouvrez la vue Copilot Chat.\n   2. Entrez un prompt tel que :\n\n      ```copilot copy\n      @workspace Describe this project in detail, explaining what the various components do and how they interact.\n      ```\n\n6. Demandez Copilot une vue d’ensemble générale du processus de migration :\n\n   ```copilot copy\n   @workspace I want to migrate this project from PHP to Python. Give me a high-level overview of the steps I need to take. Don't go into detail at this stage.\n   ```\n\nCopilot répond avec des instructions telles que :\n\n```text\nTo migrate this project from PHP to Python, follow these high-level steps:\n\n1. Set Up Python Environment:\n   - Install Python and set up a virtual environment.\n   - Install necessary packages (e.g., Flask for web framework).\n\n2. Convert Configuration:\n   - Translate the configuration settings from config.php to a Python configuration file.\n\n3. Rewrite Functions:\n   - Convert PHP functions in functions.php to Python functions.\n\n4. Create Flask Application:\n   - Set up a Flask application to handle routing and views.\n   - Map the routes to corresponding views.\n\n5. Convert Templates:\n   - Translate template.php to a Jinja2 template.\n   - Update the CSS file path in the template.\n\n6. Convert Content Pages:\n   - Convert .phtml content files to HTML or Jinja2 templates.\n\n7. Update .htaccess Rules:\n   - Translate .htaccess rewrite rules to Flask route handling.\n\n8. Run and Test:\n   - Run the Flask application and test all routes and functionalities.\n   - Ensure the site works as expected and fix any issues.\n\n9. Documentation:\n   - Update the readme.md with new instructions for running the Python project.\n```\n\n1. Copiez Copilotla réponse et enregistrez-la quelque part pour faire référence tout au long du reste de ce processus. Vous allez suivre chacune de ces étapes, en demandant de l’aide à Copilot au fur et à mesure.\n\n2. Si vous n'avez pas encore décidé quel Python framework que vous souhaitez utiliser, vous pouvez demander Copilot des conseils :\n\n   ```copilot copy\n   @workspace What Python frameworks can I use for this project once it is migrated to Python? Give me a selection of options, with a brief summary of the pros and cons of each in relation to this website project. Which framework would you recommend?\n   ```\n\nCopilot répond avec des informations sur différents frameworks et conclut :\n\n```text\nFor a project like yours - which is a simple, content-driven website - Flask is highly recommended. Its simplicity, flexibility, and ease of use (especially with its templating system that can easily replace your current PHP template structure) make it a great fit.\n```\n\nNous allons suivre les conseils de Copilot et utiliser Flask.\n\n1. En retournant à Copilotla vue d'ensemble générale, la première étape consiste à configurer un environnement Python et à installer les packages nécessaires. Pour savoir comment procéder, dans Copilot Chat, entrez :\n\n   ```copilot copy\n   @workspace I want to use Flask. Tell me how to set up a virtual environment and install the necessary packages.\n   ```\n\nCopilot répond avec des instructions telles que :\n\n```text\n1. Create a virtual environment:\n   - Open a terminal and navigate to your project directory.\n   - Run the following command to create a virtual environment:\n     python3 -m venv venv\n\n2. Activate the virtual environment:\n   - On macOS and Linux:\n     source venv/bin/activate\n\n   - On Windows:\n     venv\\Scripts\\activate\n\n3. Install Flask and necessary packages:\n   - With the virtual environment activated, run the following command\n     to install Flask and other necessary packages:\n     pip install Flask\n\n4. Verify the installation:\n   - You can verify that Flask is installed by running:\n     pip list\n```\n\n1. Suivez les instructions de Copilot et utilisez `pip list` pour vérifier que Flask est installé.\n\n2. Pour revenir à la vue d’ensemble du processus de migration de Copilot, l’étape suivante consiste à convertir la configuration. Demandez de l’aide à Copilot pour cela. Par exemple :\n\n   ```copilot copy\n   @workspace As the first step in migrating this project from PHP to Python, create a Python configuration file by converting the functions in functions.php to Python functions. Tell me where to locate the Python config file in the project.\n   ```\n\nCopilot suggère de créer un fichier appelé `config.py` dans le `includes` répertoire, contenant le code suivant.\n\n```python copy\nconfig = {\n   'name': 'Simple Python Website',\n   'site_url': '',\n   'pretty_uri': False,\n   'nav_menu': {\n      '': 'Home',\n      'about-us': 'About Us',\n      'products': 'Products',\n      'contact': 'Contact',\n   },\n  'template_path': 'template',\n  'content_path': 'content',\n  'version': 'v3.1',\n}\n\ndef get_config(key=''):\n   return config.get(key, None)\n\ndef site_name():\n   return get_config('name')\n\ndef site_url():\n   return get_config('site_url')\n\ndef site_version():\n   return get_config('version')\n\ndef nav_menu(sep=' | '):\n   nav_menu = ''\n   nav_items = get_config('nav_menu')\n\n   for uri, name in nav_items.items():\n      query_string = request.args.get('page', '')\n      class_active = ' active' if query_string == uri else ''\n      url = f\"{get_config('site_url')}/{'' if get_config('pretty_uri') or uri == '' else '?page='}{uri}\"\n\n      nav_menu += f'<a href=\"{url}\" title=\"{name}\" class=\"item{class_active}\">{name}</a>{sep}'\n\n   return nav_menu.strip(sep)\n\ndef page_title():\n   page = request.args.get('page', 'Home')\n   return ' '.join(word.capitalize() for word in page.split('-'))\n\ndef page_content():\n   page = request.args.get('page', 'home')\n   path = os.path.join(os.getcwd(), get_config('content_path'), f'{page}.phtml')\n\n   if not os.path.exists(path):\n      path = os.path.join(os.getcwd(), get_config('content_path'), '404.phtml')\n\n   with open(path, 'r') as file:\n      return file.read()\n\ndef init():\n   template_path = os.path.join(get_config('template_path'), 'template.html')\n   with open(template_path, 'r') as file:\n      return file.read()\n```\n\n1. Créez le fichier `includes/config.py` et supprimez le fichier `includes/config.php` existant.\n\n2. Revenez à nouveau à la vue d’ensemble, demandez Copilot à vous aider à réécrire les fonctions PHP.\n\n   ```copilot copy\n   @workspace Continuing the migration of this project from PHP to Python, create Python functions to replace the existing PHP functions. Tell me where to locate the Python functions in the project.\n   ```\n\nCopilot suggère de créer un fichier appelé `functions.py` dans le `includes` répertoire, contenant le code suivant.\n\n```python copy\nimport os\nfrom flask import request\nfrom .config import get_config\n\ndef site_name():\n   return get_config('name')\n\ndef site_url():\n   return get_config('site_url')\n\ndef site_version():\n   return get_config('version')\n\ndef nav_menu(sep=' | '):\n   nav_menu = ''\n   nav_items = get_config('nav_menu')\n\n   for uri, name in nav_items.items():\n      query_string = request.args.get('page', '')\n      class_active = ' active' if query_string == uri else ''\n      url = f\"{get_config('site_url')}/{'' if get_config('pretty_uri') or uri == '' else '?page='}{uri}\"\n\n      nav_menu += f'<a href=\"{url}\" title=\"{name}\" class=\"item{class_active}\">{name}</a>{sep}'\n\n   return nav_menu.strip(sep)\n\ndef page_title():\n   page = request.args.get('page', 'Home')\n   return ' '.join(word.capitalize() for word in page.split('-'))\n\ndef page_content():\n   page = request.args.get('page', 'home')\n   path = os.path.join(os.getcwd(), get_config('content_path'), f'{page}.phtml')\n\n   if not os.path.exists(path):\n      path = os.path.join(os.getcwd(), get_config('content_path'), '404.phtml')\n\n   with open(path, 'r') as file:\n      return file.read()\n\ndef init():\n   template_path = os.path.join(get_config('template_path'), 'template.html')\n   with open(template_path, 'r') as file:\n      return file.read()\n```\n\n1. Créez le fichier `includes/functions.py` et supprimez le fichier `includes/functions.php` existant.\n\n2. En continuant avec la vue d’ensemble, l’étape suivante consiste à créer une application Flask. Demandez à Copilot de vous aider à ce sujet :\n\n   ```copilot copy\n   @workspace Set up a Flask application to handle routing and views, and map the routes to corresponding views. Tell me the location of any files that need to be created or changed.\n   ```\n\nCopilot suggère de créer un fichier appelé `app.py` à la racine du projet, contenant le code suivant.\n\n```python copy\nfrom flask import Flask, render_template, request\nimport os\n\napp = Flask(__name__)\n\nconfig = {\n   'name': 'Simple Python Website',\n   'site_url': '',\n   'pretty_uri': False,\n   'nav_menu': {\n      '': 'Home',\n      'about-us': 'About Us',\n      'products': 'Products',\n      'contact': 'Contact',\n   },\n   'template_path': 'template',\n   'content_path': 'content',\n   'version': 'v3.1',\n}\n\ndef get_config(key=''):\n   return config.get(key, None)\n\n@app.route('/')\n@app.route('/<page>')\ndef index(page='home'):\n   page_content = get_page_content(page)\n   page_title = get_page_title(page)\n   nav_menu = get_nav_menu()\n   return render_template('template.html', page_title=page_title, page_content=page_content, nav_menu=nav_menu)\n\ndef get_page_title(page):\n   return ' '.join(word.capitalize() for word in page.split('-'))\n\ndef get_page_content(page):\n   path = os.path.join(os.getcwd(), get_config('content_path'), f'{page}.phtml')\n   if not os.path.exists(path):\n      path = os.path.join(os.getcwd(), get_config('content_path'), '404.phtml')\n   with open(path, 'r') as file:\n      return file.read()\n\ndef get_nav_menu(sep=' | '):\n   nav_menu = ''\n   nav_items = get_config('nav_menu')\n   for uri, name in nav_items.items():\n      query_string = request.args.get('page', '')\n      class_active = ' active' if query_string == uri else ''\n      url = f\"{get_config('site_url')}/{'' if get_config('pretty_uri') or uri == '' else '?page='}{uri}\"\n      nav_menu += f'<a href=\"{url}\" title=\"{name}\" class=\"item{class_active}\">{name}</a>{sep}'\n   return nav_menu.strip(sep)\n\nif __name__ == '__main__':\n   app.run(debug=True)\n```\n\nCopilot suggère également de renommer `template/template.php` en `template/template.html` et de mettre le fichier à jour pour utiliser la syntaxe de templating Jinja2 :\n\n```html copy\n\n<!DOCTYPE html>\n<html>\n<head>\n   <meta charset=\"utf-8\" />\n   <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge\"/>\n   <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"/>\n   <title>{{ page_title }} | {{ get_config('name') }}</title>\n   <link href=\"{{ get_config('site_url') }}/template/style.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div class=\"wrap\">\n\n   <header>\n      <h1>{{ get_config('name') }}</h1>\n      <nav class=\"menu\">\n         {{ nav_menu|safe }}\n      </nav>\n   </header>\n\n   <article>\n      <h2>{{ page_title }}</h2>\n      {{ page_content|safe }}\n   </article>\n\n   <footer>\n      <small>&copy;{{ get_config('version') }} {{ get_config('name') }}.<br>{{ get_config('version') }}</small>\n   </footer>\n\n</div>\n</body>\n</html>\n\n```\n\n1. Créez les fichiers `app.py` et `template/template.html` comme suggéré.\n\n2. Copilot peut également suggérer que, après avoir créé ces fichiers, vous exécutez `python app.py` maintenant dans le terminal, à partir de la racine du référentiel, puis accédez à <http://127.0.0.1:5000>.\n\n   > \\[!NOTE]\n   > Selon la façon dont Python est installé sur votre ordinateur, vous devrez peut-être utiliser la commande `python3 app.py` au lieu de `python app.py` pour vous assurer que la bonne version de Python est utilisée.\n\n   Lorsque vous effectuez cette opération, les messages d’erreur s’affichent dans le navigateur.\n\n3. Copiez le message d’erreur initial `TemplateNotFound` dans la Copilot Chat vue et demandez comment résoudre ce problème. Par exemple :\n\n   ```copilot copy\n   @workspace When I run `python3 app.py`, I get the following error in the browser: `jinja2.exceptions.TemplateNotFound: template.html`. How can I fix this?\n   ```\n\nCopilot répond que l’erreur indique que Flask n’est pas en mesure de localiser le `template.html` fichier.\n\nIl vous indique que, par défaut, Flask recherche des modèles dans un dossier nommé `templates` dans le répertoire racine de votre project. Toutefois, votre fichier `template.html` se trouve dans le répertoire `template`. Pour résoudre ce problème, vous devez spécifier le dossier de modèle approprié lors de la création de l’application Flask. Il vous conseille de mettre à jour votre fichier `app.py`, en modifiant le `app = Flask(__name__)` de l’affectation pour inclure le paramètre `template_folder` :\n\n```python copy\napp = Flask(__name__, template_folder='template')\n```\n\n1. En supposant que le serveur de développement Flask est toujours en cours d’exécution, si vous actualisez la page du navigateur à <http://127.0.0.1:5000/>, vous verrez maintenant une nouvelle erreur relative à la fonction `get_config`.\n\n   Copiez ce message d’erreur dans l’affichage Copilot Chat et demandez de l’aide.\n\n   ```copilot copy\n   @workspace When I run `python3 app.py`, I get the following error in the browser: `jinja2.exceptions.UndefinedError: 'get_config' is undefined.` How can I fix this?\n   ```\n\nCopilot répond que l’erreur se produit parce qu’elle `get_config` n’est pas disponible dans le contexte du modèle Jinja2. Il vous conseille d’ajouter le code suivant au fichier `app.py`, directement avant la ligne `@app.route('/')` :\n\n```python copy\napp.jinja_env.globals.update(get_config=get_config)\n```\n\n1. Actualisez votre navigateur et vous devriez maintenant voir le site Web.\n\n   ![Capture d’écran du « site web Python simple » sans style CSS.](/assets/images/help/copilot/migration-no-css-website.png)\n\n   Toutefois, aucun des styles CSS n’est appliqué. Nous corrigerons cela ensuite.\n\n2. Demandez Copilot:\n\n   ```copilot copy\n   @workspace The deployed website does not use the CSS styles. How can I fix this?\n   ```\n\nCopilot indique que Flask s’attend à ce que votre fichier CSS soit dans un répertoire appelé `static`. Il suggère de déplacer le fichier `style.css` existant du répertoire `template` vers un nouveau répertoire `static`, puis de mettre à jour le chemin d’accès au fichier `style.css` dans la partie `head` du fichier `template.html`. Modifiez comme suit :\n\n```html copy\n\n<link rel=\"stylesheet\" href=\"{{ url_for('static', filename='style.css') }}\">\n\n```\n\nLorsque vous actualiserez le navigateur, le site Web devrait maintenant s’afficher correctement.\n\nPour terminer la migration initiale, continuez à suivre les étapes décrites dans la vue d’ensemble générale qui Copilot vous a donné, en vous demandant de l’aide en fonction de vos besoins.\n\n### Fin de la migration\n\nLes prochaines étapes pour mener à bien le processus de migration consisteraient à :\n\n* **Contrôler** minutieusement la migration initiale.\n* **Résoudre les bogues**. Par exemple, dans l’exemple décrit ici, les liens de page ne fonctionnent actuellement que si vous définissez `pretty_uri` sur `True` dans la section `config` du fichier `app.py`. Si vous souhaitez utiliser des paramètres de chaîne de requête dans les URL de page ou si vous souhaitez supprimer cette option du code, vous pouvez demander Copilot de vous aider à le faire.\n* **Writing tests** pour le projet migré.\n* **Nettoyage** du projet en supprimant les fichiers inutiles.\n* **Refactoriser** le code dans le nouveau langage. Le processus de migration a entraîné un project Python dont l’architecture est basée sur celle du project PHP d’origine. Après avoir effectué la migration initiale, vous pouvez maintenant refactoriser le code pour tirer le meilleur profit des fonctionnalités du langage Python et de l’infrastructure Flask.\n* **Mise à jour de la documentation**. Le fichier `readme.md` est maintenant obsolète et doit être réécrit."}