AMR 生产发布影响报告
当前生产发布点(EKS 实态 + Forgejo workflow 记录)
越新的发布点表示该维度已上线越多内容。feature 表只列发布点之后的变更;发布点之前的内容归入 「已在生产生效」。六个维度基线各不相同,compare range 逐个基线单独给出。
nexu/amr-web · container web4676d97e1sha256:379d86f96df5444ca256058b6cb702b67a6376e3fc97b485fc8f603337802079deploy-web-eks-prod.yml 最近成功 run #947 / 2026-09-22T02:31:44Z → 4676d97e1;一致(workflow commit_sha = Pod image tag)4676d97e1...aecc339e3):4 commitsnexu/amr-api · container apifeb5eb7fasha256:ce9939f10b5da205dfc354e7d41fb63462eb46d097238edf40c590f10fca7740deploy-api-eks-prod.yml 最近成功 run #385 / 2026-09-21T02:22:13Z → feb5eb7fa;一致(workflow commit_sha = Pod image tag)feb5eb7fa...aecc339e3):14 commitsnexu/amr-link · container link4676d97e1sha256:d6d339a87fb3299004f80e96ab827e2b5af643a31dfa2210bdb3e5134a64af80deploy-link-eks-prod.yml 最近成功 run #948 / 2026-09-22T02:32:33Z → 4676d97e1;一致(workflow commit_sha = Pod image tag)4676d97e1...aecc339e3):4 commitsnexu/amr-admin · container admin0a1243060sha256:0139558eec90ff7b2aee7109d5d3cee83a6b317ea0e8ae0ffb8a9a714492dae8deploy-admin-eks-prod.yml 最近成功 run #1324 / 2026-09-22T06:26:33Z → 0a1243060;一致(workflow commit_sha = Pod image tag)0a1243060...aecc339e3):3 commitsdeploy-db-migrations-prod.yml 记录
ff912897dff912897d...aecc339e3):1 commit → 2 个 migration 文件20260914115313_account_erasure.sql 的 migration 集合(含 20260914101138_touchpoint_test_context_realtime.sql)。deploy-model-routing-catalog-prod.yml 记录
5149e3f66审计对照说明:四个服务的 Forgejo 生产发布 workflow 最近成功记录与 EKS Pod 实态逐项一致(commit 与 digest 均匹配),未发现 GitOps 手工回滚造成的偏差。
GitOps values(powerformer/apps)不在本环境可访问范围内(该仓库位于 GitHub,本流程不读取 GitHub Actions / GitHub 记录),因此未作为对照来源;如需该层证据请在本流程之外补充。
此次发布真正新增的 feature 和影响面
| Feature / Author / Commits | Web | API | Link | Admin | DB schema / migration | DB catalog(seed) |
|---|---|---|---|---|---|---|
|
XXLCoding Plan 计费体系:Go 套餐恢复、额度窗口锚点修正与资金来源预检
是什么:恢复 Go 付费套餐在价格目录、订阅、Admin 模型包含规则与四档额度配置中的完整支持;Coding Plan 请求改为优先消耗套餐额度、额度耗尽后回退钱包;新增按工作空间 / 成员 / 模型限定的
billing preflight(API + 面向谁 / 用户路径变化:所有 Coding Plan(Go / Plus / Pro / Max,Personal 与 Team)订阅用户;Personal 与 Team 从此使用一致的窗口规则;Open Design 客户端通过新的 preflight 能力获得“模型覆盖 + 套餐用量 + 建议资金来源”。 Author:mrcfps(mrc@refly.ai);#54 Co-authored-by Ray Xi、mrcfps,Reviewed-by lefarcen
|
有(BASE_WEB {c(B["web"][0])} 之后):apps/web — coding-plan 用量卡(窗口用量 / 重置时间)、landing 定价卡与套餐目录(Go 套餐回归)、public-pricing-offers.ts、nav-items.ts、billing-client.ts、api-keys 页新增网关 Base URL。 |
有(BASE_API {c(B["api"][0])} 之后):services/api — billing/core.ts、billing/coding-plan-usage.ts、billing/preflight.ts(新增预检,注册进 app.ts / http/routes.ts / openapi.json)、billing/infra/postgres.ts、persistence/users.ts、会员策略锚点下发。 |
有(BASE_LINK {c(B["link"][0])} 之后):services/link — 准入流水线 admission_pipeline.go、economics/classifier.go + metrics.go(额度耗尽回退钱包的计费分类)、membership/client.go、modellimit/model_limit.go(额度池隔离与回退)、repositories/postgres.go。 |
有(BASE_ADMIN {c(B["admin"][0])} 之后):apps/admin — coding-plan 控制台(audience-context、product-control、limit-policies-panel、contribution-multiplier-fields、models-panel、tier-value-grid)、membership/model-groups-panel、lib/audit-action-catalog.ts、i18n(中英)。 |
有(BASE_DB {c(BASE_DB)} 之后):
|
无(本 feature 未触及 data/json 与 db/seeds)。 |
|
LModel Routing Catalog:新模型上架、归档条目退役与供应商路由调整
是什么:Model Routing Catalog(seed)的一次大批量收敛:
(1) 新增 3 个 public model — 关键影响:新增的 3 个模型 release phase 均为 Author:Liu Yi(liuyi@refly.ai)
|
无。 | 无。 |
有(含部署前提):provider_xiaomi 的凭据为 env.XIAOMI_API_KEY,Link 生产环境必须已配置该 secret,否则 priority-10 Xiaomi 路由不可用并回落 OpenRouter priority-20。services/link 目录内变更仅为 .env.example / README.md 与 third_party/bifrost-core 的 anthropic / bedrock 测试同步。 |
无。 | 无 schema / migration 变更。 | 有(BASE_CATALOG {c(BASE_CATALOG)} 之后):8 个 commit 触及 data/json 与 db/seeds,净变更覆盖
models.json、provider_routes.json、route_policies.json、public_pricing.json、providers.json、model_routing_catalog_release_gates.json、
provider_pricing/*.json(新增 provider_xiaomi.json)、db/seeds/seed-model-routing-catalog.sql、generate_model_routing_catalog.py、data/scripts/build_model_json.py。
由 {wf("deploy-model-routing-catalog-prod.yml")} 的 apply 步骤执行。 |
|
LCMS Touchpoints 运行时决策生命周期(OPEND-3364 ~ OPEND-3375)
是什么:API 侧 touchpoint / CMS 运行时决策链路的一轮协同重构:事件凭据校验绑定部署窗口;展示授权改为以 意图:把“不可达服务”降级为“随活动自然到期”,而不是“一次失败的内容消失”,同时降低每次轮询的读取与重写开销。 Author:a1chzt(10 个 commit)、lefarcen(c8d1cf662)
|
无。 | 有(BASE_API {c(B["api"][0])} 之后):services/api/src/touchpoints/persistence.ts(主改动面)、touchpoints/routes.ts、touchpoints/shared-artifact-store.ts,配套单元测试与真实 PostgreSQL e2e(test/e2e/touchpoints-runtime-lifecycle.test.ts 等)。 |
无。 | 无。 | 无 schema / migration。 |
无 catalog 变更。 |
|
MWeb 生产 Campaign 浮层:租约续期与可恢复故障降级
是什么:控制台生产活动浮层(含 gift entry)此前每 30s 轮询成功却先因 用户可见变化:活动未撤销时 gift entry 不再间歇性消失(按作者实测:40s 授权窗口下每 60s 有 20s 缺失;注入 500 / 连接重置会损失约 60s;离线则直接丢失);套餐弹窗不再被促销卡遮挡。 Author:lefarcen(935902669@qq.com / ontf116@gmail.com)
|
有(BASE_WEB {c(B["web"][0])} 之后):apps/web/src/components/production-campaign-float.tsx 及浏览器测试 tests/browser-agent/production-campaign-float.spec.ts。 |
无。 | 无。 | 无。 | 无 schema / migration。 | 无 catalog 变更。 |
|
SAdmin 公共模型编辑:审计记录去重
是什么:公共模型编辑抽屉改为逐个字段与当前 override 比较后再提交,只对真正变更的字段调用 Server Action。此前仅改 Capability 也会连带写入 Context Budget 审计,仅改 Release Phase 会写入 3 条审计。 影响面:Admin 运营审计流水准确性;无其他维度影响。 Author:Liu Yi(liuyi@refly.ai)
|
无。 | 无。 | 无。 | 有(BASE_ADMIN {c(B["admin"][0])} 之后):apps/admin/app/[locale]/(protected)/models/list/edit-public-model-drawer.tsx + 测试。 |
无 schema / migration。 | 无 catalog 变更。 |
|
S发布工具链修正:Public Pricing 校验器、Forgejo 事件链接、过期引用清理
是什么:(1) Public Pricing 部署校验从硬编码“8 plans / 4 personal”改为共享 Zod schema 校验并重算 catalog revision hash —— Go 套餐恢复后计划数变为 9 / 5,旧校验会让 DB 发布 workflow 与 API smoke 误失败;
(2) 全部 17 个 Forgejo 部署 / migration workflow 的 APE ops 事件链接从内部容器 URL + 实例级 影响面:仅发布流程与代码注释;不改变任何维度运行时行为。但 (1) 与 (2) 直接决定本次 DB / Catalog / 服务发布 workflow 能否通过校验与事件是否可追溯。 Author:Liu Yi(liuyi@refly.ai)
|
仅注释 / 引用清理:apps/web/src/lib/workspace-dashboard-client.ts 及浏览器测试,无运行时行为变化。 |
有(校验脚本):services/api/scripts/verify-public-pricing.ts、services/api/package.json、test/public-pricing.test.ts,同时覆盖 test API smoke、test DB 发布与 prod Public Pricing 发布。 |
无运行时变更。 | 无。 | 不改 db/migrations;但 deploy-db-migrations-prod.yml 的 workflow 文件本身在本范围内被更新(事件链接修正),从 main dispatch 时生效。 |
不改 data/json / db/seeds;deploy-model-routing-catalog-prod.yml 与 Public Pricing 校验路径在本范围内被更新,从 main dispatch 时生效。 |
已在生产生效(发布点之前,本次不重复发布)
以下内容均在对应维度生产发布点之前,已在生产运行,本次不重复发布。
- Admin(BASE_ADMIN
0a1243060,2026-09-22 已生效):表单对话框改为抽屉(39874964d#47)、页面标题与侧边栏对齐(0c5d08c5e#49)、复杂表格筛选器统一(a801b6ea9#50)、Admin UI 模式回退(5149e3f66#56)、会员额度按美元展示(0a1243060#57)。 - Web(BASE_WEB
4676d97e1,2026-09-22 已生效):Public / Cloud 年度定价文案对齐(057e94ed1#34)、跨语言年度节省去重(8e66ae506#40)、Public Pricing 意大利语 / 土耳其语本地化(2c9a01a76#42)及其部署修复(e36d61024#43)。 - Link(BASE_LINK
4676d97e1,2026-09-22 已生效):Grok 4.7 路由接入随 catalog 上线(9061e8872#53)。 - Catalog(BASE_CATALOG
5149e3f66,2026-09-22T03:18:47Z 已生效):Hy4 Aiping 与 Kimi K3 Aliyun 路由(8028e101d#39)、Grok 4.7 路由(9061e8872#53)、MiMo V2.6 Pro / Flash 路由(4676d97e1#55)。 - API(BASE_API
feb5eb7fa,2026-09-21 已生效):BASE_API 已是最旧的 API 变更点,范围内没有先于它的 API 增量;发布点之前已生效的内容不属于本次窗口。 - DB migration(BASE_DB
ff912897d,2026-09-20 已生效):BASE_DB 是最旧的维度发布点,范围内没有先于它的 migration 增量;已执行的最新一条为20260914115313_account_erasure.sql。 - 范围内已回退(净变更归零,本次不发布):
MiMo-V2.6-Pro-UltraSpeed—472ad6943add(#71)→8fc023f7frevert(#74)。 净效果:该 public model / backend model / provider route 及其release_gates、models.json、openrouter_metadata.json、provider_pricing/provider_openrouter.json、public_pricing.json、route_policies.json条目均已回到 #71 之前状态, 无 migration 被回退(该改动不涉及db/migrations),因此不需要额外处理;但specs/current/link/model-context-budget.md在两轮之间留下的文档改动以 revert 版本为最终态。 - 无维度归属的流程 / 文档变更(不进入任何 feature 行,也不改变运行时):
4ab7c7d4a#35、8bab676fc#36、4fbe5d85c(feature-test 共享评论)、cab31e8e8#58、f7798f8ad#62。
发布建议
- Migration 判断:需要先跑 migration。BASE_DB
ff912897d之后有 2 个新 migration(16448b777):db/migrations/20260921132204_restore_go_coding_plan.sql、db/migrations/20260922054546_coding_plan_product_isolation.sql。 两者都包含ALTER TABLE … ADD CONSTRAINT/ADD COLUMN NOT NULL DEFAULT与 CHECK 约束收紧,属于对既有行有校验要求的变更: 第 2 条新增public.coding_plan_products表并把coding_plan_model_entries唯一键从(public_model_id)扩为(public_model_id, coding_plan_audience), 执行前必须确认现网不存在同一public_model_id同时被 personal / team 重复占用的历史行。执行入口:deploy-db-migrations-prod.yml。
范围内没有被回退的 migration,不会执行已撤销的 SQL。 - 服务发布顺序(按依赖,六个维度发布点不同):
- DB migration(
deploy-db-migrations-prod.yml,2 个 migration 文件)— 所有写入 coding_plan_audience 的路径都依赖新列与唯一键。 - Model Routing Catalog(
deploy-model-routing-catalog-prod.yml,8 commits)— 独立于服务发布;但需先确认 Link 生产环境已配置XIAOMI_API_KEY,否则mimo-v2.6-flash/pro的 priority-10 Xiaomi 路由不可用(会回落 OpenRouter)。 - API(
deploy-api-eks-prod.yml,14 commits)— 承载 membership 策略锚点、billing preflight 与 touchpoints 运行时决策契约。按 #67 明确要求,API 必须先于 Link。 - Link(
deploy-link-eks-prod.yml,4 commits)— 需等会员策略缓存刷新后再发布(#67 的发布顺序要求);建议 API 发布后观察策略缓存刷新周期再执行。 - Web(
deploy-web-eks-prod.yml,4 commits)| Admin(deploy-admin-eks-prod.yml,3 commits)— 无强依赖,可并行或最后发布;Admin 发布点最新,实际只带 3 个 commit。
- DB migration(
- 数据 seed / catalog 判断:catalog 变更全部由
deploy-model-routing-catalog-prod.yml的 apply 步骤 (scripts/prod-db-migration-workflow.py model-routing-catalog-apply→db/seeds/model_routing_catalog.py apply)覆盖,无需额外 runbook。 两个必须人工确认的点:(a) Link 的XIAOMI_API_KEY;(b) seed 用ON CONFLICT DO NOTHING处理 release phase, 因此新增的claude-opus-5.5/gpt-6-sol/gpt-6-luna应用后仍为pre_release、不会被用户请求到;如需放量必须另外把release_phase改为released,这不在本次 seed 范围内。 - 发布后观测:
- 计费 / 套餐:Coding Plan 请求的
billing_mode(coding_planvspay_as_you_go)分布、额度耗尽后回退钱包的比率(billing_fallback_reason)、zero_charge_evidence='coding_plan'的记录量;重点看usage_events/credit_usages的 billing-evidence CHECK 是否有写入被拒(约束在本次被重建)。 - 订阅窗口锚点:新订阅与升级后的
reset_at是否等于订阅创建时间;续费 / 团队席位变化后锚点是否保留。潜在坑:历史订阅若缺少 Stripe 创建时间会暂用本地订阅记录创建时间,#67 提示发布前必须核对“曾替换过订阅”的历史记录。 - Preflight:
POST /v1/billing/preflight(Open Design 客户端调用)成功率与延迟;旧 CLI 客户端应表现为降级而非请求失败。 - Touchpoints / Campaign:
touchpoint_stopped事件频率(应下降)、Web 端 host 节点是否在无撤销时保持稳定挂载、410/撤回后是否按时清理、撤销回执与点击归因是否仍与activeDecisionId匹配。 - 模型路由:
deepseek-v4.1-flash各供应商权重分布(DeepSeek 80% / Aliyun 10% / Aiping 10%)与兜底触发率;provider_xiaomi的调用成功率(凭据缺失会表现为该 provider 全失败 + OpenRouter 回落);AIHubMix 下线后是否仍有 5xx 或“provider inactive”类错误;已退役的 18 个模型是否还有存量请求(有则说明有未迁移的客户端)。 - 公开定价:
public_pricing的 plan 数量应为 9(5 personal + 4 team)并 revision hash 匹配;IT / TR 语言页面正常。 - Release 流程:APE ops 事件中的 run 链接应指向公开 Forgejo run 页(
run_number),不再是内部容器 URL。
- 计费 / 套餐:Coding Plan 请求的
备注:本报告所有 workflow、commit、PR 与 compare range 均使用 code.powerformer.net/core/amr 的可点击链接;四个服务的 compare range 基于 EKS Pod 观察到的 BASE,DB migration 与 Catalog 的 compare range 基于各自 Forgejo workflow 的 BASE,未统一使用最旧基线。
证据附录
EKS / Prometheus 观测(Grafana datasource prometheus,namespace nexu)
- Web — Pods:
amr-web-5ffd46c587-gv6kr、amr-web-5ffd46c587-fbks9;container_ida8bd8bd9…、effa2737…;image…/amr-web:prod-4676d97e17fb…;digest4676d97e1→sha256:379d86f96df5444ca256058b6cb702b67a6376e3fc97b485fc8f603337802079 - API — Pods:
amr-api-6546769f97-wdlb5、amr-api-6546769f97-g4sv4;image…/amr-api:prod-feb5eb7fa7df…;digestsha256:ce9939f10b5da205dfc354e7d41fb63462eb46d097238edf40c590f10fca7740 - Link — Pods:
amr-link-657cfb7dcc-9qfbf、amr-link-657cfb7dcc-lt7v5;image…/amr-link:prod-4676d97e17fb…;digestsha256:d6d339a87fb3299004f80e96ab827e2b5af643a31dfa2210bdb3e5134a64af80 - Admin — Pods:
amr-admin-6dcff9c56b-k8s6s、amr-admin-6dcff9c56b-7qgpp;image…/amr-admin:prod-0a1243060817…;digestsha256:0139558eec90ff7b2aee7109d5d3cee83a6b317ea0e8ae0ffb8a9a714492dae8
Forgejo workflow 运行记录(基线来源)
deploy-db-migrations-prod.yml最近成功 run #352(id 47209)· 2026-09-20T08:13:07Z · commitff912897ddeploy-model-routing-catalog-prod.yml最近成功 run #976(id 48498)· 2026-09-22T03:18:47Z · commit5149e3f66- 审计对照(不用于判定当前生产版本):
deploy-web-eks-prod.ymlrun #947 →4676d97e1;deploy-api-eks-prod.ymlrun #385 →feb5eb7fa;deploy-link-eks-prod.ymlrun #948 →4676d97e1;deploy-admin-eks-prod.ymlrun #1324 →0a1243060
可见性范围说明:Forgejo Actions 运行列表在本环境可回溯至 2026-09-17T12:01Z(id 45798);两个基线 workflow 的最近成功运行均晚于该下限,因此不存在“因为窗口截断而漏掉更新成功记录”的情况。