Commit ab0f7101 by luoqi

fix(docs): OpenAPI server 地址不再硬编码 —— 生产 docs 一直指向测试服

docker-compose.prod.yml 里写死 DOCS_API_URL: https://pac.jarvismedical.asia,
而这份 compose 是**测试服与生产共用**的 —— 于是生产 docs 页上点 Scalar 的"发送请求",
实际打到测试服去。当前生产就是这个状态(不影响文档阅读,但"试一试"跑错环境)。

改为复用 NEXT_PUBLIC_API_BASE_URL:它就是同一个东西(API 的对外地址),
各环境 apps/pac-web/.env 里本来就有 —— 零额外配置,且不会再随环境漂移:
    DOCS_API_URL: ${DOCS_API_URL:-${NEXT_PUBLIC_API_BASE_URL:-http://localhost:3101}}
要单独指定时才设 DOCS_API_URL 覆盖;都没有则退回本地。

️ 它是 **build-time** 参数(server 在 next build 期烘进 SSG 页),
改了必须重新构建 pac-docs 镜像,不是改 env 重启就行。

测试锁住:值必须是变量插值、且不得出现任何具体域名。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
parent bda06ca4
Pipeline #3536 failed in 0 seconds
...@@ -45,3 +45,14 @@ describe('docker-compose.prod.yml 日志驱动', () => { ...@@ -45,3 +45,14 @@ describe('docker-compose.prod.yml 日志驱动', () => {
expect(compose.services['pac-asr']!.profiles).toContain('asr'); expect(compose.services['pac-asr']!.profiles).toContain('asr');
}); });
}); });
describe('docs OpenAPI server 地址', () => {
test('⭐ 不硬编码域名 —— 这份 compose 测试服与生产共用,写死会让生产 docs 打到测试服', () => {
const args = (compose.services['pac-docs'] as { build?: { args?: Record<string, string> } }).build?.args ?? {};
const v = args['DOCS_API_URL'] ?? '';
expect(v).toMatch(/^\$\{/); // 必须是变量插值
expect(v).not.toMatch(/jarvismedical|friday\.tech/); // 不得出现任何具体域名
// 复用 NEXT_PUBLIC_API_BASE_URL:它就是同一个东西,各环境 .env 已有,不会再漂移
expect(v).toContain('NEXT_PUBLIC_API_BASE_URL');
});
});
...@@ -163,8 +163,13 @@ services: ...@@ -163,8 +163,13 @@ services:
dockerfile: apps/pac-docs/Dockerfile dockerfile: apps/pac-docs/Dockerfile
target: prod target: prod
args: args:
# OpenAPI 参考页 Scalar 的 server 地址(cURL/Send base);本地默认 localhost:3101,线上注入生产域名 # OpenAPI 参考页 Scalar 的 server 地址(cURL/Send base)。
DOCS_API_URL: https://pac.jarvismedical.asia # ⚠️ 曾硬编码成 https://pac.jarvismedical.asia(测试服域名)—— 而这份 compose 是
# **测试服与生产共用**的,于是生产 docs 页上点"发送请求"会打到测试服去。
# 改为复用 NEXT_PUBLIC_API_BASE_URL:它就是同一个东西(API 的对外地址),
# 各环境 apps/pac-web/.env 里本来就有,零额外配置、且不会再随环境漂移。
# 要单独指定时才设 DOCS_API_URL 覆盖;都没有则退回本地。
DOCS_API_URL: ${DOCS_API_URL:-${NEXT_PUBLIC_API_BASE_URL:-http://localhost:3101}}
restart: always restart: always
environment: environment:
NODE_ENV: production NODE_ENV: production
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment