tzt
|
4f272dc66d
|
feat(proxy): T-P7 管理面后端(stats/ledger/students 端点 + admin_queries.sql)
- /proxy/admin/stats:h_g(=cached/requests)/h_p(=Σin_hit/Σ(in_hit+in_miss))/
revenue/cost/margin/by_bucket(?since 走 idx_ledger_ts)
- /proxy/admin/ledger:流水分页(复用 billing.list_usage 参数化查询)
- /proxy/admin/students:学生列表(暂 501——ledger 新增 SELECT 方法被
Mimosa 安全扫描误报阻塞,误报解除后补 stats_rows/list_students 两方法即可)
- 端点鉴权复用 X-Admin-Key/loopback;ledger 查询经其锁与连接(D-P10)
- 全量 423 passed
|
2026-09-05 16:12:26 +08:00 |
|
tzt
|
c54ad23c88
|
feat(proxy): T-P6 缓存分支接线(routes 主时序,M2 完整闭环)
- _run_chat 开头缓存分支:cacheable(stop+单轮)-> canonical_hash ->
L1/L2 查 -> 命中:try_hold->立即 settle(cost=0, charged=售价口径,
status=cached, gateway_cached=1) -> SSE 合成回放或 JSON(X-Cache: HIT)
- 未命中流程收尾写缓存(_json_response 尾部,stop 且单轮);
缓存层任何故障降级直连上游(不影响可用性)
- 缓存命中计费 _cached_charge(成本 0,入按字符估收售价——全毛利杠杆 L0)
- _get_semcache 按 db_path 分实例(测试隔离)+ reset_semcache_instances
- 测试 +1(端到端:首问 miss 打上游/二问 HIT 上游仅 1 次/账目 cached),
全量 423 passed
|
2026-09-05 15:56:17 +08:00 |
|
tzt
|
a636b989e5
|
feat(sense): T-G7 审计+前端(live 分流接线 + tier 指标卡 + Settings 灰度区块)
- proxy/routes:sense.mode=live 时转发前调 Grader 分流,档位 -> 池条目
(tier_pool_hint 映射),响应头 X-Campus-Tier 透出(可解释性);
T1 决策按 review.sample_rate 抽样入 ReviewQueue(sense_t1 标签,
人工核"判 T1 实为更高档");分级故障不影响代理可用性(D-G4)
- /api/metrics:sense 段(enabled/mode/观察数/已标签/档位分布/shadow 一致率)
- 前端:MetricsView「语义分级」卡片(观察/标签进度/一致率/晋升门提示);
SettingsView「Sense 灰度控制」区块(总开关 + collect/shadow/live 切换 +
标签进度),npm run build 产物更新
- 全量 410 passed
|
2026-09-05 15:06:27 +08:00 |
|
tzt
|
5b04276fc8
|
feat(proxy): T-P4 路由端到端(M1:计费代理跑通)
- routes.py 主时序:auth(热缓存) -> 限流/并发槽 -> 413 -> 池条目解析 ->
try_hold 预扣(字符/3 + min(max_tokens,4096) 宁可高估)-> 上游流式 tee
-> usage 归一 -> compute -> settle(actual 回补) -> 流水;异常路径:
UpstreamError 全额 void / UpstreamAborted 按已收 usage 结算 status=aborted
- install_error_handlers:ProxyError 家族 -> §5.3 错误码
(401/402/403/413/429/502,401 带 WWW-Authenticate)
- 管理面:students/topup/keys 签发/keys-revoke(X-Admin-Key 或 loopback)
- SSE 同构:chunk 补齐 object/created/id/model(OpenAI SDK 兼容形状),
usage chunk 按客户端要求过滤
- 修复:补回 T-P4 重写时丢失的 /proxy/v1/models
- 测试 +8(非流式全程含 2550/1491 黄金账目/流式/402/401/413/502 void/
httpx 手写 OpenAI SDK 合规断言含 chunk 形状+usage 过滤+[DONE]),全量 362 passed
|
2026-09-05 09:35:12 +08:00 |
|
tzt
|
b109576707
|
feat(proxy): T-P0 代理层骨架(包结构/DDL/门控挂载/单进程校验)
- gateway/proxy/ 十文件:config(ProxyConfig:元->毫元加载期换算 D-P1、差异化售价、
桶/峰谷/限流/semcache 配置)/ errors(8 类 HTTP 语义异常)/ ledger(四表两索引 DDL,
WAL,ReviewQueue 连接纪律)/ auth·pricing·normalizer·semcache·upstream(§6 签名占位)
/ routes(/proxy/v1/models OpenAI 形状)/ __init__(build_proxy_router 组装点)
- settings DEFAULTS 增 proxy 段(enabled 默认 False,D-P7)
- api.py 首次 include_router(enabled 门控 + 装配失败不拖垮主应用)
- serve.py workers>1 拒绝启动(D-P9:WEB_CONCURRENCY/UVICORN_WORKERS 校验)
- 测试 +4(门控 404/DDL 幂等/毫元换算/池模型列表),全量 322 passed
|
2026-09-05 08:35:31 +08:00 |
|