AMR 生产发布影响报告
当前生产发布点(EKS 实态 + workflow 记录)
Web、API、Link、Admin 的发布点来自 Grafana / Prometheus(kube-state-metrics,namespace nexu)观察到的 Ready EKS Pod 镜像,
已按 kube_pod_deletion_timestamp 排除终止中 Pod;DB migration 的发布点来自 deploy-db-migrations-prod.yml 最近一次成功运行。
feature 表只列出各维度发布点之后的变更;发布点之前的 commit 属于已生效,归入「已在生产生效」一节。
与 2026-10-29 的那份报告相比,五个发布点在 24 小时内没有任何变化(四个服务未重新部署、DB migration 未再次运行),但 origin/main 已从
a30eb9fc3 前进到
0edc16b4。
nexu/amr-web · container webamr-web-dfb8b75-glks9 / -d9nwc)568b8981(2026-10-27 06:45Z · #620)sha256:6ea7628ac08f36e9bbcd31cd79a5f56eee08c512d00745fe09f7cb4f19bb2478568b8981...0edc16b4):17 commitsnexu/amr-api · container apiamr-api-6b48f88d89-*)bfc134ea(2026-10-27 10:39Z · #634)sha256:8504c7cc098ca4c56c8b241b1fa74161d8ffc63e7395bafb5bc6d8c8bc540fcbbfc134ea...0edc16b4):252 commits(其中 122 个 test 提交)nexu/amr-link · container linkamr-link-656bcffbf7-*)a9666329(2026-10-28 12:18Z · #673)sha256:43cd3fd0d67bf723cf4d131e518eca1d08409cdef246dcf7239c4e7f3153490da9666329...0edc16b4):22 commits(其中 4 个 test 提交)nexu/amr-admin · container adminamr-admin-*)e05a7065(2026-10-28 11:58Z · #677)sha256:34fc0425128f95c2edaf576eef9db19da6bd05d44d080433611212f512fb6a44e05a7065...0edc16b4):3 commitsa9666329a9666329...0edc16b4):13 commitsdb/migration-rollout.json 指向的 production-forward 包共 111 个阶段迁移(expand 57 / contract 1 / legacy_team_prepare 5 / application_ready 20 / runtime_ready 28)。此次发布真正新增的 feature 和影响面
| Feature / Author / Commits | Web | API | Link | Admin | DB schema / migration |
|---|---|---|---|---|---|
|
XXL席位放开一期:席位定价、成员席位与邀请流程
面向所有工作空间用户的席位计费一期:套餐/席位定价入口、席位数量与成员席位动作、邀请落地页与十语文案、共享套餐额度明细与额度说明气泡、旧空间升级回流提示。
Web 是主实现( Author:杨瑾龙、eli、luogao、覃栋
|
本 feature 的主实现:席位/定价/邀请/额度 UI 与十语文案(components/commerce、components/console、components/team、assets/seats-phase1、lib/i18n-locales 8 个语言文件),新增 team / 邀请预览 / wallet / 用量明细路由。由于 Web 发布点(2026-10-27)早于 #467 合并,本 feature 在 Web 侧整体未上线。 |
席位/成员权限与订阅判定、工作空间用量明细查询(billing/http、workspaces/*)、面向席位一期的 API 路由;#467 的 1,403 个 API 文件中的席位部分。 |
#467 中与请求许可、准入判定相关部分(services/link 252 个文件中的席位/额度判定),使新席位额度对普通请求生效。 |
#467 的 Admin 席位/套餐管理界面与查询(59 个文件)。 | membership 与共享额度结构:20261018200641_workspace_shared_expand_structure.sql、20261018200710_workspace_shared_expand_constraints_public_membership_entitlements_install.sql、20261020030930_members_registration_invite_signal.sql、20261028051631_usage_wallet_resolution_structure.sql 等(57 个新 db/migrations 中的席位部分),在 forward 包的 expand / legacy_team_prepare / application_ready 阶段生效。 |
|
XXL旧 Team 留存订阅与本地资金计费迁移(retained / funded local migration)
本次改动量最大的工程:把旧 Team 订阅、既有资金与赠送额度按本地实际订阅与本地资金迁移,不再依赖历史价格、Stripe 远端订阅与旧债导入前置; 结算路由改为读取已完成的工作空间快照,过期 Free 交接、退款资金归属、个人配额归属、日常额度读取全部收敛到当前事实。 同时产出 5 阶段 production-forward 迁移包(expand 前必须保持 shared billing 关闭),这是本次发布的关键路径。 Author:lefarcen、杨瑾龙、Amy
|
无 runtime 变更(apps/web 仅 #726 计费回归测试文件)。 |
API 本次 252 个 commit 的主体:billing/workspace-commerce 76 个文件、billing/migration-jobs 28 个、billing/infra 17 个 —— 迁移准备/预检/迁移任务协调、留存 Team 日历与赠额账本、退款与资金归属校验、普通成员变更与邀请不再依赖资金锁、结算与额度读取改为当前事实(含 #756 性能收敛)。 |
legacy_funding_retained_local.go、retained 物化 SQL、可空本地配额审计、本地固定规则迁移收据、原赠额排除(22 个 Link commit 中的 18 个)。 |
d6b311473 未知原始续费现金展示、b9a0d5702 按本地订阅与资金迁移留存 Team(3 个 Admin commit 中的 2 个)。 |
57 个新 db/migrations(retained_team_grant_ledger、retained_team_calendar_source/epochs、retained_team_local_funded_source、retained_team_nullable_local_source、aligned_funded_retained_cutover、billing_migration_job_coordination 等)+ 6 个新 db/schema 源;production-forward 包 111 个阶段迁移(db/recovery/retained-team-production-forward-production125-funded-source-20261030)。 |
|
L分享协作:云端评论修复、手机只读评论、服务端统一校验与上传恢复
分享画布的协作体验修复:云端评论线程与手机端只读评论行为修正;上传/分享鉴权统一到服务端裁定,补齐上传恢复、失败回收与实例一致性校验。
分享页走独立的 Author:zhangchi |
components/shared-artifact 12 个文件、分享路由、手机只读视图与相应单测/浏览器用例。 |
resources 服务端统一校验、上传恢复与回收、collab 评论接口、分享策略读路径。 |
无。 | 无。 | 20261028094201_public_upload_recovery.sql(forward 包 pendingMainSources 条目,已在 expand 阶段覆盖)。 |
|
M用量与支付可观测性:finalized usage / gift debit 指标与 Link 供应商观测
新增有界基数口径的用量与赠送扣减指标(finalized usage、gift debit),以及 Link 侧供应商调用与网关结果观测(request outcomes、provider attempt observer), 用于发布后判断计费与转发是否正确,不改变业务判定。 Author:韩沅锡、Liu Yi |
无。 | 计费指标埋点(billing/infra 指标命名/口径)与对应测试。 |
internal/usage finalized 指标、internal/requestobs 请求结果观测中间件、bifrost-core provider attempt observer、media 观测接线。 |
无。 | 无 schema/migration。 |
|
M用量与额度读取修复:倍率快照、旧个人订阅等级与日常额度性能
Usage 明细在普通请求停止写入 admissions 后仍 INNER JOIN 旧表取倍率,导致新 Coding Plan 用量倍率显示未知:改为优先读 contribution 倍率快照、对历史空快照 LEFT JOIN 旧 admission 兜底(不默认 ×1)。 另修复未绑定工作区时旧个人订阅等级显示错误,并收敛日常额度读取的重复计算与历史依赖。 Author:Liu Yi、zhangchi、杨瑾龙 |
无。 | billing/infra/postgres.ts 用量明细倍率查询、workspaces 订阅等级解析、日常额度读取路径。 |
无。 | 无。 | 无 schema/migration(仅查询兼容层;历史空快照回填与彻底移除旧 admission JOIN 不在本次范围)。 |
已在生产生效(发布点之前,本次不重复发布)
以下内容的 commit 均在对应维度的生产发布点之前,已在生产运行。四个服务以 EKS Pod 实态为基线,DB migration 以 workflow 记录为基线; 重新发布不会再次引入这些变更。
- Web(
568b8981已生效):#620perf(billing)精简账单缓存与用量 SQL 优化,以及 2026-10-27 06:45Z 之前的所有前端改动。 - API(
bfc134ea已生效):#610 下线已停用的 usage_events 查询场景、#619 删除 admission 外键与 Admin 诊断查询、#634 contribution 倍率字段双写快照(该 commit 即 API 发布点本身)。 - Link(
a9666329已生效):#582 接入 Echo 四点流量采集与可信回放、#642 忽略 DeepSeek Flash Responses 里的 hosted search、#673 内存传递普通请求许可并把视频准入迁到 v2(Link 侧生效;Web 侧该 PR 仅改了一个浏览器测试文件)。 - Admin(
e05a7065已生效):#635 修复批量封禁与审计、隔离轻量用户查询;#677 限制用户 API 仅调用有权限的 public model(该 commit 即 Admin 发布点本身)。 - DB migration(
a9666329已生效):最近成功 run #20415 之前的全部已应用 revision(forward 包里的 127 条 reviewed prefix)。本次 111 个阶段迁移均在该发布点之后,属于待应用。 - 不在五元组内、本次不进入 feature 表:CI/E2E 分片与离线依赖下载(lefarcen)、
tools/*与 specs 文档、共享 test 环境流水线调整(#697/#705/#708/#711/#727/#751/#755,均为 test 环境与部署编排;其中 #755 只改deploy-share-web-eks-test.yml与deploy-api-eks-test.yml)。
发布建议
结论:本次不建议、也无法按五元组现在发布。DB 的 contract 阶段与 API 的 schema 门禁互相等待,形成死锁;唯一可以先执行的是 DB 的 expand 阶段。
-
Migration 判断 —— 必须先跑 expand,但 contract 现在会硬失败。
db/migration-rollout.json指向 production125-funded-source-20261030 manifest (schemaSourceSHA b38c74ac0,originalMainSHA a9666329,api_required_stage = runtime_ready), 共 111 个阶段迁移:expand 57 / contract 1 / legacy_team_prepare 5 / application_ready 20 / runtime_ready 28,另有 18 个在线索引与生产数据 preflight。- expand:不依赖 writer fleet,可先执行;需通过生产数据 preflight(
preflight.sql)与 production125 ledger 校验。执行期间必须保持 shared billing 关闭。 - contract:
scripts/prod-db-migration-workflow.py的verify_bridge_compatibility()要求 manifest 内bridgeCompatibility.approved = true且目录内有与之绑定的bridge-compatibility.json。 当前 manifest 没有bridgeCompatibility字段,该目录也没有bridge-compatibility.json,因此 contract 会在No approved expand-only bridge smoke…处直接失败,后续 legacy_team_prepare / application_ready / runtime_ready 因阶段边界依赖同样无法进行。 - 环依赖:contract 还要求
amr-api / amr-link / amr-admin / amr-web四个 Deployment 全部处于prod-<GITHUB_SHA>、完全就绪、且 shared billing 显式为 off; 而deploy-api-eks-prod.yml在部署前无条件执行api-schema-precheck:api_required_stage = runtime_ready时必须已全量应用 runtime_ready,否则只能走 bridge 分支,而 bridge 分支同样要求上述已批准的bridgeCompatibility。 结论:API 无法在 contract 之前发布,contract 又要求 API 已在同一 commit 上,五个维度当前无法闭合。
bridgeCompatibility(sourceFiles覆盖services/api/src、services/link、packages/shared/src与 4 个依赖文件,8 项真实链路检查全部passed,含 current / switch / old cash / Team 与个人 signed paid+repeat / Go ready / original funding / API model funding preflight),并在同目录提供bridge-compatibility.json。 - expand:不依赖 writer fleet,可先执行;需通过生产数据 preflight(
-
服务发布顺序 —— 只有在 bridge 证据就位后才成立。
- DB
expand(57 个迁移,保持 shared billing 关闭)。 - Web、API、Link、Admin 全部发布到同一个 commit(contract 的 writer fleet 校验要求四个 Deployment 同时是
prod-<同一 SHA>,因此不能分批到不同 commit)。此步 API 走 bridge precheck 分支。 - DB
contract→legacy_team_prepare→application_ready→runtime_ready,每阶段单独一次 dispatch(writers_ready_revision必须等于该次 dispatch 的GITHUB_SHA)。 - runtime_ready 完成后再按常规流程确认 API 最终版本(
api_required_stage已满足)。
amr-share-web)必须等同提交 API 在生产可用后才能发布,因此排在 API 之后。 - DB
-
发布后观测。
- DB:每个阶段的 checkpoint 与
schema-ledger-proof.json一致;在线索引 CONCURRENTLY 的ready/valid;preflight 计数器保持 0 / complete;contract 完成前 shared billing 必须仍为 off。 - Link / API 计费:#731 的 finalized usage 与 gift debit 指标基数是否有界、是否出现骤增;请求结果观测(#686)中 4xx/5xx 与网关失败原因分布。
- 用量与额度:#695 兼容期内 Usage 明细倍率是否仍出现"未知"(历史空快照属已知残留);日常额度读取的延迟与 DB 负载(#756)。
- 分享:上传恢复/回收成功率、手机端只读评论区行为、分享鉴权 403/401 比例(#579 /
c8d4102bc)。 - 席位:#467 的定价入口可见范围(Owner)、邀请落地页、席位变更与套餐升级回流的 4xx 与前端错误上报。
- DB:每个阶段的 checkpoint 与
备注:所有 workflow、commit、PR 与 compare range 均使用 Forgejo 链接(https://code.powerformer.net/core/amr)。
四个服务的 compare range 基于 EKS Pod 观察到的 BASE(Web 568b8981、API bfc134ea、Link/Admin a9666329),
DB migration 的 compare range 基于 workflow 记录 a9666329;未统一使用最旧基线,也未用最近成功 workflow 的 SHA 替代 Pod 实态。
Ready Pod 数量仅为观察值(Web 2 / API 4 / Link 13 / Admin 2),不表示副本一致性或健康检查通过。