# 需求:AC定价API三语扩展-GET-v1-public-pricing-面向官网德日西(德日西note文案+locale参数)
状态: done(2026-10-04 已上线:方案修正落地:实证发现 note/plans 本就是 {zh,en} 结构化对象、官网 build.py _fill_langs 已留透传口子——根因只是配置缺三键,非缺 locale 面。落地=PRICING_JSON 补 de/ja/es(period/standard_period/equiv/note 五语键齐,lifetime 同补备用),纯配置零代码;AC api 部署 656cbdce+线上实证五语下发,官网重发布后 /de/ /ja/ /es/ pricing 三语文案线上在位(de: entspricht ca. 2,42 $/Mon.)。原 ?lang= 方案作废(无需))
归属: pinnadash 产品
来源: 调研(docs/需求/2026-09-29-官网与五产品多语言扩展(德-日-西).md)
日期: 2026-10-04
建议: 做,做——官网德日西已全量上线(10-04 commit f9ef8c7),定价节被迫回退 en 文案;根因=AC /v1/public/pricing 的 note 单语,官网拿不到对应语文案。补 locale 面即闭环,量小

## 现状

- 10-04 官网德日西全量上线(17 页×5 语,commit f9ef8c7 已推 NAS 并 CF Pages 线上实证 /de/ /ja/pricing /es/terms 全 200),定价页因后端拿不到对应语文案**被迫回退 en 展示**。
- 根因实证:account_center `apps/api/src/routes/billing.ts` `GET /v1/public/pricing` 下发 `note: pricing.note`(源 `PRICING_CONFIG_JSON` env 的 `note` 字段),纯单语文本,无 locale 维度;官网三语构建消费该端点时只能原文直出英文。
- 影响面:官网 pricing 页(五语)与 App 内付费墙共用此端点(「产品代码不手写价格」单一数据源约定),note 不扩展则德日西用户在定价节始终看英文促销语。

## 方案

1. `PRICING_CONFIG_JSON` env 结构扩展:`note`(string,存量兼容)之外支持 `note_i18n: { de, ja, es }`(可选,缺语种回退 en 的 `note`)——取值集数据驱动,加语种=env 加一个字段,零代码改动(对齐全局「边界思维」硬规则)。
2. `GET /v1/public/pricing` 加 `?lang=` 查询参数(取值域=五语码,非法值回退 en),命中 `note_i18n` 时下发对应语文案;响应可带 `note_lang` 回显实际语种。
3. 官网构建侧(pricing 页取数处)按页面语种带 `?lang=` 拉取;App 付费墙不带参数行为不变(默认 en)。
4. 改动范围:account_center apps/api(routes/billing.ts+test/public-pricing.test.ts 负向用例:非法 lang/缺 i18n 字段回退 en)+official_website pricing 取数一处;先红后绿。

## 验收标准

- [ ] `GET /v1/public/pricing?lang=de` 返回德语 note(de/ja/es 三语实测),缺 `note_i18n` 语种回退 en
- [ ] 不带 `lang` 参数响应与现状逐字节等价(存量消费方零感知)
- [ ] 非法 lang 值(如 `xx`)回退 en,负向测试精确断言回退行为
- [ ] 官网 /de/pricing /ja/pricing /es/pricing 渲染对应语文案(线上实证 200+内容在位)
