pipeline {
    agent any

    options {
        timestamps()
        buildDiscarder(logRotator(numToKeepStr: '20'))
        timeout(time: 15, unit: 'MINUTES')
    }

    environment {
        PROD_DIR = '/home/kyu/trading-prod'
        // Phase 1: project name 분리. running stack(trading-ai)과 충돌 방지.
        COMPOSE_PROJECT_NAME = 'trading-prod'
        HOME = '/home/kyu'
    }

    stages {
        stage('Checkout info') {
            steps {
                script {
                    echo "Branch: ${env.BRANCH_NAME ?: 'n/a'}"
                    echo "Commit: ${env.GIT_COMMIT ?: 'n/a'}"
                    echo "Build : #${env.BUILD_NUMBER} on ${env.NODE_NAME}"
                }
                sh 'git log -1 --pretty=fuller || true'
            }
        }

        stage('Sync to PROD_DIR') {
            steps {
                sh '''
                    set -e
                    echo "Syncing latest main to ${PROD_DIR}"
                    cd "${PROD_DIR}"
                    git fetch --all --prune
                    git reset --hard origin/main
                    git clean -fdx -e .env -e qdrant-config/config.yaml
                    echo "--- after sync ---"
                    git log -1 --oneline
                '''
            }
        }

        stage('Validate compose (no deploy)') {
            steps {
                sh '''
                    set -e
                    cd "${PROD_DIR}"
                    echo "=== docker compose config (project: ${COMPOSE_PROJECT_NAME}) ==="
                    docker compose config --quiet
                    echo "OK: compose config valid"
                    echo
                    echo "=== compose ps (project ${COMPOSE_PROJECT_NAME} containers, if any) ==="
                    docker compose ps || true
                '''
            }
        }

        // Phase 2 (나중 활성화): 실제 배포 stage
        // stage('Deploy') {
        //     steps {
        //         sh 'cd "${PROD_DIR}" && docker compose up -d --remove-orphans'
        //     }
        // }
    }

    post {
        success { echo "Phase 1 SUCCESS — PROD_DIR synced & validated. No containers touched." }
        failure { echo "FAILED — check logs" }
    }
}
