yumoqing
e3f61f446d
feat(balance): extend atomic balance reserve to async+sync+product paths
- balance.py: module-level redis.asyncio singleton (works in all
processes without env.redis injection), centralized tpac/self-org
skip policy, userid param, extend_reserve, invalidate_balance_cache,
finalize updates max_cost on cold start (no reserve)
- llmclient.py: unified reserve injection in _inference_generator
(covers all 22 dspy entries); fix luid mismatch (reserve key ==
llmusage id == finalize key); stream exception refund
- syncinference.py / asyncinference.py: luid reuse + failure refunds
(submit failure, outer exception, query_task_status FAILED)
- product_interface.py: reserve + refund on product stream/non-stream
- accounting.py: finalize after llm_accounting (was missing for
direct llmage accounting path -> reserve leaked until TTL)
- init.py: lambda signatures synced
- v1/chat/completions/index.dspy: pass userid to reserve
2026-08-04 18:35:53 +08:00
..
2026-08-04 13:26:29 +08:00
2026-05-19 16:21:23 +08:00
2026-07-21 11:11:48 +08:00
2026-06-30 17:38:37 +08:00
2026-05-30 20:36:16 +08:00
2026-05-16 15:14:31 +08:00
2026-05-08 10:54:33 +08:00
2026-08-04 18:35:53 +08:00
2026-04-27 10:41:15 +08:00
2026-06-11 16:08:15 +08:00
2026-05-31 09:02:23 +08:00
2026-06-16 17:19:03 +08:00
2026-06-16 17:19:03 +08:00
2026-06-16 17:19:03 +08:00
2026-07-24 23:44:00 +08:00
2026-06-18 16:26:51 +08:00
2026-06-16 17:19:03 +08:00
2026-06-16 17:19:03 +08:00
2026-06-16 17:19:03 +08:00
2026-07-14 14:18:02 +08:00
2026-04-05 16:02:45 +08:00
2026-04-10 16:48:33 +08:00
2026-06-04 17:01:29 +08:00
2026-06-04 14:36:04 +08:00
2026-03-30 12:04:24 +08:00
2026-06-02 11:26:06 +08:00
2026-05-28 23:42:29 +08:00
2026-06-11 19:29:22 +08:00
2026-06-05 18:22:14 +08:00
2026-07-02 12:08:15 +08:00
2026-07-02 14:54:50 +08:00
2026-03-30 16:07:52 +08:00
2026-05-17 00:46:31 +08:00
2026-05-17 00:46:31 +08:00
2026-06-11 17:44:11 +08:00
2026-05-29 12:07:53 +08:00
2026-06-12 16:02:33 +08:00
2026-06-30 17:38:37 +08:00
2026-06-30 17:38:37 +08:00
2026-07-02 13:16:18 +08:00
2026-05-29 12:07:53 +08:00
2026-06-12 11:28:16 +08:00
2026-07-31 11:38:10 +08:00
2026-07-17 16:09:12 +08:00
2026-07-17 16:09:12 +08:00
2026-07-30 18:28:01 +08:00
2026-03-27 13:20:16 +08:00
2026-06-01 13:44:20 +08:00
2026-07-06 16:59:21 +08:00
2026-07-06 16:59:21 +08:00
2026-06-01 17:38:27 +08:00
2026-05-27 11:31:13 +08:00
2026-05-28 16:16:07 +08:00
2026-05-28 16:16:07 +08:00
2026-05-28 16:16:07 +08:00
2026-05-28 16:16:07 +08:00
2026-04-08 17:28:32 +08:00
2026-03-29 17:28:39 +08:00
2026-05-29 12:07:53 +08:00