# ai52168.com 统一入口。自动申请 Let's Encrypt 证书。
# 改完后：docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile

(common) {
	encode zstd gzip
	header {
		Strict-Transport-Security "max-age=31536000; includeSubDomains"
		X-Content-Type-Options "nosniff"
		Referrer-Policy "strict-origin-when-cross-origin"
		-Server
	}
}

# 首页 + AI 教程（静态站）
ai52168.com {
	import common
	@platform_api path /api/platform/*
	handle @platform_api {
		reverse_proxy tu-api:8080
	}
	@ppt_api path /api/ppt/* /ppt/view/*
	handle @ppt_api {
		reverse_proxy ppt-api:8081 {
			transport http {
				response_header_timeout 360s
			}
		}
	}
	handle {
		root * /srv/site
		file_server
	}
}

www.ai52168.com {
	redir https://ai52168.com{uri} permanent
}

# AI 中转 + 会员中心（new-api）
api.ai52168.com {
	encode zstd gzip
	header {
		Strict-Transport-Security "max-age=31536000; includeSubDomains"
		-Server
	}

	# 本站其他子域（门户、作图页）带凭证跨域调用 new-api：
	# 覆盖上游的 Access-Control-Allow-Origin: *，改为回显具体来源
	# 内测邀请制：注册请求先经 tu-api 校验邀请码，再转给 new-api；注册页统一用门户的 register.html
	@register {
		method POST
		path /api/user/register
	}
	redir /register https://ai52168.com/register.html 302

	@site header_regexp origin Origin ^https://(www\.|tu\.)?ai52168\.com$
	handle @site {
		header {
			Access-Control-Allow-Origin "{re.origin.0}"
			Access-Control-Allow-Credentials "true"
			Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
			Access-Control-Allow-Headers "Content-Type, Authorization, New-Api-User"
			Access-Control-Max-Age "86400"
			Vary "Origin"
			defer
		}
		@preflight method OPTIONS
		respond @preflight 204
		reverse_proxy @register tu-api:8080
		reverse_proxy new-api:3000 {
			flush_interval -1
		}
	}

	reverse_proxy @register tu-api:8080
	reverse_proxy new-api:3000 {
		flush_interval -1
	}
}

# AI 作图：/api/* → tu-api 后端，/img/* → 生成的图片，其余 → 静态 SPA
tu.ai52168.com {
	import common
	handle /api/ppt/* {
		reverse_proxy ppt-api:8081
	}
	handle /assets/* {
		root * /srv/site
		file_server
	}
	handle /api/* {
		reverse_proxy tu-api:8080
	}
	handle_path /img/* {
		root * /srv/tu-images
		header Cache-Control "public, max-age=31536000, immutable"
		file_server
	}
	handle {
		root * /srv/tu
		try_files {path} /index.html
		file_server
	}
}
