642 Commits

Author SHA1 Message Date
bab415ba83 Revert "fix: 模型列表右侧面板改为VScrollPanel支持滚动"
This reverts commit e186e74b631e162161d5525b21a00191ccf35f1a.
2026-06-01 17:38:27 +08:00
e186e74b63 fix: 模型列表右侧面板改为VScrollPanel支持滚动 2026-06-01 17:25:52 +08:00
8e9ab5008c fix: get_llm_llmusage用JOIN从llm_api_map获取query_apiname,修复异步任务轮询卡在CREATED 2026-06-01 14:39:00 +08:00
be3c939955 fix: 模型广场彻底重构 — 移除TabPanel,用VBox+script切换视图
根因链:
1. TabPanel内部容器结构导致getWidgetById找不到tab content中的widget
2. urlwidget渲染后替换自身DOM,id丢失

修复:
- model_plaza.ui: 移除TabPanel,用两个VBox(按分类/按供应商)+script切换display
- plaza_cards_panel/plaza_provider_panel改为VBox容器(urlwidget作子组件),id不丢失
- CSS用#plaza_view_provider{display:none}初始隐藏供应商视图
- 切换按钮用getElementById直接操作display,不依赖bricks widget寻址
- 全链路filler确保VScrollPanel获得确定高度可滚动
2026-06-01 13:44:20 +08:00
fed36ff079 fix: 模型广场导航找不到目标 — 内联布局替代嵌套urlwidget
根因:TabPanel tab content通过urlwidget加载show_llms.ui时,
urlwidget渲染后替换自身DOM,导致plaza_cards_panel的id丢失,
getWidgetById()返回null。

修复:将左右分栏布局直接内联到model_plaza.ui的TabPanel tab content中,
plaza_cards_panel改为VBox容器(保持id),初始内容通过子urlwidget加载,
点击导航按钮时用mode:replace替换VBox内容。
2026-06-01 13:35:51 +08:00
063e158989 fix: 右侧模型列表不可滚动 — 添加filler CSS和flex布局
- show_llms/show_llms_by_providers的HBox加css:filler
- 右侧urlwidget加css:filler
- show_llms_cards两个文件的VScrollPanel加css:filler
- CSS中为tabpanel-content和scrollpanel添加flex布局确保高度传递
2026-06-01 13:29:57 +08:00
dac3ebb5a7 fix: 重写show_llms_cards_by_provider.ui修复500错误
- 移除Jinja2列表推导式(可能有兼容性问题)
- 改用inline if过滤,更安全可靠
- 添加|string确保类型安全的比较
- 处理description为None的情况(llm.description or '')
2026-06-01 13:26:27 +08:00
2f75784ea6 fix: 模型广场左侧导航点击右侧不更新 — target加app.前缀+mode:replace
根因:左侧按钮与右侧面板是HBox下的兄弟关系,非父子关系。
bricks框架要求兄弟间引用需加app.前缀才能正确寻址。
同时添加mode:replace确保每次点击替换旧内容。
2026-06-01 13:20:16 +08:00
2b30a3f0dc feat: 模型广场改为左右分栏布局,左侧分类/供应商导航,右侧模型卡片 2026-06-01 11:56:00 +08:00
cfa355a7a5 refactor: 删除自定义llm_list.dspy,改用CRUD自动生成的get_llm.dspy 2026-05-31 20:01:41 +08:00
a228095220 fix: get_organizations/get_upapps返回providerid_text/upappid_text格式匹配alters字段名 2026-05-31 19:56:35 +08:00
93e3f17a67 fix: 恢复providerid/upappid的alters配置,llm_list.dspy返回_text字段用于列表展示 2026-05-31 19:53:19 +08:00
9019f6c48e fix: 仅删除llm.json中providerid和upappid的alters,恢复其他文件 2026-05-31 19:41:24 +08:00
c345238eaa fix: 删除browserfields中的alters配置 2026-05-31 19:40:18 +08:00
d4406a60fd Revert "fix: llm_list.dspy用JOIN查询返回upappid_text和providerid_text供前端code列显示"
This reverts commit 5c021b81cba6da9c08954d2c5e075cd1e83f45cf.
2026-05-31 19:26:32 +08:00
5c021b81cb fix: llm_list.dspy用JOIN查询返回upappid_text和providerid_text供前端code列显示 2026-05-31 15:59:21 +08:00
57d77dc819 fix: status字段改用uitype:code+data格式,移除providerid/upappid的废弃属性textField/valueField 2026-05-31 15:48:09 +08:00
2f2841c16c fix: 为providerid和upappid的alter添加显式的textField和valueField 2026-05-31 15:46:39 +08:00
37c6814b2d fix: 移除get_organizations的过滤条件,返回所有组织;添加错误日志 2026-05-31 15:41:21 +08:00
314da7ae44 fix: get_upapps和get_organizations用属性访问替代字典访问(sqlExe返回对象) 2026-05-31 15:36:13 +08:00
dc007a30a9 feat: 模型广场页面 - 新增 model_plaza.ui (TabPanel按分类/按供应商) - 新增 model_plaza.css (卡片悬浮效果/间距优化) - show_llms/show_llms_by_providers 添加 plaza-card/plaza-grid CSS - load_path.py 注册权限 2026-05-31 11:08:10 +08:00
ce5cfc4463 feat: add customer role RBAC permissions for v1 API endpoints
Grant customer.admin and customer.user roles access to llmage v1 API:
- /v1/chat/completions
- /v1/video/generations
- /v1/image/generations
- /v1/models
- /v1/tasks

Updated both load_path.py and setup_llmage_perms.sh
2026-05-31 09:05:07 +08:00
022269040f feat: load_path添加api_doc.ui和api_doc.md权限路径 2026-05-31 09:03:17 +08:00
1dc7df71ef feat: 添加大模型API文档页面供客户查阅
- api_doc.ui: MarkdownViewer渲染API文档
- api_doc.md: 从docs/API.md复制的v1接口文档
- 包含chat/completions、video/generations、image/generations、models、tasks接口说明
2026-05-31 09:02:23 +08:00
45458159d4 docs: 快乐马 I2V 图片参数名更正为 image_file(非 image_url) 2026-05-30 23:15:52 +08:00
a7099d37f3 docs: add video model-specific input parameters to API.md
Extracted input parameters from video-model-api-doc.md for each platform:
- Vidu: T2V, I2V, 2I2V, Ref2V (v1/v2 subject/non-subject modes)
- Seedance: T2V, TI2V, Ref2V
- Tongyi/DashScope: T2V, I2V, 2I2V, Ref2V, IA2V
- Kling: T2V
- Hailuo/MiniMax: TI2V
- HappyHorse: T2V, I2V, Ref2V
2026-05-30 22:45:51 +08:00
fa99d04595 fix: reduce module card height (remove cheight, compact padding/icons) 2026-05-30 21:20:46 +08:00
5d52d02319 refactor: V1 API 支持新 catelogid 缩写(t2t/t2v/t2i等),向后兼容中文名
- v1/chat/completions: 默认值 '文生文' → 't2t',SQL 匹配 b.id OR b.name
- v1/video/generations: SQL 匹配 b.id OR b.name,注释示例更新
- v1/image/generations: SQL 匹配 b.id OR b.name,注释示例更新
- t2t/index.dspy: 默认值 '文生文' → 't2t',SQL 匹配 b.id OR b.name
- get_type_llms.dspy: 硬编码中文名改为 alias 映射(t2v/i2v/r2v)
- docs/API.md: 添加完整 catelogid ID 对照表,示例参数更新
2026-05-30 20:36:16 +08:00
08bebcd257 refactor: v1 API 统一使用 catelogid 参数替代 lctype/llmcatelogid 2026-05-30 16:22:21 +08:00
f32f49fb85 bugix 2026-05-30 16:13:45 +08:00
62dce1d3d7 chore: remove build/ from git tracking, add to .gitignore 2026-05-30 13:54:44 +08:00
5ec5946a90 fix: derive sage_root from script location instead of hardcoded path 2026-05-30 13:41:01 +08:00
e494c88977 fix: migrate_llmcatelog_ids script missing database config init
DBPools() was called without config.databases, causing NoneType error.
Load config from sage_root and pass config.databases like the other
migration script does.
2026-05-30 13:30:50 +08:00
7e4069f3b6 refactor: get_llm() uses get_llmage_llm() + cached uapi/uapiio lookups
Replace 6-table JOIN with 3-step approach:
1. get_llmage_llm() for base info (llm + llm_api_map + llmcatelog)
2. Cached uapi lookup (ioid, stream, callbackurl)
3. Cached uapiio lookup (input_fields)

Benefits:
- Code reuse: eliminates duplicate SQL
- Performance: uapi/uapiio cached with 5min TTL
- Maintainability: separate concerns for model info vs API config
- Adds invalidate_uapi_cache() for config changes
2026-05-30 12:19:42 +08:00
3ba1c50eb6 feat: add llmcatelog ID migration script (random IDs to meaningful abbreviations) 2026-05-30 12:07:19 +08:00
d84cc1d859 fix: API返回纯数组格式,添加模型上下架功能
- get_organizations/get_upapps/uapi_options: 返回纯数组[{value,text}]
- 新增 get_catelogs/get_apis/get_ppids: 独立下拉数据API
- llm_api_map_manage.ui: 使用独立API替代data_field嵌套格式
- json/llm.json: 移除data_field,添加上架/下架toolbar
- llm_status_update.dspy: 模型上下架状态更新API
- 重新生成 llm/index.ui CRUD界面
2026-05-30 01:43:09 +08:00
283b7d498c fix: wrap Tabular in VBox with cheight for proper scrolling 2026-05-29 22:09:51 +08:00
42f3a41b06 fix: remove duplicate get_llmage_llm (user's buggy version), keep corrected version 2026-05-29 17:44:06 +08:00
93ec47f198 refactor: add get_llmage_llm() for non-API-call llm data access, replace get_llm() in accounting and pricing 2026-05-29 17:41:43 +08:00
cef4859574 Merge branch 'main' of git.opencomputing.cn:yumoqing/llmage 2026-05-29 17:23:54 +08:00
4cc818b98b bugfix 2026-05-29 17:22:08 +08:00
adb0bafc0a chore: remove CRUD definition dirs from tracking, add gitignore 2026-05-29 13:18:20 +08:00
44d94dace5 refactor: optimize debug output - use debug_params for compact logging, truncate SQL; add CRUD definitions 2026-05-29 12:07:53 +08:00
c65cf35a85 refactor: use wildcard % in load_path.py for auto-coverage 2026-05-29 00:52:19 +08:00
eed21ce6a5 fix: responsive UI with VScrollPanel, cfontsize, css:card 2026-05-29 00:13:08 +08:00
d6e4221a7b feat: add model publish/unpublish (上架/下架) functionality
- llm table: add status field (published/unpublished, default unpublished)
- User-facing queries: filter by status='published' in 11 query points:
  - utils.py: get_llms_by_catelog_to_customer, get_llms_by_catelog,
    get_llm, get_llmproviders, get_llms_sort_by_provider
  - v1 endpoints: chat/completions, image/generations, video/generations
  - user pages: t2t, get_type_llms, list_catelog_models,
    list_paging_catelog_llms, llmcheck
- CRUD: status column visible/editable with select dropdown
- Admin CRUD list shows ALL models regardless of status
- Migration SQL: sql/add_status_field.sql (existing models set to published)
2026-05-28 23:42:29 +08:00
cb5efd5550 Revert "fix: 展平嵌套usage数据以支持pricing引擎点号路径查找"
This reverts commit 71626468e2cc701410801db31c5879ce6dfdb59f.
2026-05-28 16:58:37 +08:00
71626468e2 fix: 展平嵌套usage数据以支持pricing引擎点号路径查找
根因:pricing引擎的config_data.get(k)是平面dict查找,
当k='prompt_tokens_details.cached_tokens'时无法从嵌套结构取值。
在llm_charging()中将prompt_tokens_details和completion_tokens_details
的子键展平为顶层key(如'prompt_tokens_details.cached_tokens')。
2026-05-28 16:57:08 +08:00
534e4fe8e0 fix: remove hardcoded dark theme colors from stat cards for light theme support 2026-05-28 16:16:07 +08:00
65d5020fc7 bugfix 2026-05-27 13:41:48 +08:00