66 Commits

Author SHA1 Message Date
Hermes Agent
5b4a646900 chore: 添加json/build.sh脚本 2026-06-17 17:26:27 +08:00
db3b87d545 fix: replace wildcard patterns with explicit per-file entries in load_path.py 2026-06-04 13:03:29 +08:00
5e4f7f9a98 docs: 完善虚拟人API文档 - 补充sections 6/8/9的curl示例和请求示例 - 新增section 10/11: 同步虚拟人素材组合和素材接口 - 更新业务流程说明增加同步步骤 2026-06-02 16:33:50 +08:00
4893cf3f9a fix: 在__init__.py中导出所有API函数
- 导出23个函数到模块命名空间
- 修复dspy调用时NameError: name 'xxx' is not defined
- 确保Sage框架能正确注册函数到全局环境
2026-06-02 16:14:35 +08:00
c86c6f58e9 fix: 将API通配符改为逐个列出所有.dspy文件
- 移除 /api/* 通配符
- 显式列出全部40个API端点文件
- 确保客户角色能访问submit_virtual_create_group.dspy等接口
2026-06-02 16:10:06 +08:00
b550281222 fix: API权限通配符从%改为* 2026-06-02 16:07:11 +08:00
925f58b025 feat: 添加私域虚拟人素材功能
- init.py: 新增6个虚拟人函数(create/list/upload/sync等),注册到ServerEnv
- api_mapping: 新增create_group→CreateAssetGroup映射
- 外部API: 5个rl_virtual_*.dspy端点(创建组合/列表/上传/素材列表/状态)
- 前端API: 4个submit/get dspy端点(UI表单提交和数据获取)
- UI页面: 3个页面(创建组合/上传素材/查看素材)
- index.ui: 左侧导航新增虚拟人素材分区(3个按钮)
- load_path.py: RBAC新增virtual页面和api/%路径
- docs: api_downapp.md新增虚拟人API文档(5个端点)
2026-06-02 15:25:14 +08:00
fa8b35072d fix: 左侧导航栏宽度减半 cwidth 18→9 2026-06-01 14:27:22 +08:00
3c5fdfc149 fix: 查看素材页面Form高度固定,结果区用filler自适应 2026-06-01 14:23:26 +08:00
f66260e753 refactor: 改为左右分栏布局,左侧菜单按钮导航,右侧内容区 2026-06-01 14:12:33 +08:00
fe8206f8d5 fix: reduce module card height (remove cheight, compact padding/icons) 2026-05-30 21:20:49 +08:00
956ae81d49 docs: update api_downapp.md — add curl examples and rl_assets API
- Add curl examples for all 5 APIs (rl_verify, rl_query_groups, rl_upload, rl_status, rl_assets)
- Add new section 5: rl_assets.dspy (list assets by vendor_group_id)
- All curl examples use production baseurl and Bearer token auth
2026-05-30 12:28:14 +08:00
86d2c4edc4 docs: add curl examples to all external APIs
- rl_verify.dspy: vendor param for creating verify session
- rl_upload.dspy: upload asset to vendor_group
- rl_status.dspy: query asset processing status
- rl_assets.dspy: list assets by vendor_group_id
- sync_assets.dspy: sync assets from vendor
- check_validate.dspy: check verify result with apikey/secretkey
2026-05-30 12:24:35 +08:00
9ff6076d5c feat: add rl_assets.dspy — standard API to list assets by vendor_group_id
Standard external API returning {status, data} format.
Requires vendor_group_id param, enforces org_id isolation via get_userorgid().
2026-05-30 12:20:38 +08:00
304e4c4071 fix: wrap rl_asset_results in VScrollPanel for scrolling
When many assets are returned, the results area needs scroll.
Wrap the target VBox in a VScrollPanel with fixed height.
2026-05-30 11:22:53 +08:00
7c3e77e612 fix: view_assets — use actiontype:urlwidget + target + mode:replace
Replace custom JS fetch script with proper bricks-native pattern:
- actiontype: urlwidget, target: app.rl_asset_results, mode: replace
- method: POST in urlwidget options (required for form data)
- Remove duplicate id from dspy response widgets (id belongs to container only)
2026-05-30 10:54:48 +08:00
f94207dd86 fix: view_assets form submit — use script bind instead of urlwidget
Remove submit_url + submited/urlwidget pattern (event.params is Response
object, not widget descriptor, causes silent failure).
Replace with submit event + actiontype:script that manually POSTs form
data via fetch() and renders response widget tree via bricks.widgetBuild.
2026-05-30 10:48:32 +08:00
2440be759d fix: center all popups (anchor:cc), remove download URL from status query
- submit_query_status.dspy: add anchor:cc to all Message/Error widgets,
  remove download URL display from status result
- submit_upload.dspy: add anchor:cc to all Error widgets
- Error popups now centered for consistency
2026-05-30 10:46:22 +08:00
29d2ed2609 fix: center auth popup with anchor:cc 2026-05-30 10:32:04 +08:00
6491182249 feat: add view_assets page — browse media by group with bricks widgets
- init.py: add rl_list_assets_client() — validates org ownership, syncs
  from vendor, returns asset list with status/url/type
- view_assets.ui: dropdown to select vendor_group_id, submit triggers
  asset list display
- submit_list_assets.dspy: returns responsive card grid with Image/
  VideoPlayer/AudioPlayer widgets, per-asset refresh status + download
- index.ui: add '查看素材' card for customers
- load_path.py: register view_assets.ui under logined RBAC
2026-05-30 10:31:08 +08:00
daf82107fb feat: add status query flow after upload (frontend专用 dspy)
- submit_upload.dspy: frontend form handler returning bricks Message widget
  with asset_id, status, and '查询处理状态' button
- submit_query_status.dspy: frontend status query returning Message widget
  with current status, retry button when still processing
- upload_asset.ui: use submit_upload.dspy + submited bind (was missing)
- External APIs (rl_upload.dspy, rl_status.dspy) unchanged for downstream systems
2026-05-30 10:22:25 +08:00
2f1974ae8f feat: upload form shows name for auth groups, file input with media type validation
- get_org_groups.dspy: show name if available, fallback to vendor_group_id
- upload_asset.ui: change source_url from text textarea to file input (accept image/audio/video)
- rl_upload.dspy: auto-detect asset_type from file extension, server-side media type validation
2026-05-30 10:15:50 +08:00
a0d4189cb8 fix: 修复所有sor.U()调用, 合并id到更新字典(sor.U只接受2个参数) 2026-05-30 01:21:44 +08:00
f8de29d8f2 fix: 恢复format_exc()调用, 框架已预加载 2026-05-30 00:43:05 +08:00
fadde32ecc fix: 移除rl_callback中未定义的http_request变量, 直接用params_kw获取GET参数 2026-05-30 00:42:25 +08:00
c9bc2da46b ui: 认证弹窗正文和按钮改为上下排列,点击打开后关闭弹窗 2026-05-30 00:38:46 +08:00
967d1c728c fix: 移除所有dspy文件中多余的import语句, 框架已预加载 2026-05-30 00:32:16 +08:00
38cea985f1 debug: rl_callback添加详细日志和异常捕获 2026-05-30 00:28:47 +08:00
93780ac01d feat: 真人认证增加可选name参数, 记录到rl_org_group供列表展示
- rl_verify_user(): 新增name参数, 存入rl_asset_group.name/title
- rl_handle_callback(): 回调时将name从rl_asset_group复制到rl_org_group
- rl_query_groups(): 返回结果增加name字段
- rl_org_group模型: 新增name字段(str/200)
- rl_verify.dspy/submit_create_validate.dspy: 接收name参数
- create_validate.ui: 表单增加认证名称输入框(可选)
- api_downapp.md: 文档同步更新
2026-05-30 00:20:55 +08:00
5fa1040adc fix: rl_callback支持火山GET回调(bytedToken参数名), 添加调试日志 2026-05-30 00:11:47 +08:00
ccb9430a25 fix: 还原rl_callback.dspy, 供应商回调返回格式由供应商决定 2026-05-29 23:48:04 +08:00
211b628c78 refactor: API响应统一标准格式{status,data}, 前端Form分离
- rl_verify.dspy: 返回{status:ok/data:{id,h5_link,byted_token}}
- rl_upload.dspy: 返回{status:ok/data:{id,vendor_asset_id,status}}
- rl_query_groups.dspy: 返回{status:ok/data:{groups:[...]}}
- rl_status.dspy: 返回{status:ok/data:{status,url}}
- rl_callback.dspy: 返回{status:ok/data:{vendor_group_id}}
- 新增submit_create_validate.dspy: 前端专用,返回bricks Message/Error widget
- create_validate.ui: Form指向新dspy + submited事件绑定
- api_downapp.md: 文档同步更新
2026-05-29 23:40:19 +08:00
2533e4f22e fix: 修正 SQLor 插入方法调用,sor.I() 改为 sor.C() 2026-05-29 19:24:58 +08:00
9ada9a5a77 fix: use 'default' as project name for Volcengine API calls 2026-05-29 19:18:37 +08:00
1b6c51f712 fix: use compact JSON (no spaces) for body hash consistency 2026-05-29 18:48:45 +08:00
2fd15eeb1e fix: rewrite V4 signing to match official Volcengine Python example 2026-05-29 18:43:10 +08:00
073bd711c8 fix: correct V4 signing - URI encode query params, fix canonical headers format 2026-05-29 18:30:32 +08:00
03e1639ffc fix: remove SK decryption, use plaintext AK/SK directly 2026-05-29 18:15:07 +08:00
bd70011c01 feat: rl_verify认证成功后用NewWindow控件在新窗口打开认证链接 2026-05-29 14:39:50 +08:00
414d0e66ed refactor: 移除uapi依赖,改用直接V4签名调用火山引擎API
- 新增 rl_volcengine_client.py: V4 HMAC-SHA256签名 + StreamHttpClient
- rl_vendor_config 表新增 ak/sk 字段,AK/SK直接存储(不再经过uapi/upappkey)
- init.py: _call_vendor 改用 rl_volcengine_client.call_volcengine_api
- api_mapping 改为直接映射Volcengine API Action(如CreateAsset)
- SQL: 移除upappkey部分,ak/sk存入rl_vendor_config
2026-05-29 14:13:47 +08:00
af3368c019 chore: cleanup swp file, add gitignore 2026-05-29 13:29:51 +08:00
39f98a7136 add: 火山引擎AK/SK凭证 2026-05-29 13:28:34 +08:00
1264a6a2fa add: 火山引擎真人人像模块配置SQL
- rl_vendor_config: api_mapping映射内部操作到uapi.name
- upappkey: AK/SK存储(需替换实际凭证)
- appcodes_kv: 供应商下拉代码
2026-05-29 13:27:11 +08:00
da5a67f23b fix: 删除手写list dspy,让Sage CRUD框架自动生成list端点
手写文件遮蔽了框架自动生成的端点,导致:
- get_rl_vendor_config_list 500: org_id不在rl_vendor_config表
- get_rl_org_group_list 403: 手写文件绕过框架RBAC处理
Sage CRUD框架从json/定义自动生成list端点,不需要手写
2026-05-29 11:16:30 +08:00
db881a52e2 fix: 去掉多余的返回首页按钮和外部提交/重置按钮,Form自带 2026-05-29 10:46:33 +08:00
ac50a223b5 fix: 客户UI改用client API,简化表单字段
- create_validate.ui: 去掉callback_url/project_name,只保留vendor下拉,提交到rl_verify.dspy
- rl_verify.dspy: 自动用orgid作为project_name,返回Message widget含h5_link
- upload_asset.ui: 增加vendor下拉,vendor_group_id改为可选下拉(从已认证组合中选)
- 新增get_org_groups.dspy: 返回当前org已认证的vendor_group_id列表
- rl_upload.dspy: 返回Message widget格式
2026-05-29 10:44:19 +08:00
38650389b1 feat: add load_path.py with role-based wildcard % coverage 2026-05-29 00:52:24 +08:00
598ca58a26 fix: wrap cards+content in VScrollPanel 2026-05-29 00:10:55 +08:00
5d17fa5604 refactor(index.ui): 改用cwidth/cheight/cfontsize替代固定px值
- 卡片容器: height:140px/width:280px → cheight:12/cwidth:23
- 卡片标题: fontSize:18px + fontWeight:bold → Title5控件(内置bold)
- 描述文字: fontSize:14px → cfontsize:1.2
- 页面标题: fontSize:24px → Title2控件(内置bold+cfontsize:1.80)
- borderRadius保留px值(8px),已加入widget.js keys支持

所有尺寸基于charsize响应式缩放,浏览器放大缩小时保持一致
2026-05-28 23:46:53 +08:00
57383dfa7b chore: remove vim swap file 2026-05-28 23:36:16 +08:00