Hermes Agent
71ccf230e9
fix: 按钮使用id属性替代name,确保binds能正确绑定事件
2026-06-18 16:35:44 +08:00
Hermes Agent
2efb1268b7
refactor: 模型上线检查UI改为VScrollPanel+HBox按钮布局
...
- UI: 检查结果区域改为VScrollPanel(filler),两个按钮用HBox并排
- check_pricing_program.dspy: 优先显示display_text字段,回退到name字段
2026-06-18 16:26:51 +08:00
Hermes Agent
5ab8171552
refactor: failed_accounting.ui布局优化 - 移除外层HBox包装,InlineForm直接作为VBox子控件 - 重试记账按钮移至Tabular toolbar
2026-06-18 14:21:10 +08:00
Hermes Agent
c0c9973e23
fix: failed_accounting_list.dspy JOIN条件修正 - users表主键是id不是userid - filter模糊搜索改用JOIN后的表别名(u.username, l.name)
2026-06-18 14:19:14 +08:00
Hermes Agent
4abd553302
fix: failed_accounting.ui显示优化 + dspy跨库JOIN返回_text字段 - failed_accounting.ui: userid→username, userorgid→orgname, llmid→llm.name - 移除cost/use_date列, InlineForm紧凑布局 - failed_accounting_list.dspy: 跨库JOIN users/organization/llm获取名称 - handled保持原始值, 由UI的code控件显示
2026-06-18 14:15:28 +08:00
Hermes Agent
6f977450c9
refactor: 记账失败记录优化显示 - userid/userorgid/llmid显示名称 - 移除cost/use_date字段 - InlineForm紧凑布局
2026-06-18 13:58:05 +08:00
Hermes Agent
cb99a83364
revert: 恢复tbl.render(params),排查InlineForm数据传递问题
2026-06-18 13:37:40 +08:00
Hermes Agent
716876fd92
fix: failed_accounting查询用event传表单数据
2026-06-18 12:51:27 +08:00
Hermes Agent
74aca298a7
llmage: failed_accounting.ui加原因toolbar按钮弹窗显示失败原因
2026-06-18 12:14:06 +08:00
Hermes Agent
88d2fd2c86
llmage: 记账失败记录-原因改为toolbar按钮弹窗显示
2026-06-18 11:55:08 +08:00
Hermes Agent
ac79d6c0d0
fix: get_search_apiname返回value/text双键兼容表单下拉
2026-06-17 18:32:09 +08:00
Hermes Agent
fe348b070e
fix: 简化体验一次和检查计费为配置验证,避免复杂API调用
2026-06-16 18:02:58 +08:00
Hermes Agent
ab83f05d63
fix: 修复check_*.dspy的false/False错误和pricingdata表查询
2026-06-16 17:19:03 +08:00
Hermes Agent
cef9e0bc52
fix: 修正check_*.dspy路径为绝对路径,修复按钮API路径
2026-06-16 16:47:37 +08:00
Hermes Agent
039814b281
fix: 修正check_*.dspy路径为../,修复usages参数JSON编码
2026-06-16 16:41:22 +08:00
Hermes Agent
ea2f08e443
fix: 上线检查改为urlwidget子控件模式,每个检查项独立dspy(bug3)
2026-06-16 16:25:26 +08:00
Hermes Agent
75fe89ac2e
fix: 修复llm_launch_check_page.dspy缩进和错误处理
2026-06-16 15:46:16 +08:00
Hermes Agent
5deecc67ce
fix: 上线检查改为服务端渲染(.dspy),解决bricks script不支持async问题(bug3)
2026-06-16 14:09:12 +08:00
Hermes Agent
b53eb61fbf
fix: 修复记账失败记录查询无响应(bug4/5)+模型上线检查无响应(bug3)
2026-06-16 10:45:27 +08:00
Hermes Agent
fe4e8271bf
fix: recover_usages支持ioinfo两种存储格式
...
ioinfo字段有两种存储方式:
1. JSON内容(流式模型如qwen3-max) - 直接解析
2. 文件路径(异步模型如viduq3-pro) - 读取文件再解析
修改后两种情况都能正确提取usage
2026-06-15 17:16:35 +08:00
Hermes Agent
0d2b39ddd7
feat: add recover_usages button to accounting failed page
...
- Add recover_usages.dspy: reads ioinfo files, extracts usage from
last output, writes back to llmusage.usages field
- Add toolbar button in llmusage_accounting_failed/index.ui
- Register new path in load_path.py RBAC config
- Force-add dspy (parent dir in .gitignore for CRUD auto-gen)
2026-06-15 17:01:29 +08:00
f5a9ce2c12
fix: DataViewer改Tabular,fields移入row_options用cwidth比例布局
2026-06-13 19:04:45 +08:00
79a99f2dba
fix: DataViewer去掉title避免白色背景,修正page_rows参数名
2026-06-13 19:00:40 +08:00
335a06d5ea
refactor: failed_accounting.ui改用InlineForm简化过滤栏
2026-06-13 18:41:04 +08:00
a70933c44c
fix: dspy添加InlineForm过滤条件支持,UI字段名对齐
2026-06-13 18:27:33 +08:00
7dd0886193
feat: 记账失败页面添加InlineForm过滤栏
2026-06-13 18:24:52 +08:00
3b25b9cfb4
fix: llminference.dspy 增加余额/定价校验拦截
...
checkCustomerBalance 返回值 f 之前被丢弃,导致即使余额不足或
模型未配置定价,直接调 API 仍可执行推理。
添加 if not f 判断,返回 UiError 拦截。
2026-06-12 16:02:33 +08:00
6bc04897ab
bugfix
2026-06-12 15:36:02 +08:00
dd8f2d23f6
chore: untrack .nfs lock file
2026-06-12 15:33:11 +08:00
c90cd88dd4
feat: show_llms_cards_by_provider 添加定价展示 + 优化批量查询
...
1. get_llms_sort_by_provider: 添加 ppid 批量查询和 pricing_display
2. get_llms_by_catelog: N+1 查询改为批量 ppid 查询,性能优化
3. show_llms_cards_by_provider.ui: 添加 pricing-box 展示区块
4. 两个函数都处理 get_pricing_display 返回 None 的情况
2026-06-12 15:32:34 +08:00
647e63eb04
fix: failed_accounting.ui - Combobox→UiCode, 移除formatter, 修复dspy import
2026-06-12 15:23:05 +08:00
39af416625
fix: 记账失败记录页面的查询和重试按钮
...
修复 failed_accounting.ui 中两个按钮的 JavaScript 错误:
查询按钮:
- 替换 this.root.getElementById() 为 bricks.getWidgetById()
- 替换 DataViewer.load() 为 render() (正确的公开API)
- 使用 getValue() 获取输入控件值
重试按钮:
- 替换 this.root.getElementById() 为 bricks.getWidgetById()
- 替换 selected_row 为 select_row (正确的内部属性名)
- 通过 .user_data 访问行数据
- 替换 dv.load() 为 dv.render()
- 使用 entire_url() 模板生成正确的 API URL
- 改用 async/await 替代 Promise chain
根本原因: 原代码使用了不存在的 bricks API
(this.root.getElementById, DataViewer.load, selected_row)
2026-06-12 14:28:50 +08:00
34627054b1
feat: code-type fields use fieldname/fieldname_text format
...
- get_search_providerid.dspy: return {providerid, providerid_text}
- get_search_upappid.dspy: return {upappid, upappid_text}
- get_search_apiname.dspy: return {apiname, apiname_text}
- json/llm.json: add valueField/textField for providerid, upappid
- json/llm_api_map.json: add valueField/textField for apiname, query_apiname
This ensures filter form and add/edit form use the same data format.
2026-06-12 11:40:54 +08:00
8ee2eccc55
feat: add pricing display to model cards
...
- utils.py: get_llms_by_catelog now queries all distinct ppids for each model
and calls get_pricing_display to get pricing text
- show_llms_cards.ui: added Filler with pricing-box CSS to display pricing info
- model_plaza.css: added styles for pricing-box and pricing-text (light/dark mode)
2026-06-12 11:28:16 +08:00
2792fc7bda
fix: show_llms_cards card overlap - set col_cwidth:25 matching card width, col_cgap:1 for spacing
2026-06-12 11:20:41 +08:00
4d455da18c
fix: catelog selection logic and backward compatibility
...
- utils.py: get_llmage_llm - when catelogid provided, use it instead of forcing isdefaultcatelog=1
- list_paging_catelog_llms.dspy: handle missing llmid in SQL, add llmcatelogid to returned rows
- llm_dialog.ui: use Jinja2 namespace for variable scoping in for loop
2026-06-11 19:29:22 +08:00
52312b0a06
feat: llm_dialog.ui catelog tabs + get_llm_catelogs + inference passes catelogid
...
- utils.py: get_llmcatelogid -> get_llm_catelogs (returns ALL catelogs with name+isdefault)
- llmclient.py: inference() passes params_kw.llmcatelogid to get_llm()
- llm_dialog.ui: renders catelog tab buttons when model has multiple catelogs,
defaults to isdefaultcatelog, passes llmcatelogid to both LlmIO models and list_models_url
- init.py: export get_llm_catelogs
2026-06-11 19:22:17 +08:00
982517a1c8
feat: add get_llmcatelogid function and pass llmcatelogid to list_paging_catelog_llms.dspy
2026-06-11 19:02:50 +08:00
767539fabd
fix: derive llmcatelogid from llmid when not provided in params
2026-06-11 18:58:33 +08:00
3423d5752f
fix: move llmcatelogid filter into subquery (m alias not visible in outer scope)
2026-06-11 18:55:00 +08:00
0f2d84bd00
fix: use m.apiname from llm_api_map instead of a.apiname (column not in llm table)
2026-06-11 17:44:11 +08:00
3947fb3587
refactor: consolidate API docs - wwwroot/api_doc.md symlinked to docs/API.md
2026-06-11 16:08:15 +08:00
242839d0bb
docs: add /v1/pricing endpoint to API documentation
2026-06-11 15:20:06 +08:00
4d69d54e20
feat: add /v1/pricing endpoint to get model pricing display info
2026-06-11 15:17:25 +08:00
6fd1f2ee5c
bugfix
2026-06-10 16:10:42 +08:00
e29cdadf18
bugfix
2026-06-09 14:01:08 +08:00
f5ded344f6
bugfix
2026-06-09 13:58:03 +08:00
f1d02f9d16
bugfix
2026-06-09 13:55:33 +08:00
dfb0794ee2
bugfix
2026-06-09 13:51:41 +08:00
892f0c5002
bugfix
2026-06-09 13:36:07 +08:00