|
|
72c522b5c9
|
fix: 客户视图模型排行改sect_top_models,币种费用去jinja2_macro
|
2026-07-24 15:43:18 +08:00 |
|
|
|
a50935f669
|
feat: 币种分布按角色拆分(分销商成本收入/客户费用/管理员分布)
|
2026-07-24 15:36:18 +08:00 |
|
|
|
18e7dd5afd
|
ui: 去除供应商性价比组件,修正双逗号JSON错误
|
2026-07-24 15:29:09 +08:00 |
|
|
|
824b3ae7ab
|
fix: 客户视图JSON尾逗号错误(供应商性价比后逗号移入admin块)
|
2026-07-24 15:10:19 +08:00 |
|
|
|
b131eec10e
|
fix: j2_is_distributor未注册时兜底false防客户黑屏
|
2026-07-24 14:55:37 +08:00 |
|
|
|
b3d2ff010c
|
i18n: stat_success_rate/stat_fail_calls改用otext
|
2026-07-24 14:33:53 +08:00 |
|
|
|
a44060f185
|
i18n: 实时卡片+index.ui标签改用otext/i18n,补全4语言翻译
|
2026-07-24 14:04:03 +08:00 |
|
|
|
1af03bf195
|
fix: 删除多余i18n_getmsgs.dspy+注册
|
2026-07-24 13:50:54 +08:00 |
|
|
|
88eb783940
|
fix: i18n目录移到sage_datamart/i18n(模块级),更正i18n_getmsgs路径
|
2026-07-24 13:50:46 +08:00 |
|
|
|
03645f1128
|
feat: i18n多语言支持(zh/en/jp/ko)+i18n_getmsgs端点
|
2026-07-24 13:49:55 +08:00 |
|
|
|
25cfa19a48
|
feat: 分销商财务仪表盘(收入/成本/毛利×币种,今天/本月/本年/累计)
|
2026-07-24 13:08:31 +08:00 |
|
|
|
59072ef035
|
feat: 客户视图(隐藏用户区+org过滤图表+API Key排行端点)
|
2026-07-23 16:53:51 +08:00 |
|
|
|
85afc1f023
|
feat: 客户视图隐藏用户区域,管理员才显示完整面板
|
2026-07-23 16:08:45 +08:00 |
|
|
|
21ad2403a0
|
fix: api_provider_roi JOIN organization.orgname + ChartScatter nameField改为provider_name
|
2026-07-23 11:54:58 +08:00 |
|
|
|
698dc940b4
|
fix: ChartPie加pie_options/ChartScatter改xField/yField/sizeField
|
2026-07-23 11:21:32 +08:00 |
|
|
|
dbcf33ff8c
|
fix: get_realtime_stats用int(r.xxx or 0)替代hasattr,处理SQL返回NULL
|
2026-07-23 11:17:55 +08:00 |
|
|
|
135b394b2a
|
fix: rt_card_amount简化为amt|float,去掉if/else避免jinja2运算歧义
|
2026-07-23 11:07:43 +08:00 |
|
|
|
94147b24cc
|
fix: sect_*.ui去entire_url改用绝对路径(子页面entire_url不可用)
|
2026-07-23 10:45:47 +08:00 |
|
|
|
41db2df9c9
|
fix: 使用bricks原生ChartBar/ChartPie/ChartScatter替代WebWidget+Jinja2
|
2026-07-22 18:54:12 +08:00 |
|
|
|
a31d0d3bbb
|
fix: 图表改用原生CSS进度条(VBox+bgcolor),去掉不存在的WebWidget
|
2026-07-22 18:50:46 +08:00 |
|
|
|
12db192320
|
fix: api_model_perf/api_provider_roi params_kw=None时.get()→AttributeError,改用(params_kw or {})
|
2026-07-22 18:39:55 +08:00 |
|
|
|
e86ff06b98
|
fix: organization列名 name→orgname 对照model定义
|
2026-07-22 18:08:06 +08:00 |
|
|
|
bdffa5c81b
|
fix: 模型延迟统一用COALESCE(ttft,ttot)覆盖异步模型
|
2026-07-22 18:01:06 +08:00 |
|
|
|
85913f8332
|
fix: 模型性能排行按model归并(GROUP BY),消除同模型多条记录
|
2026-07-22 17:56:18 +08:00 |
|
|
|
3b9391b582
|
fix: WebWidget script用{%set%}+json.dumps包裹,修复JSON转义错误
|
2026-07-22 17:54:49 +08:00 |
|
|
|
8da46acbce
|
fix: 供应商排行JOIN organization.name获取orgname
|
2026-07-22 17:42:23 +08:00 |
|
|
|
aeb5950cd0
|
fix: 供应商排行JOIN表名 llmprovider→modelprovider
|
2026-07-22 17:28:28 +08:00 |
|
|
|
47278c16ec
|
ui: 实时卡片缩小字体+分组(今天调用/用户)两行展示
|
2026-07-22 17:24:16 +08:00 |
|
|
|
dbe45ed489
|
feat: 6个监控组件图表化(环形图+柱状图+气泡图+美化列表)
|
2026-07-22 17:18:07 +08:00 |
|
|
|
ef83842af2
|
fix: 用户排行JOIN users.username,供应商排行JOIN llmprovider.name
|
2026-07-22 16:53:01 +08:00 |
|
|
|
a229abfb81
|
fix: load_path.py Sage路径 ~/repos/sage→~/sage 适配生产环境
|
2026-07-22 16:09:35 +08:00 |
|
|
|
7db361425b
|
feat: 6个监控组件改用RefreshWidget+Jinja2服务端渲染,初始即加载+60s刷新
|
2026-07-22 14:56:20 +08:00 |
|
|
|
482c0fac8b
|
fix: _get_realtime_snapshot加请求级缓存,一次页面渲染只查一次DB
|
2026-07-22 13:39:37 +08:00 |
|
|
|
305395ca99
|
fix: 4个DSPY统一用env.api_xxx()调用,消除namespace注入不稳定
|
2026-07-22 13:33:42 +08:00 |
|
|
|
ef5644498e
|
feat: 实时卡片统一用get_realtime_stats一次查llmusage,消除数据矛盾
|
2026-07-22 13:29:02 +08:00 |
|
|
|
b129fc2ef2
|
fix: 平台管理员(userorgid=0)不过滤机构,看全部数据
|
2026-07-22 12:05:58 +08:00 |
|
|
|
ac40a08021
|
debug: 所有try/except加exception日志,可追踪API失败的真正原因
|
2026-07-22 11:49:24 +08:00 |
|
|
|
1ca9af7a28
|
fix: 仪表盘查询去掉call_date=today限制,显示全量历史数据
|
2026-07-22 11:33:59 +08:00 |
|
|
|
3439ce0a2c
|
fix: dm_model_perf_daily.catelogid 10→32 + GROUP BY userorgid加表前缀 + 独立聚合脚本aggregate_all.py
|
2026-07-22 10:48:00 +08:00 |
|
|
|
72eeba1c2a
|
fix: GROUP BY currency加表前缀dm_model_call_fact消除ambiguous警告
|
2026-07-21 18:30:34 +08:00 |
|
|
|
6fb1b8cf44
|
fix: DSPY格式统一为Python脚本+json.dumps,消除JSON格式导致的NoneType异常
|
2026-07-21 18:16:23 +08:00 |
|
|
|
0a35be5101
|
fix: 补全所有j2_*和api_model_perf/api_provider_roi的try/except,彻底消除None返回
|
2026-07-21 18:15:03 +08:00 |
|
|
|
e0399c4178
|
fix: 所有API函数加try/except防止get_sor_context异常返回None
|
2026-07-21 18:05:11 +08:00 |
|
|
|
abc457d547
|
fix: 去掉get_sor_context包装,sor已传入直接用
|
2026-07-21 17:54:48 +08:00 |
|
|
|
33447fbbe5
|
fix: _get_exchange_rates/_load_usage_log_bills env取sor.env,无则ServerEnv()兜底
|
2026-07-21 17:52:18 +08:00 |
|
|
|
5030e0640c
|
fix: _get_exchange_rates/_load_usage_log_bills直接用传入sor,去掉get_sor_context(None)导致的NoneType错误
|
2026-07-21 17:45:12 +08:00 |
|
|
|
ed0107347e
|
fix: dm_model_call_fact.catelogid长度10→32 (digital_human等超长catelogid)
|
2026-07-21 17:25:19 +08:00 |
|
|
|
237c09262f
|
fix: init_data.py补全缺失字段+userorgid为None兜底(空串),支持重复执行
|
2026-07-21 15:05:02 +08:00 |
|
|
|
52acdbbfab
|
fix: LIMIT语法错误 - str(limit)导致LIMIT '5',改为int
|
2026-07-21 14:30:38 +08:00 |
|
|
|
993c293b56
|
fix: users表列名修正 userorgid→orgid
|
2026-07-21 14:06:05 +08:00 |
|