Files
geo/api/scripts/MIGRATION_PATCH_INSTRUCTIONS.md
pierre 2f5946a184 feat: Version 3.5.2 - Configuration Stripe et gestion des immeubles
- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD)
  * DEV: Clés TEST Pierre (mode test)
  * REC: Clés TEST Client (mode test)
  * PROD: Clés LIVE Client (mode live)
- Ajout de la gestion des bases de données immeubles/bâtiments
  * Configuration buildings_database pour DEV/REC/PROD
  * Service BuildingService pour enrichissement des adresses
- Optimisations pages et améliorations ergonomie
- Mises à jour des dépendances Composer
- Nettoyage des fichiers obsolètes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 18:26:27 +01:00

351 lines
8.5 KiB
Markdown

# Instructions de modification des scripts de migration
## Modifications à effectuer
### 1. migrate_from_backup.php
#### A. Remplacer les lignes 31-50 (configuration DB)
**ANCIEN** :
```php
private $sourceDbName;
private $targetDbName;
private $sourceDb;
private $targetDb;
private $mode;
private $entityId;
private $logFile;
private $deleteBefore;
// Configuration MariaDB (maria4 sur IN4)
// pra-geo se connecte à maria4 via l'IP du container
private const DB_HOST = '13.23.33.4'; // maria4 sur IN4
private const DB_PORT = 3306;
private const DB_USER = 'pra_geo_user';
private const DB_PASS = 'd2jAAGGWi8fxFrWgXjOA';
// Pour la base source (backup), on utilise pra_geo_user (avec SELECT sur geosector_*)
// L'utilisateur root n'est pas accessible depuis pra-geo (13.23.33.22)
private const DB_USER_ROOT = 'pra_geo_user';
private const DB_PASS_ROOT = 'd2jAAGGWi8fxFrWgXjOA';
```
**NOUVEAU** :
```php
private $sourceDbName;
private $targetDbName;
private $sourceDb;
private $targetDb;
private $mode;
private $entityId;
private $logFile;
private $deleteBefore;
private $env;
// Configuration multi-environnement
private const ENVIRONMENTS = [
'rca' => [
'host' => '13.23.33.3', // maria3 sur IN3
'port' => 3306,
'user' => 'rca_geo_user',
'pass' => 'UPf3C0cQ805LypyM71iW',
'target_db' => 'rca_geo',
'source_db' => 'geosector' // Base synchronisée par PM7
],
'pra' => [
'host' => '13.23.33.4', // maria4 sur IN4
'port' => 3306,
'user' => 'pra_geo_user',
'pass' => 'd2jAAGGWi8fxFrWgXjOA',
'target_db' => 'pra_geo',
'source_db' => 'geosector' // Base synchronisée par PM7
]
];
```
#### B. Modifier le constructeur (ligne 67)
**ANCIEN** :
```php
public function __construct($sourceDbName, $targetDbName, $mode = 'global', $entityId = null, $logFile = null, $deleteBefore = false) {
$this->sourceDbName = $sourceDbName;
$this->targetDbName = $targetDbName;
$this->mode = $mode;
$this->entityId = $entityId;
$this->logFile = $logFile ?? '/var/back/migration_' . date('Ymd_His') . '.log';
$this->deleteBefore = $deleteBefore;
$this->log("=== Migration depuis backup PM7 ===");
$this->log("Source: {$sourceDbName}");
$this->log("Cible: {$targetDbName}");
$this->log("Mode: {$mode}");
```
**NOUVEAU** :
```php
public function __construct($env, $mode = 'global', $entityId = null, $logFile = null, $deleteBefore = false) {
// Validation de l'environnement
if (!isset(self::ENVIRONMENTS[$env])) {
throw new Exception("Invalid environment: $env. Use 'rca' or 'pra'");
}
$this->env = $env;
$config = self::ENVIRONMENTS[$env];
$this->sourceDbName = $config['source_db'];
$this->targetDbName = $config['target_db'];
$this->mode = $mode;
$this->entityId = $entityId;
$this->logFile = $logFile ?? '/var/back/migration_' . date('Ymd_His') . '.log';
$this->deleteBefore = $deleteBefore;
$this->log("=== Migration depuis backup PM7 ===");
$this->log("Environment: {$env}");
$this->log("Source: {$this->sourceDbName} → Cible: {$this->targetDbName}");
$this->log("Mode: {$mode}");
```
#### C. Modifier connect() (lignes 90-112)
**Remplacer toutes les constantes** :
- `self::DB_HOST``self::ENVIRONMENTS[$this->env]['host']`
- `self::DB_PORT``self::ENVIRONMENTS[$this->env]['port']`
- `self::DB_USER_ROOT``self::ENVIRONMENTS[$this->env]['user']`
- `self::DB_PASS_ROOT``self::ENVIRONMENTS[$this->env]['pass']`
- `self::DB_USER``self::ENVIRONMENTS[$this->env]['user']`
- `self::DB_PASS``self::ENVIRONMENTS[$this->env]['pass']`
#### D. Modifier parseArguments() (vers la fin du fichier)
**ANCIEN** :
```php
$args = [
'source-db' => null,
'target-db' => 'pra_geo',
'mode' => 'global',
'entity-id' => null,
'log' => null,
'delete-before' => true,
'help' => false
];
```
**NOUVEAU** :
```php
$args = [
'env' => 'rca', // Défaut: recette
'mode' => 'global',
'entity-id' => null,
'log' => null,
'delete-before' => true,
'help' => false
];
```
#### E. Modifier showHelp()
**ANCIEN** :
```php
--source-db=NAME Nom de la base source (backup restauré, ex: geosector_20251007) [REQUIS]
--target-db=NAME Nom de la base cible (défaut: pra_geo)
```
**NOUVEAU** :
```php
--env=ENV Environment: 'rca' (recette) ou 'pra' (production) [défaut: rca]
```
**ANCIEN** (exemples) :
```php
php migrate_from_backup.php --source-db=geosector_20251007 --target-db=pra_geo --mode=global
```
**NOUVEAU** :
```php
php migrate_from_backup.php --env=pra --mode=global
php migrate_from_backup.php --env=rca --mode=entity --entity-id=45
```
#### F. Modifier validation des arguments
**ANCIEN** :
```php
if (!$args['source-db']) {
echo "Erreur: --source-db est requis\n\n";
showHelp();
exit(1);
}
```
**NOUVEAU** :
```php
if (!in_array($args['env'], ['rca', 'pra'])) {
echo "Erreur: --env doit être 'rca' ou 'pra'\n\n";
showHelp();
exit(1);
}
```
#### G. Modifier instanciation BackupMigration
**ANCIEN** :
```php
$migration = new BackupMigration(
$args['source-db'],
$args['target-db'],
$args['mode'],
$args['entity-id'],
$args['log'],
(bool)$args['delete-before']
);
```
**NOUVEAU** :
```php
$migration = new BackupMigration(
$args['env'],
$args['mode'],
$args['entity-id'],
$args['log'],
(bool)$args['delete-before']
);
```
---
### 2. migrate_batch.sh
#### A. Ajouter détection automatique de l'environnement (après ligne 22)
**AJOUTER** :
```bash
# Détection automatique de l'environnement
if [ -f "/etc/hostname" ]; then
CONTAINER_NAME=$(cat /etc/hostname)
case $CONTAINER_NAME in
rca-geo)
ENV="rca"
;;
pra-geo)
ENV="pra"
;;
*)
ENV="rca" # Défaut
;;
esac
else
ENV="rca" # Défaut
fi
```
#### B. Remplacer lignes 26-27
**ANCIEN** :
```bash
SOURCE_DB="geosector_20251013_13"
TARGET_DB="pra_geo"
```
**NOUVEAU** :
```bash
# SOURCE_DB et TARGET_DB ne sont plus utilisés
# Ils sont déduits de --env dans migrate_from_backup.php
```
#### C. Ajouter option --env dans le parsing (ligne 68)
**AJOUTER avant `--interactive|-i)` ** :
```bash
--env)
ENV="$2"
shift 2
;;
```
#### D. Modifier les appels PHP - ligne 200-206
**ANCIEN** :
```bash
php "$MIGRATION_SCRIPT" \
--source-db="$SOURCE_DB" \
--target-db="$TARGET_DB" \
--mode=entity \
--entity-id="$SPECIFIC_ENTITY_ID" \
--log="$ENTITY_LOG" \
$DELETE_FLAG
```
**NOUVEAU** :
```bash
php "$MIGRATION_SCRIPT" \
--env="$ENV" \
--mode=entity \
--entity-id="$SPECIFIC_ENTITY_ID" \
--log="$ENTITY_LOG" \
$DELETE_FLAG
```
#### E. Modifier les appels PHP - ligne 374-379
**ANCIEN** :
```bash
php "$MIGRATION_SCRIPT" \
--source-db="$SOURCE_DB" \
--target-db="$TARGET_DB" \
--mode=entity \
--entity-id="$ENTITY_ID" \
--log="$ENTITY_LOG" > /tmp/migration_output_$$.txt 2>&1
```
**NOUVEAU** :
```bash
php "$MIGRATION_SCRIPT" \
--env="$ENV" \
--mode=entity \
--entity-id="$ENTITY_ID" \
--log="$ENTITY_LOG" > /tmp/migration_output_$$.txt 2>&1
```
#### F. Modifier les messages de log (lignes 289-291)
**ANCIEN** :
```bash
log "📅 Date: $(date '+%Y-%m-%d %H:%M:%S')"
log "📁 Source: $SOURCE_DB"
log "📁 Cible: $TARGET_DB"
```
**NOUVEAU** :
```bash
log "📅 Date: $(date '+%Y-%m-%d %H:%M:%S')"
log "🌍 Environment: $ENV"
log "📁 Source: geosector → Target: (déduit de \$ENV)"
```
---
## Nouveaux usages
### Sur rca-geo (IN3)
```bash
# Détection automatique
./migrate_batch.sh
# Ou explicite
./migrate_batch.sh --env=rca
# Migration PHP directe
php php/migrate_from_backup.php --env=rca --mode=entity --entity-id=45
```
### Sur pra-geo (IN4)
```bash
# Détection automatique
./migrate_batch.sh
# Ou explicite
./migrate_batch.sh --env=pra
# Migration PHP directe
php php/migrate_from_backup.php --env=pra --mode=entity --entity-id=45
```