import re

def update_service_config(content, service_name):
    """更新单个服务的配置"""
    # 匹配服务定义
    pattern = rf'({service_name}:\s*container_name: fzx-aliyun-[a-z]+\s+image: fzx-aliyun-dev_{service_name}:latest.*?depends_on:\s+mariadb:\s+condition: service_healthy\s+redis:\s+condition: service_healthy)'
    
    def replace_func(match):
        service_block = match.group(1)
        
        # 更新JAVA_OPTS
        service_block = re.sub(
            r'JAVA_OPTS: "-Xms256M -Xmx512M -XX:\+UseG1GC"',
            'JAVA_OPTS: "-Xms192M -Xmx384M -XX:+UseG1GC"',
            service_block
        )
        
        # 添加Nacos配置
        service_block = re.sub(
            r'NACOS_CONFIG_ENABLED: \$\{NACOS_CONFIG_ENABLED\}',
            'NACOS_CONFIG_ENABLED: ${NACOS_CONFIG_ENABLED}\n      SPRING_CLOUD_NACOS_DISCOVERY_ENABLED: ${NACOS_DISCOVERY_ENABLED}\n      SPRING_CLOUD_NACOS_CONFIG_ENABLED: ${NACOS_CONFIG_ENABLED}\n      SPRING_CLOUD_SERVICE_REGISTRY_AUTO_REGISTRATION_ENABLED: ${NACOS_DISCOVERY_ENABLED}',
            service_block
        )
        
        # 添加deploy资源限制
        if 'deploy:' not in service_block:
            # 在healthcheck之前添加deploy配置
            service_block = re.sub(
                r'(volumes:\s+- /opt/Fzxpodman/infrastructure/logs/.*?-service-aliyun:/logs)\s+(healthcheck:)',
                r'\1\n    deploy:\n      resources:\n        limits:\n          cpus: "0.4"\n          memory: "512M"\n        reservations:\n          cpus: "0.15"\n          memory: "256M"\n    \2',
                service_block
            )
        
        return service_block
    
    return re.sub(pattern, replace_func, content, flags=re.DOTALL)

# 读取compose文件
with open('d:/FzxBDSH/infrastructure/compose/podman-compose.aliyun-dev.yml', 'r', encoding='utf-8') as f:
    content = f.read()

# 需要更新的服务列表
services = ['merchant-service', 'order-service', 'rider-service', 'product-service', 'map-service', 'marketing-service', 'upload-service']

# 更新每个服务
for service in services:
    content = update_service_config(content, service)

# 写入更新后的内容
with open('d:/FzxBDSH/infrastructure/compose/podman-compose.aliyun-dev.yml', 'w', encoding='utf-8') as f:
    f.write(content)

print("Compose配置文件已更新完成！")