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

8.5 KiB

Instructions de modification des scripts de migration

Modifications à effectuer

1. migrate_from_backup.php

A. Remplacer les lignes 31-50 (configuration DB)

ANCIEN :

    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 :

    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 :

    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 :

    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_HOSTself::ENVIRONMENTS[$this->env]['host']
  • self::DB_PORTself::ENVIRONMENTS[$this->env]['port']
  • self::DB_USER_ROOTself::ENVIRONMENTS[$this->env]['user']
  • self::DB_PASS_ROOTself::ENVIRONMENTS[$this->env]['pass']
  • self::DB_USERself::ENVIRONMENTS[$this->env]['user']
  • self::DB_PASSself::ENVIRONMENTS[$this->env]['pass']

D. Modifier parseArguments() (vers la fin du fichier)

ANCIEN :

    $args = [
        'source-db' => null,
        'target-db' => 'pra_geo',
        'mode' => 'global',
        'entity-id' => null,
        'log' => null,
        'delete-before' => true,
        'help' => false
    ];

NOUVEAU :

    $args = [
        'env' => 'rca',  // Défaut: recette
        'mode' => 'global',
        'entity-id' => null,
        'log' => null,
        'delete-before' => true,
        'help' => false
    ];

E. Modifier showHelp()

ANCIEN :

  --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 :

  --env=ENV             Environment: 'rca' (recette) ou 'pra' (production) [défaut: rca]

ANCIEN (exemples) :

  php migrate_from_backup.php --source-db=geosector_20251007 --target-db=pra_geo --mode=global

NOUVEAU :

  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 :

if (!$args['source-db']) {
    echo "Erreur: --source-db est requis\n\n";
    showHelp();
    exit(1);
}

NOUVEAU :

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 :

$migration = new BackupMigration(
    $args['source-db'],
    $args['target-db'],
    $args['mode'],
    $args['entity-id'],
    $args['log'],
    (bool)$args['delete-before']
);

NOUVEAU :

$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 :

# 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 :

SOURCE_DB="geosector_20251013_13"
TARGET_DB="pra_geo"

NOUVEAU :

# 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) ** :

        --env)
            ENV="$2"
            shift 2
            ;;

D. Modifier les appels PHP - ligne 200-206

ANCIEN :

            php "$MIGRATION_SCRIPT" \
                --source-db="$SOURCE_DB" \
                --target-db="$TARGET_DB" \
                --mode=entity \
                --entity-id="$SPECIFIC_ENTITY_ID" \
                --log="$ENTITY_LOG" \
                $DELETE_FLAG

NOUVEAU :

            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 :

    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 :

    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 :

log "📅 Date: $(date '+%Y-%m-%d %H:%M:%S')"
log "📁 Source: $SOURCE_DB"
log "📁 Cible: $TARGET_DB"

NOUVEAU :

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)

# 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)

# 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