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: 文档同步更新
This commit is contained in:
yumoqing 2026-05-30 00:20:55 +08:00
parent 5fa1040adc
commit 93780ac01d
6 changed files with 28 additions and 5 deletions

View File

@ -29,7 +29,9 @@ https://token.opencomputing.cn
### 请求参数
| 参数 | 必填 | 说明 |
|------|------|------|
| `vendor` | 是 | 供应商标识 |
| `project_name` | 否 | 项目名称,默认 `default` |
| `name` | 否 | 认证名称,方便识别的名称,查询组合列表时显示 |
> `user_id``org_id` 由 Bearer Token 自动获取,无需传递。
@ -92,6 +94,7 @@ Authorization: Bearer <your_api_key>
{
"vendor_group_id": "volc-asset-group-xxx",
"vendor": "volcengine",
"name": "模特张三",
"status": "active",
"create_time": "2026-05-28 15:30:00"
}

View File

@ -40,6 +40,12 @@
"type": "str",
"length": 32
},
{
"name": "name",
"title": "组合名称",
"type": "str",
"length": 200
},
{
"name": "status",
"title": "状态",

View File

@ -432,7 +432,7 @@ async def rl_sync_assets_from_vendor(org_id, local_group_id):
# Downapp User API Proxies (client-facing via dapi Bearer auth)
# ============================================================
async def rl_verify_user(org_id, user_id, vendor, project_name="default"):
async def rl_verify_user(org_id, user_id, vendor, project_name="default", name=""):
"""User proxy: Create H5 verification session via uapi gateway."""
callback_cfg = await _get_vendor_config(vendor)
if not callback_cfg.get("success"):
@ -451,6 +451,7 @@ async def rl_verify_user(org_id, user_id, vendor, project_name="default"):
byted_token = result.get("BytedToken", result.get("Result", {}).get("BytedToken", ""))
h5_link = result.get("H5Link", result.get("Result", {}).get("H5Link", ""))
display_name = name or f"待认证-{user_id}"
gid = getID()
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
db = DBPools()
@ -459,8 +460,8 @@ async def rl_verify_user(org_id, user_id, vendor, project_name="default"):
"id": gid,
"org_id": org_id,
"vendor": vendor,
"name": f"待认证-{user_id}",
"title": f"待认证",
"name": display_name,
"title": display_name,
"group_type": "LivenessFace",
"project_name": project_name,
"status": "pending",
@ -597,6 +598,7 @@ async def rl_handle_callback(byted_token, project_name="default"):
local_group_id = rec.id
org_id = rec.org_id
vendor = rec.vendor
group_name = getattr(rec, "name", "") or getattr(rec, "title", "")
if rec.status == "active" and rec.vendor_group_id:
debug(f"callback already processed for group {local_group_id}")
@ -635,6 +637,7 @@ async def rl_handle_callback(byted_token, project_name="default"):
await sor.U("rl_org_group", {
"vendor_group_id": vendor_group_id,
"local_group_id": local_group_id,
"name": group_name,
"update_time": now,
}, {"id": existing[0].id})
else:
@ -644,6 +647,7 @@ async def rl_handle_callback(byted_token, project_name="default"):
"vendor": vendor,
"vendor_group_id": vendor_group_id,
"local_group_id": local_group_id,
"name": group_name,
"status": "active",
"create_time": now,
})
@ -681,6 +685,7 @@ async def rl_query_groups(org_id):
groups.append({
"vendor_group_id": r.vendor_group_id,
"vendor": r.vendor,
"name": getattr(r, "name", ""),
"status": r.status,
"create_time": getattr(r, "create_time", ""),
})

View File

@ -2,6 +2,7 @@ import json
vendor = params_kw.get('vendor', '')
project_name = params_kw.get('project_name', 'default')
name = params_kw.get('name', '')
if not vendor:
return json.dumps({"status": "error", "data": {"message": "请选择供应商"}}, ensure_ascii=False)
@ -9,7 +10,7 @@ if not vendor:
org_id = (await get_userorgid()) or '0'
user_id = (await get_user()) or ''
result = await rl_verify_user(org_id, user_id, vendor, project_name)
result = await rl_verify_user(org_id, user_id, vendor, project_name, name=name)
if result.get('success'):
return json.dumps({

View File

@ -1,6 +1,7 @@
import json
vendor = params_kw.get('vendor', '')
name = params_kw.get('name', '')
if not vendor:
return json.dumps({
@ -12,7 +13,7 @@ org_id = (await get_userorgid()) or '0'
user_id = (await get_user()) or ''
project_name = "default"
result = await rl_verify_user(org_id, user_id, vendor, project_name)
result = await rl_verify_user(org_id, user_id, vendor, project_name, name=name)
if result.get('success'):
h5_link = result.get('h5_link', '')

View File

@ -34,6 +34,13 @@
"data_field": "value",
"text_field": "text",
"required": true
},
{
"uitype": "str",
"name": "name",
"label": "认证名称",
"placeholder": "可选,方便识别的名称",
"required": false
}
]
},