3.4 KiB
计费闭环与功能级定价进度(2026-08-30)
任务 0 · 真实单位成本门控
已完成只读聚合端点:frontend/src/app/api/admin/usage/aggregate/route.ts。
- 权限:
billing.orders.read - 窗口:最近 30 天
- 输出:每个预留功能的
runs、avg、p50、p95、max,覆盖cost_microusd、input_tokens、output_tokens、duration_ms - 无数据:
hasData=false,统计值为null,不会静默伪造为 0 report.full:当前账本 0 行,这是报告接入计费前的已知空缺
当前可见数据库观测
本机 jyotisha-local-preview-postgres-1(不是 staging/production)截至 2026-08-30 的最近 30 天账本:
| feature_key | runs | cost p50 | cost p95 | input p50 | output p50 | duration p50 |
|---|---|---|---|---|---|---|
chat.standard |
0 | 无实测数据 | 无实测数据 | 无实测数据 | 无实测数据 | 无实测数据 |
rectification |
3 | 0 | 0 | 110566 | 5835 | 52879 |
report.full |
0 | 无实测数据 | 无实测数据 | 无实测数据 | 无实测数据 | 无实测数据 |
上述 3 条校正账本行的 request_id 都是 rectification:case:<caseId>,每个 case 只有 1 行。代码链路确认 runV9AgentTurn 在一次 agent run 结束时调用 billing.complete({ ...outcome.usage, durationMs }),而 outcome.usage 来自该次 run 的 result.totalUsage;它不是跨 case 多轮累计值。当前本机发布模型的 input/output 单价也都是 0,因此这组本地 cost=0 不能作为生产定价依据。
门控结论:未取得 staging/production 的非零真实单位成本,禁止写入任何新价格数字、会员公平使用数字或价格种子。
尚未执行
任务 1–6 依赖任务 0 的真实成本口径;在取得可审计的 staging/production 聚合数据前,不接入会导致线上默认失败的空定价配置,也不修改商品售价或公平使用参数。
任务 3 · 功能级定价服务端配置
已完成结构与后台管理接线:
- 新增
public.feature_pricing,按feature_key × model_tier × version保存草稿、发布、退休状态;迁移事务化、幂等、RLS 与 service/admin runtime 权限均已配置。 - 新增
resolve_feature_pricing(feature_key, model_id):只解析 published/enabled 模型与价格;模型或价格缺失时分别 fail-closed 为feature_pricing_model_unavailable/feature_pricing_missing。 - 新增 security-definer 管理函数
admin_save_feature_pricing_draft与admin_publish_feature_pricing,均要求既有权限、原因与 request id,并写入 admin 审计日志。 - 新增
/admin/feature-pricing与/api/admin/feature-pricing,前端不携带默认价格数字;价格只来自服务端配置。 - 已为
profile.extra/report.export预留 feature key,未接入业务路径。
本轮必要地更新了 database-local-business.test.ts 的 schema 表清单:原断言锁定基线表集合,本迁移有意新增 feature_pricing,因此仅补入该表并在断言旁注明原因。
验证:
./node_modules/.bin/tsc --noEmit:通过./node_modules/.bin/tsx --test tests/feature-pricing-contract.test.ts:2 通过npm run test:db:34 通过,0 失败;Docker 中 migration apply 与业务 schema 检查通过
价格门控仍生效:没有 staging/production 非零真实成本前,migration 未写入任何价格 seed。