pipeline {
    agent any
    
    environment {
        DOCKER_BUILDKIT = '1'
        BUILDKIT_PROGRESS = 'plain'
    }

    stages {
        stage('Checkout') {
            steps {
                echo '✅ Code checked out from gitea'
            }
        }

        stage('Build Docker Image') {
            steps {
                sh '''
                    docker pull management-platform:latest 2>/dev/null || true
                    
                    docker build \
                        --cache-from management-platform:latest \
                        --build-arg BUILDKIT_INLINE_CACHE=1 \
                        -t management-platform:latest \
                        ./platform/
                    
                    echo "✅ Docker image built"
                    docker images management-platform:latest --format "Size: {{.Size}}"
                '''
            }
        }

        stage('Deploy to Server 1') {
            steps {
                sh '''
                    docker stop management-platform 2>/dev/null || true
                    docker rm management-platform 2>/dev/null || true
                    
                    docker run -d \
                        --name management-platform \
                        --restart unless-stopped \
                        -p 8088:5000 \
                        -v /var/run/docker.sock:/var/run/docker.sock \
                        -v /root:/root \
                        -v /etc/passwd:/etc/passwd:ro \
                        -v /etc/shadow:/etc/shadow:ro \
                        -v /root/management-platform/config.py:/app/config.py:ro \
                        -v /root/management-platform/modules:/app/modules:ro \
                        management-platform:latest
                    
                    sleep 5
                    
                    if docker ps | grep -q management-platform; then
                        echo "✅ Deployed successfully"
                    else
                        echo "❌ Container failed to start"
                        docker logs management-platform --tail=20
                        exit 1
                    fi
                '''
            }
        }

        stage('Health Check') {
            steps {
                sh '''
                    sleep 3
                    if curl -f http://localhost:8088/ 2>/dev/null; then
                        echo "✅ Platform responding"
                    else
                        echo "⚠️ Health check failed"
                        docker logs management-platform --tail=10
                    fi
                '''
            }
        }
    }

    post {
        success { 
            echo '✅ Pipeline succeeded — platform deployed'
            sh 'docker image prune -f --filter "until=24h" 2>/dev/null || true'
        }
        failure { 
            echo '❌ Pipeline failed — check logs'
            sh 'docker logs management-platform --tail=30 2>/dev/null || true'
        }
    }
}